Amadeus71rus
New member
Всем доброго времени!
Есть Esp8266 (прошивка Tasmota, но это не принципиально). Подключены несколько DS18B20 по Onewire. Esp посылает через MQTT состояние датчиков в JSON формате (насколько я понимаю) строкой вида {"Time":"2017-11-10T13:30:03", "DS18x20":{"DS1":{"Type":"DS18B20", "Address":"28FFB0A26415023D", "Temperature":1.0}, "DS2":{"Type":"DS18B20", "Address":"28FFBBF46415029C", "Temperature":25.5}}, "TempUnit":"C"}.
С помощью промежуточной обработки в Node Red нужно "вытащить" показания каждого датчика и отправить в Domoticz отдельными сообщениями вида {"idx":4,"nvalue":0,"svalue":"1.0"} и {"idx":5,"nvalue":0,"svalue":"25.5"}
И вот тут я впал в ступор. Вообще не понимаю как достать показания из msg.payload.
Как образец пользовал вот это 1-wire, Node-Red, Domoticz & Grafana – The Lodge
Но что-то не выходит ничего... Потому что не понимаю...
Если не трудно - напишите функцию.
Помогите люди добрые тупому пользователю.
Есть Esp8266 (прошивка Tasmota, но это не принципиально). Подключены несколько DS18B20 по Onewire. Esp посылает через MQTT состояние датчиков в JSON формате (насколько я понимаю) строкой вида {"Time":"2017-11-10T13:30:03", "DS18x20":{"DS1":{"Type":"DS18B20", "Address":"28FFB0A26415023D", "Temperature":1.0}, "DS2":{"Type":"DS18B20", "Address":"28FFBBF46415029C", "Temperature":25.5}}, "TempUnit":"C"}.
С помощью промежуточной обработки в Node Red нужно "вытащить" показания каждого датчика и отправить в Domoticz отдельными сообщениями вида {"idx":4,"nvalue":0,"svalue":"1.0"} и {"idx":5,"nvalue":0,"svalue":"25.5"}
И вот тут я впал в ступор. Вообще не понимаю как достать показания из msg.payload.
Как образец пользовал вот это 1-wire, Node-Red, Domoticz & Grafana – The Lodge
Но что-то не выходит ничего... Потому что не понимаю...
Код:
temp = msg.payload/16;
Address = msg.payload.DS18x20;
msg.payload = {};
switch (Address) {
case "28b8c81d300e5":
msg.payload.idx = 4;
break;
case "28ac871d300e4":
msg.payload.idx = 5;
break;
}
msg.payload.Address = Address;
temp = temp.toString();
msg.payload.svalue = temp;
return msg;
Помогите люди добрые тупому пользователю.