[update] add new function api
This commit is contained in:
@@ -10,22 +10,29 @@ from requests import Requests
|
||||
from mqtt import MqttThread
|
||||
|
||||
class Main():
|
||||
def __init__(self, controller_id = 'b8:27:eb:0c:d3:11', mqtt_ip = '192.168.5.53') -> None:
|
||||
def __init__(self, controller_id = 'b8:27:eb:dd:f4:28', mqtt_ip = '192.168.5.240') -> None:
|
||||
# setup devicemanager & mqtt thread
|
||||
self._deviceManager = DeviceManager()
|
||||
self._mqttThread = MqttThread(self, controller_id, mqtt_ip, 1883, 'test')
|
||||
self._mqttThread.run()
|
||||
|
||||
# create requests instance
|
||||
self._mqttRequest = Requests(self._mqttThread)
|
||||
self._mqttRequest.get_device()
|
||||
|
||||
# hardware scan
|
||||
self._mqttRequest.hardware_scan()
|
||||
# self._mqttRequest.hardware_device()
|
||||
# self._mqttRequest.get_device()
|
||||
|
||||
# callback func for get_device_info_all
|
||||
def get_device_info_all(self, device: str) -> str:
|
||||
deviceDict = json.loads(device)
|
||||
# until get device info
|
||||
self._deviceManager.set_device(deviceDict)
|
||||
|
||||
# instruction example 1
|
||||
# self._mqttRequest.device_parameter_array_set(self._deviceManager.get_mac_address(), 'BLE_WRITE', '040005')
|
||||
# self._mqttRequest.device_instruction_send(self._deviceManager.get_mac_address(), 'ble_instru_send')
|
||||
self._mqttRequest.device_parameter_array_set(self._deviceManager.get_mac_address(), 'BLE_WRITE', '040005')
|
||||
self._mqttRequest.device_instruction_send(self._deviceManager.get_mac_address(), 'ble_instru_send')
|
||||
|
||||
# instruction example 2
|
||||
# self._mqttRequest.device_parameter_array_set(self._deviceManager.get_mac_address(), 'BLE_WRITE', '01')
|
||||
@@ -33,15 +40,34 @@ class Main():
|
||||
# self._mqttRequest.device_parameter_get(self._deviceManager.get_mac_address(), 'ADC_VALUE_I')
|
||||
|
||||
#instruction example 3
|
||||
self._mqttRequest.device_parameter_set(self._deviceManager.get_mac_address(), 'MODE', 4)
|
||||
self._mqttRequest.device_instruction_send(self._deviceManager.get_mac_address(), 'start')
|
||||
# self._mqttRequest.device_parameter_set(self._deviceManager.get_mac_address(), 'MODE', 4)
|
||||
# self._mqttRequest.device_instruction_send(self._deviceManager.get_mac_address(), 'start')
|
||||
|
||||
# callback func for device_parameter_value
|
||||
def device_parameter_value(self, data: str) -> None:
|
||||
dataDict = json.loads(data)
|
||||
print(dataDict)
|
||||
if dataDict['data'].get('ADC_VALUE_I') is not None:
|
||||
value = format(dataDict['data']['ADC_VALUE_I'], '040x')
|
||||
print(value)
|
||||
|
||||
# callback func for hardware_scan
|
||||
def hardware_scan(self):
|
||||
self._mqttRequest.hardware_device()
|
||||
|
||||
# callback func for hardware_device
|
||||
def hardware_device(self, message):
|
||||
ret = json.loads(message)
|
||||
device = ret['data'][0]
|
||||
if device['status'] != 'connected':
|
||||
self._mqttRequest.hardware_device_connect(device['device_name'], device['device_address'], device['serial_number'])
|
||||
if device['status'] == 'connected':
|
||||
self._mqttRequest.get_device()
|
||||
|
||||
# callback func for hardware_device_connect
|
||||
def hardware_device_connect(self, message):
|
||||
self._mqttRequest.get_device()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
# if len(sys.argv) < 3:
|
||||
|
||||
@@ -51,8 +51,9 @@ class MqttThread():
|
||||
|
||||
def on_connect(self, client: mqtt.Client, user_data, flags, rc: int):
|
||||
topic = self.__controller_ID + '_user'
|
||||
self._mqtt_client.subscribe(self.__controller_ID + '/+/+')
|
||||
self._mqtt_client.subscribe(self.__controller_ID + '/data_server/device_data_stream/+/+')
|
||||
self._mqtt_client.subscribe('#')
|
||||
# self._mqtt_client.subscribe(self.__controller_ID + '/+/+')
|
||||
# self._mqtt_client.subscribe(self.__controller_ID + '/data_server/device_data_stream/+/+')
|
||||
self._connected = True
|
||||
|
||||
def on_disconnect(self, client: mqtt.Client, user_data, rc):
|
||||
@@ -72,12 +73,12 @@ class MqttThread():
|
||||
|
||||
def on_message(self, client: mqtt.Client, user_data, message):
|
||||
topic = message.topic.split('/')[1]
|
||||
payload = None
|
||||
try:
|
||||
payload = message.payload.decode('utf-8')
|
||||
print(message.topic, payload)
|
||||
print('callback from', topic, message.topic, payload)
|
||||
except:
|
||||
print('error')
|
||||
|
||||
func = getattr(self._handler, topic, None)
|
||||
if func != None:
|
||||
return func(payload)
|
||||
|
||||
+26
-3
@@ -8,8 +8,8 @@ class Requests():
|
||||
def get_device(self) -> None:
|
||||
self._mqtt_client.publish({
|
||||
'header': 'get_device_info_all/0'
|
||||
}, True)
|
||||
return
|
||||
})
|
||||
return
|
||||
|
||||
def device_parameter_array_set(self, device: str, name: str, data: str) -> None:
|
||||
dataArray = [0 for i in range(16)]
|
||||
@@ -51,4 +51,27 @@ class Requests():
|
||||
self._mqtt_client.publish({
|
||||
'header': 'device_instruction/0',
|
||||
'device': device,
|
||||
})
|
||||
})
|
||||
|
||||
def hardware_scan(self) -> None:
|
||||
self._mqtt_client.publish({
|
||||
'header': 'hardware_scan/0',
|
||||
})
|
||||
|
||||
def hardware_device(self) -> None:
|
||||
self._mqtt_client.publish({
|
||||
'header': 'hardware_device/0',
|
||||
})
|
||||
|
||||
def hardware_device_connect(self, device_name, device_address, serial_number) -> None:
|
||||
self._mqtt_client.publish({
|
||||
'header': 'hardware_device_connect/0',
|
||||
'content': {
|
||||
'device_name': device_name,
|
||||
'device_address': self.mac_tuple_to_str(device_address),
|
||||
'serial_number': serial_number
|
||||
}
|
||||
})
|
||||
|
||||
def mac_tuple_to_str(self, mac_array):
|
||||
return ':'.join('{:02x}'.format(b) for b in mac_array)
|
||||
Reference in New Issue
Block a user