Evening all,
I think I may have found a Domoticz bug whilst fiddling with my node-red flow.
When node-red failed to calculate something, it generated NaN instead of a number. This got pushed to Domoticz as {"idx":46, "nvalue": 0, "svalue":"NaN;0;0"}, and subsequently all my temperature sensors vanished from Domoticz. Also, all my devices vanished from the hardware list, but switches were still operational.
Had to restore from backup to get the DB back into a working state. Can others replicate this?
You can use this to publish it at the command line...
mosquitto_pub -h yourserver.com -t domoticz/in -m '{"idx":46, "nvalue": 0, "svalue":"NaN;0;0"}'
This is the flow...
Code: Select all
[{"id":"66a92c76.9956d4","type":"mqtt-broker","broker":"homeauto.vpn.glasgownet.com","port":"1883","clientid":""},{"id":"b8f4e8e2.470b18","type":"function","name":"Average temp","func":"numdevices = 7;\n\ntotal = parseFloat(context.global.masterbedtemp) + \nparseFloat(context.global.guestbedtemp) + \nparseFloat(context.global.geeklofttemp) + \nparseFloat(context.global.kitchentemp) +\nparseFloat(context.global.studytemp) +\nparseFloat(context.global.livingroomtemp) +\nparseFloat(context.global.bottomhallwaytemp);\n\nconsole.log(total)\nmsg.payload = (total / numdevices).toFixed(2);\n//msg.payload = msg.payload + 0.5;\n\nreturn msg;","outputs":1,"valid":true,"x":977,"y":124,"z":"d5caab33.2a3558","wires":[["ec3d1fae.13c2e","b75445a3.48abb8"]]},{"id":"ec3d1fae.13c2e","type":"debug","name":"Temperature","active":true,"console":"false","complete":"false","x":1254,"y":116,"z":"d5caab33.2a3558","wires":[]},{"id":"a1ae61bd.5e51a","type":"inject","name":"Repeat","topic":"","payload":"","payloadType":"none","repeat":"300","crontab":"","once":true,"x":561,"y":71,"z":"d5caab33.2a3558","wires":[["b8f4e8e2.470b18"]]},{"id":"a4bce105.5b432","type":"mqtt out","name":"House Average Temperature Domoticz","topic":"domoticz/in","qos":"","retain":"","broker":"66a92c76.9956d4","x":1417,"y":194,"z":"d5caab33.2a3558","wires":[]},{"id":"b75445a3.48abb8","type":"function","name":"JSONify","func":"msg.payload = '{\"idx\":46, \"nvalue\": 0, \"svalue\":\"' + msg.payload + ';0;0\"}';\n\nreturn msg;","outputs":1,"valid":true,"x":1163,"y":196,"z":"d5caab33.2a3558","wires":[["a4bce105.5b432"]]},{"id":"a2d8a9ac.5d2758","type":"mqtt in","name":"Domoticz out","topic":"domoticz/out","broker":"66a92c76.9956d4","x":548,"y":244,"z":"d5caab33.2a3558","wires":[["39558984.c6aa76"]]},{"id":"39558984.c6aa76","type":"function","name":"Select payloads","func":"msg.parameters = JSON.parse(msg.payload);\n//console.log(msg.parameters);\nmsg.topic = \"debug output\";\nmsg.payload = msg.parameters.svalue1;\n\nif ( msg.parameters.idx == 35) {\n context.global.kitchentemp = msg.parameters.svalue1;\n}\n\nif ( msg.parameters.idx == 116) {\n context.global.masterbedtemp = msg.parameters.svalue1;\n}\n\nif ( msg.parameters.idx == 117) {\n context.global.geeklofttemp = msg.parameters.svalue1;\n}\n\nif ( msg.parameters.idx == 122) {\n context.global.guestbedtemp = msg.parameters.svalue1;\n}\n\nif ( msg.parameters.idx == 132) {\n context.global.livingroomtemp = msg.parameters.svalue1;\n}\n\nif ( msg.parameters.idx == 133) {\n context.global.livingroomtemp = msg.parameters.svalue1;\n}\n\nif ( msg.parameters.idx == 134) {\n context.global.bottomhallwaytemp = msg.parameters.svalue1;\n}\n\nreturn msg;","outputs":"2","valid":true,"x":763,"y":172,"z":"d5caab33.2a3558","wires":[["b8f4e8e2.470b18"],["d5306da.f2acf9"]]},{"id":"d5306da.f2acf9","type":"function","name":"Average humidity","func":"numdevices = 6;\n\ntotal = parseFloat(context.global.masterbedhum) + \nparseFloat(context.global.guestbedhum) + \nparseFloat(context.global.geeklofthum) + \nparseFloat(context.global.studyhum) +\nparseFloat(context.global.livingroomhum) +\nparseFloat(context.global.bottomhallwayhum);\n\nmsg.payload = (total / numdevices).toFixed(2);\n//msg.payload = msg.payload + 0.5;\n\nreturn msg;","outputs":1,"valid":true,"x":976,"y":258,"z":"d5caab33.2a3558","wires":[[]]}]