def equipment(self):
     return [
         devicehive.Equipment(name='LED',
                              code='LED',
                              type='Controllable LED'),
         devicehive.Equipment(name='THERMO', code='temp', type='TempSensor')
     ]
 def generate_info():
     return devicehive.DeviceInfo(id = '0204eede-2297-11e2-882c-e0cb4eb92129',
                           key = 'Exmaple Device Key',
                           name = 'DeviceHive Python Example',
                           status = 'Online',
                           network = devicehive.Network(key = 'Network Name', name = 'Network Name', descr = 'Network Description'),
                           device_class = devicehive.DeviceClass(name = 'Example Network', version = '1.0', is_permanent = False),
                           equipment = [devicehive.Equipment(name = 'ExampleEquipment', code = 'ExampleCode', type = 'ExampleType')])
예제 #3
0
 def __init__(self):
     super(RPiDescr, self).__init__(
         name='RPi/Py LED Device',
         status='Online',
         network=devicehive.Network(key='Python Network',
                                    name='Python Network',
                                    descr='Python Devices Test Network'),
         device_class=devicehive.DeviceClass(name='Python Device Class',
                                             version='1.0'),
         equipment=[
             devicehive.Equipment(name='LED',
                                  code='LED',
                                  type='Controllable LED'),
             devicehive.Equipment(name='DS18B20',
                                  code='temp',
                                  type='Temperature Sensor')
         ])
     pass
예제 #4
0
 class FakeDevice(object):
     implements(devicehive.interfaces.IDeviceInfo)
     id = ''
     key = 'fake-device'
     name = 'fake-device'
     status = 'Online'
     data = None
     network = devicehive.Network(id='netid', name='netname', key='netkey', descr='net descr')
     device_class = devicehive.DeviceClass(name='devcls-name', version='0.1')
     equipment = [devicehive.Equipment('eq-name', 'eq-code', 'eq-type'), ]
    class FakeDevice(object):
        implements(devicehive.interfaces.IDeviceInfo)
        id = ''
        key = 'fake-device'
        name = 'fake-device'
        status = 'Online'
        data = None
        network = devicehive.Network(id='netid',
                                     name='netname',
                                     key='netkey',
                                     descr='net descr'),
        device_class = devicehive.DeviceClass(name='devcls-name',
                                              version='0.1'),
        equipment = [
            devicehive.Equipment('eq-name', 'eq-code', 'eq-type'),
        ]

        class FakeFactory(object):
            def __init__(self, device_delegate):
                self.device_delegate = device_delegate
                self.uri = 'http://localhost/'
                self.host = 'localhost'
                self.info = FakeDevice()

        def setUp(self):
            self.device_delegate = TestRegisterRequest.FakeDeviceDelegate()
            self.factory = TestRegisterRequest.FakeFactory(
                self.device_delegate)
            self.transport = StringTransport()
            self.protocol = HTTP11ClientProtocol()
            self.protocol.makeConnection(self.transport)

        def test_request(self):
            request = devicehive.poll.RegisterRequest(self.factory)
            r = self.protocol.request(request)

            def request_done(resp):
                self.assertTrue(200, resp.code)

            r.addCallback(request_done)
            self.protocol.dataReceived(
                'HTTP/1.1 200 OK\r\nContent-Length: 0\r\nConnection: close\r\n\r\n'
            )
            data = json.dumps(self.device_delegate.registration_info())
            headers = '\r\n'.join(
                ('PUT /device/device-id HTTP/1.1', 'Connection: close',
                 'Content-Length: {0}'.format(len(data)),
                 'Content-Type: application/json', 'Host: localhost',
                 'Auth-Deviceid: {0}'.format(self.device_delegate.device_id()),
                 'Auth-Devicekey: {0}'.format(
                     self.device_delegate.device_key()),
                 'Accept: application/json'))
            self.assertEquals(headers + '\r\n\r\n' + data,
                              str(self.transport.value()))
