[update] add new function api

This commit is contained in:
peterlu14
2022-08-10 16:14:43 +08:00
parent c02e82dcc0
commit 9b7769f279
3 changed files with 63 additions and 13 deletions
+32 -6
View File
@@ -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:
+5 -4
View File
@@ -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
View File
@@ -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)