我想出了一个奇怪的问题,当机器学习模块被推送到IoT Edge设备时,ASA在云中无法使用该模块的输出。例如即使正在发送消息,ASA输入样本也不返回任何内容(使用VS Code等检查)。我使用过本教程:https://docs.microsoft.com/en-us/azure/iot-edge/tutorial-deploy-machine-learning
使用临时传感器模拟器发送消息时,ASA会正确采样,ASA可以使用它。 https://docs.microsoft.com/en-us/azure/iot-edge/tutorial-simulate-device-linux
我能看到的唯一区别是JSON是如何形成的 - 我想知道'applicationProperties'部分是否会导致问题?
ML JSON发送到物联网中心: 15/02/2018 2:42:14 PM>设备:[DSVM],数据:[[“{\”ambient \“:{\”humidity \“:24,\”temperature \“:21.277752659180088},\”machine \“:{\”pressure \“:10.860424874724545 ,“温度”:107.55261834480434},\“timeCreated \”:\“2018-02-15T03:42:14.140615Z \”,\“anomaly \”:true}“]属性: 'AzureMLResponse':'确定'
发送到IoTHub的温度传感器JSON: 15/02/2018 2:42:14 PM>设备:[DSVM],数据:[{“machine”:{“temperature”:107.55261834480434,“pressure”:10.860424874724545},“ambient”:{“temperature”:21.277752659180088,“湿度”:24},“timeCreated”: “2018-02-15T03:42:14.140615Z”}]
有没有人对特定问题有什么想法?你能轻易地删除AzureMLResponse属性吗?
谢谢, COM
答案 0 :(得分:0)
我发现了这个问题的问题。
该行: return [json.dumps(input_json)]
对json字符串进行编码并将其返回给IoT Hub。它自己的模块或IoT Hub必须在出路时自动将消息编码为json。转义字符等是双重编码的结果。