예제 #6
0
    def __init__(self):

        super(RPiDescr, self).__init__(
            name='LiV Device',
            status='Online',
            network=devicehive.Network(key='yourKeyHere',
                                       name='LiV Network',
                                       descr='LiV Air Monitoring Network'),
            device_class=devicehive.DeviceClass(name='LiV', version='1.0'),
            equipment=[
                devicehive.Equipment(name='K30',
                                     code='CO2s',
                                     type='CO2 sensor'),
                devicehive.Equipment(name='DHT22',
                                     code='temp',
                                     type='Temperature Sensor'),
                devicehive.Equipment(name='DHT22',
                                     code='hum',
                                     type='Humidity Sensor'),
                devicehive.Equipment(name='BMP170',
                                     code='ap',
                                     type='Air Pressure Sensor')
            ])
        pass
예제 #7
0
    def test_device_save_with_equipment_and_data(self):
        info = self.create_test_device()
        info.equipment = (devicehive.Equipment(name='en', code='cd', type='tp', data='dt'), )

        self.factory.device_save(info)
        s = decode_ws_message(self.transport.value())

        self.assertDictEqual({
            u'action': u'device/save',
            u'device': {
                u'equipment': [{u'name': u'en', u'code': u'cd', u'type': u'tp', u'data': u'dt', }, ],
                u'name': u'td_name',
                u'key': u'td_key'
            },
            u'deviceKey': u'td_key',
            u'deviceId': u'td_id',
            u'requestId': max(self.proto.msg_callbacks.keys()),
        }, json.loads(s))
예제 #8
0
 def equipment(self):
     return [
         devicehive.Equipment(name='VirtualLED',
                              code='LED',
                              type='Controllable LED')
     ]
    def test_device_save(self):
        class TestDev(object):
            implements(IDeviceInfo)
            id = 'td_id'
            key = 'td_key'
            name = 'td_name'
            equipment = []
            status = None
            network = None
            device_class = None

        self.transport.clear()
        # minimal message
        info = TestDev()
        self.factory.device_save(info)
        s = decode_ws_message(self.transport.value())
        self.assertEquals(
            {
                u'action': u'device/save',
                u'device': {
                    u'equipment': [],
                    u'name': u'td_name',
                    u'key': u'td_key'
                },
                u'deviceKey': u'td_key',
                u'deviceId': u'td_id',
                u'requestId': max(self.proto.msg_callbacks.keys())
            }, json.loads(s))
        # with equipment
        self.transport.clear()
        info.equipment = [
            devicehive.Equipment(name='en', code='cd', type='tp', data=None)
        ]
        self.factory.device_save(info)
        s = decode_ws_message(self.transport.value())
        self.assertEquals(
            {
                u'action': u'device/save',
                u'device': {
                    u'equipment': [{
                        u'name': u'en',
                        u'code': u'cd',
                        u'type': u'tp'
                    }],
                    u'name':
                    u'td_name',
                    u'key':
                    u'td_key'
                },
                u'deviceKey': u'td_key',
                u'deviceId': u'td_id',
                u'requestId': max(self.proto.msg_callbacks.keys())
            }, json.loads(s))
        # equipment with data
        self.transport.clear()
        info.equipment = [
            devicehive.Equipment(name='en', code='cd', type='tp', data='dt')
        ]
        self.factory.device_save(info)
        s = decode_ws_message(self.transport.value())
        self.assertEquals(
            {
                u'action': u'device/save',
                u'device': {
                    u'equipment': [{
                        u'name': u'en',
                        u'code': u'cd',
                        u'type': u'tp',
                        u'data': u'dt'
                    }],
                    u'name':
                    u'td_name',
                    u'key':
                    u'td_key'
                },
                u'deviceKey': u'td_key',
                u'deviceId': u'td_id',
                u'requestId': max(self.proto.msg_callbacks.keys())
            }, json.loads(s))
        # with network
        self.transport.clear()
        info.network = devicehive.Network(id='nid',
                                          key='nkey',
                                          name='nname',
                                          descr='ndesr')
        self.factory.device_save(info)
        s = decode_ws_message(self.transport.value())
        self.assertEquals(
            {
                u'action': u'device/save',
                u'device': {
                    u'equipment': [{
                        u'name': u'en',
                        u'code': u'cd',
                        u'type': u'tp',
                        u'data': u'dt'
                    }],
                    u'name':
                    u'td_name',
                    u'key':
                    u'td_key',
                    u'network': {
                        u'id': u'nid',
                        u'name': u'nname',
                        u'key': u'nkey',
                        u'description': 'ndesr'
                    }
                },
                u'deviceKey': u'td_key',
                u'deviceId': u'td_id',
                u'requestId': max(self.proto.msg_callbacks.keys())
            }, json.loads(s))
예제 #10
0
import devicehive.gateway
import devicehive.gateway.i2c

DEVICE_INFO = ((0x78,
                devicehive.DeviceInfo(
                    id=str('1d197265-2272-493a-b4c4-a79387111a57'),
                    name='Echo',
                    key='0x78',
                    network=devicehive.Network(id='i2cnet',
                                               key='i2cnet',
                                               name='I2C network'),
                    device_class=devicehive.DeviceClass(name='echo',
                                                        version='0.1'),
                    equipment=[
                        devicehive.Equipment(name='i2c-echo',
                                             code='i2c-echo',
                                             type='i2c-echo')
                    ])),
               (0x1e,
                devicehive.DeviceInfo(
                    id=str('19c7ef2a-ee97-4ed2-be49-7fc7a6d6e85d'),
                    key='0x3c',
                    name='Compass',
                    network=devicehive.Network(id='i2cnet',
                                               key='i2cnet',
                                               name='I2C network'),
                    device_class=devicehive.DeviceClass(name='compass',
                                                        version='0.1'),
                    equipment=[
                        devicehive.Equipment(name='compass',
                                             code='compass',
예제 #11
0
 def equipment(self):
     return [
         devicehive.Equipment(name='PV voltage', code='PVV',
                              type='Voltage'),
         devicehive.Equipment(name='PV current', code='PVC',
                              type='Amperes'),
         devicehive.Equipment(name='PV power', code='PVP', type='Power'),
         devicehive.Equipment(name='Battery Voltage',
                              code='BV',
                              type='Voltage'),
         devicehive.Equipment(name='gridVoltage',
                              code='GRV',
                              type='Voltage'),
         devicehive.Equipment(name='gridFrequency',
                              code='GRF',
                              type='Frequency'),
         devicehive.Equipment(name='OutputVoltage',
                              code='OUV',
                              type='Voltage'),
         devicehive.Equipment(name='OutputFrequency',
                              code='OUF',
                              type='Frequency'),
         devicehive.Equipment(name='OutputApparentPower',
                              code='OAPP',
                              type='Power'),
         devicehive.Equipment(name='OutputActivePower',
                              code='ACTP',
                              type='Power'),
         devicehive.Equipment(name='outputLoadPercent',
                              code='LOAD',
                              type='Percent'),
         devicehive.Equipment(name='pBusVoltage Voltage',
                              code='BUSV',
                              type='Voltage'),
         devicehive.Equipment(name='chargingCurrent',
                              code='CHRG_CUR',
                              type='Current'),
         devicehive.Equipment(name='batteryCapacity',
                              code='BAT_CAP',
                              type='Percent'),
         devicehive.Equipment(name='batDischargeCurrent',
                              code='BAT_DISCH_CURR',
                              type='Amperes'),
         devicehive.Equipment(name='deviceStatus',
                              code='STATUS',
                              type='MODE'),
         devicehive.Equipment(name='workMode', code='MODE', type='MODE'),
         devicehive.Equipment(name='settings', code='SETT',
                              type='SETTINGS'),
         devicehive.Equipment(name='loadStates',
                              code='LS',
                              type='bit array'),
     ]