Windows GUI/Controller for MySensors
-
Here is my current nodeconfig:
[{"id":"c1f1131a.3e0ef","type":"subflow","name":"Manual preprocessor","info":"Processes manual specific input","in":[{"x":50,"y":30,"wires":[{"id":"b73bbc01.48c44"}]}],"out":[{"x":264,"y":30,"wires":[{"id":"b73bbc01.48c44","port":0}]}]},{"id":"b73bbc01.48c44","type":"change","z":"c1f1131a.3e0ef","name":"Topic=Manual","rules":[{"t":"set","p":"topic","to":"Manual"}],"action":"","property":"","from":"","to":"","reg":false,"x":156,"y":30,"wires":[[]]},{"id":"c542f76c.3abd08","type":"subflow","name":"Vera postprocessor","info":"Processes Vera specific output","in":[{"x":50,"y":30,"wires":[]}],"out":[{"x":160,"y":30,"wires":[{"id":"c542f76c.3abd08","port":0}]}]},{"id":"c1bbb0ac.3e445","type":"subflow","name":"MYS postprocessor","info":"Processes MYSController specific output","in":[{"x":50,"y":30,"wires":[]}],"out":[{"x":160,"y":30,"wires":[{"id":"c1bbb0ac.3e445","port":0}]}]},{"id":"56bd1bfc.a942e4","type":"subflow","name":"MyC postprocessor","info":"Processes MyController specific output","in":[{"x":50,"y":30,"wires":[]}],"out":[{"x":160,"y":30,"wires":[{"id":"56bd1bfc.a942e4","port":0}]}]},{"id":"6bb8370.f9447c8","type":"subflow","name":"MyC preprocessor","info":"Processes MyController specific input","in":[{"x":50,"y":30,"wires":[{"id":"287b2c2e.d784d4"}]}],"out":[{"x":330,"y":30,"wires":[{"id":"287b2c2e.d784d4","port":0}]}]},{"id":"287b2c2e.d784d4","type":"change","z":"6bb8370.f9447c8","name":"Topic=MyController","rules":[{"t":"set","p":"topic","to":"MyController"}],"action":"","property":"","from":"","to":"","reg":false,"x":184,"y":30,"wires":[[]]},{"id":"9a01ec1d.65fe1","type":"subflow","name":"MYS preprocessor","info":"Processes MYSController specific input","in":[{"x":50,"y":30,"wires":[{"id":"ab4674a4.54b988"}]}],"out":[{"x":320,"y":30,"wires":[{"id":"ab4674a4.54b988","port":0}]}]},{"id":"ab4674a4.54b988","type":"change","z":"9a01ec1d.65fe1","name":"Topic=MYSController","rules":[{"t":"set","p":"topic","to":"MYSController"}],"action":"","property":"","from":"","to":"","reg":false,"x":183,"y":30,"wires":[[]]},{"id":"fb0fe50f.04f018","type":"subflow","name":"Vera preprocessor","info":"Processes Vera specific input","in":[{"x":54,"y":36,"wires":[{"id":"fb4a1920.04b5e8"}]}],"out":[{"x":288,"y":36,"wires":[{"id":"fb4a1920.04b5e8","port":0}]}]},{"id":"fb4a1920.04b5e8","type":"change","z":"fb0fe50f.04f018","name":"Topic=Vera","rules":[{"t":"set","p":"topic","to":"Vera"}],"action":"","property":"","from":"","to":"","reg":false,"x":158,"y":36,"wires":[[]]},{"id":"87ad6845.785298","type":"subflow","name":"MYS dbg mgt","info":"","in":[{"x":25,"y":28,"wires":[{"id":"a5f38922.5a0c78"}]}],"out":[{"x":787,"y":25,"wires":[{"id":"87b5da5b.784a28","port":0}]},{"x":615,"y":70,"wires":[{"id":"c58c8cac.3a737","port":0}]}]},{"id":"7d24de87.82db2","type":"function","z":"87ad6845.785298","name":"Debug from Data from Ping","func":"if (msg.messageType == 3 && msg.subType == 9) {\n return [ msg, null, null ];\n} else if (msg.messageType == 3 && msg.subType == 18) {\n return [ null, null, msg ];\n} else {\n return [ null, msg, null ];\n}\n","outputs":"3","noerr":0,"x":302,"y":28.5,"wires":[["a49c42e6.5b63c"],["a49c42e6.5b63c","c58c8cac.3a737"],["c58c8cac.3a737"]]},{"id":"a5f38922.5a0c78","type":"mysdecenc","z":"87ad6845.785298","name":"Decode","x":117,"y":28,"wires":[["7d24de87.82db2"]]},{"id":"c58c8cac.3a737","type":"mysdecenc","z":"87ad6845.785298","name":"Encode","x":520,"y":71,"wires":[[]]},{"id":"a49c42e6.5b63c","type":"mysdecenc","z":"87ad6845.785298","name":"Encode","x":523,"y":25,"wires":[["87b5da5b.784a28"]]},{"id":"87b5da5b.784a28","type":"mysdebug","z":"87ad6845.785298","name":"Debug decorate","x":671,"y":26,"wires":[[]]},{"id":"a2721ec7.5d8de","type":"pushbullet-config","z":"","name":"somename"},{"id":"8160ff88.7e9f","type":"subflow","name":"MYS Pushbullet publisher","info":"","in":[{"x":68,"y":79,"wires":[{"id":"108590a6.ef7a6f"}]}],"out":[]},{"id":"e2dea93.f1d2158","type":"pushbullet","z":"8160ff88.7e9f","config":"a2721ec7.5d8de","pushtype":"note","title":"Lock status","chan":"noneofyourbusiness","name":"Lock status","x":1042,"y":1072,"wires":[]},{"id":"69c63289.9639cc","type":"function","z":"8160ff88.7e9f","name":"Format","func":"if (msg.payload == 1) {\n msg.payload = \"Locked\";\n} else {\n msg.payload = \"Unlocked\";\n}\nreturn msg;\n","outputs":1,"noerr":0,"x":905,"y":1072,"wires":[["e2dea93.f1d2158"]]},{"id":"9afa4e84.6505b","type":"switch","z":"8160ff88.7e9f","name":"Message type","property":"messageType","rules":[{"t":"eq","v":"0"},{"t":"eq","v":"1"},{"t":"eq","v":"2"},{"t":"eq","v":"3"},{"t":"else"}],"checkall":"true","outputs":5,"x":417,"y":129,"wires":[["a1c9e060.5e362"],["7ee958f8.8116a8"],["7ee958f8.8116a8"],["6aa07c4a.955f84"],[]]},{"id":"108590a6.ef7a6f","type":"mysdecenc","z":"8160ff88.7e9f","name":"MySensors decode","x":198,"y":79,"wires":[["9afa4e84.6505b"]]},{"id":"a1c9e060.5e362","type":"switch","z":"8160ff88.7e9f","name":"PresentationSubtype","property":"subType","rules":[{"t":"eq","v":"0"},{"t":"eq","v":"1"},{"t":"eq","v":"2"},{"t":"eq","v":"3"},{"t":"eq","v":"4"},{"t":"eq","v":"5"},{"t":"eq","v":"6"},{"t":"eq","v":"7"},{"t":"eq","v":"8"},{"t":"eq","v":"9"},{"t":"eq","v":"10"},{"t":"eq","v":"11"},{"t":"eq","v":"12"},{"t":"eq","v":"13"},{"t":"eq","v":"14"},{"t":"eq","v":"15"},{"t":"eq","v":"16"},{"t":"eq","v":"17"},{"t":"eq","v":"18"},{"t":"eq","v":"19"},{"t":"eq","v":"20"},{"t":"eq","v":"21"},{"t":"eq","v":"22"},{"t":"eq","v":"23"},{"t":"eq","v":"24"},{"t":"eq","v":"25"},{"t":"eq","v":"26"},{"t":"eq","v":"27"},{"t":"eq","v":"28"},{"t":"eq","v":"29"},{"t":"eq","v":"30"},{"t":"eq","v":"31"},{"t":"eq","v":"32"},{"t":"eq","v":"33"},{"t":"eq","v":"34"},{"t":"else"}],"checkall":"true","outputs":36,"x":723,"y":275,"wires":[[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]]},{"id":"7ee958f8.8116a8","type":"switch","z":"8160ff88.7e9f","name":"SetReqSubtype","property":"subType","rules":[{"t":"eq","v":"0"},{"t":"eq","v":"1"},{"t":"eq","v":"2"},{"t":"eq","v":"3"},{"t":"eq","v":"4"},{"t":"eq","v":"5"},{"t":"eq","v":"6"},{"t":"eq","v":"7"},{"t":"eq","v":"8"},{"t":"eq","v":"9"},{"t":"eq","v":"10"},{"t":"eq","v":"11"},{"t":"eq","v":"12"},{"t":"eq","v":"13"},{"t":"eq","v":"14"},{"t":"eq","v":"15"},{"t":"eq","v":"16"},{"t":"eq","v":"17"},{"t":"eq","v":"18"},{"t":"eq","v":"19"},{"t":"eq","v":"20"},{"t":"eq","v":"21"},{"t":"eq","v":"22"},{"t":"eq","v":"23"},{"t":"eq","v":"24"},{"t":"eq","v":"25"},{"t":"eq","v":"26"},{"t":"eq","v":"27"},{"t":"eq","v":"28"},{"t":"eq","v":"29"},{"t":"eq","v":"30"},{"t":"eq","v":"31"},{"t":"eq","v":"32"},{"t":"eq","v":"33"},{"t":"eq","v":"34"},{"t":"eq","v":"35"},{"t":"eq","v":"36"},{"t":"eq","v":"37"},{"t":"eq","v":"38"},{"t":"eq","v":"39"},{"t":"eq","v":"40"},{"t":"eq","v":"41"},{"t":"eq","v":"42"},{"t":"eq","v":"43"},{"t":"eq","v":"44"},{"t":"eq","v":"45"},{"t":"else"}],"checkall":"true","outputs":47,"x":740,"y":903,"wires":[[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],["69c63289.9639cc"],[],[],[],[],[],[],[],[],[],[]]},{"id":"6aa07c4a.955f84","type":"switch","z":"8160ff88.7e9f","name":"InternalSubtype","property":"subType","rules":[{"t":"eq","v":"0"},{"t":"eq","v":"1"},{"t":"eq","v":"2"},{"t":"eq","v":"3"},{"t":"eq","v":"4"},{"t":"eq","v":"5"},{"t":"eq","v":"6"},{"t":"eq","v":"7"},{"t":"eq","v":"8"},{"t":"eq","v":"9"},{"t":"eq","v":"10"},{"t":"eq","v":"11"},{"t":"eq","v":"12"},{"t":"eq","v":"13"},{"t":"eq","v":"14"},{"t":"eq","v":"15"},{"t":"eq","v":"16"},{"t":"else"}],"checkall":"true","outputs":18,"x":739,"y":1397,"wires":[[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]]},{"id":"8f98bd26.70674","type":"subflow","name":"DOM postprocessor","info":"Processes Domoticz specific output","in":[{"x":33,"y":143,"wires":[{"id":"699b5758.9664a8"}]}],"out":[{"x":951,"y":150,"wires":[{"id":"78766dd2.878994","port":0}]}]},{"id":"699b5758.9664a8","type":"mysdecenc","z":"8f98bd26.70674","name":"","x":139,"y":143,"wires":[["1ecc685.fe13398"]]},{"id":"1ecc685.fe13398","type":"switch","z":"8f98bd26.70674","name":"Type is SET?","property":"messageType","rules":[{"t":"eq","v":"1"},{"t":"else"}],"checkall":"true","outputs":2,"x":289,"y":143,"wires":[["73b9b1e.f8c465"],["78766dd2.878994"]]},{"id":"78766dd2.878994","type":"mysdecenc","z":"8f98bd26.70674","name":"","x":846,"y":150,"wires":[[]]},{"id":"73b9b1e.f8c465","type":"switch","z":"8f98bd26.70674","name":"Is V_LOCK_STATUS?","property":"subType","rules":[{"t":"eq","v":"36"},{"t":"else"}],"checkall":"true","outputs":2,"x":476,"y":127,"wires":[["5e7ebd41.a18144"],["78766dd2.878994"]]},{"id":"5e7ebd41.a18144","type":"function","z":"8f98bd26.70674","name":"Invert payload","func":"if (msg.payload == 1)\n msg.payload = 0;\nelse\n msg.payload = 1;\nreturn msg;","outputs":1,"noerr":0,"x":670,"y":113,"wires":[["78766dd2.878994"]]},{"id":"6f018651.90fe78","type":"subflow","name":"DOM preprocessor","info":"Processes Domoticz specific input","in":[{"x":31,"y":188,"wires":[{"id":"b03550b3.4fcab"}]}],"out":[{"x":894,"y":197,"wires":[{"id":"38029d29.c7fd62","port":0}]}]},{"id":"c7e52cc0.381ad","type":"mysdecenc","z":"6f018651.90fe78","name":"Decode","x":311,"y":230,"wires":[["c88ee733.377118"]]},{"id":"c88ee733.377118","type":"switch","z":"6f018651.90fe78","name":"Type is SET?","property":"messageType","rules":[{"t":"eq","v":"1"},{"t":"else"}],"checkall":"true","outputs":2,"x":446,"y":190,"wires":[["d409083c.2bf6f8"],["38029d29.c7fd62"]]},{"id":"38029d29.c7fd62","type":"mysdecenc","z":"6f018651.90fe78","name":"Encode","x":785,"y":197,"wires":[[]]},{"id":"d409083c.2bf6f8","type":"switch","z":"6f018651.90fe78","name":"Is V_LOCK_STATUS?","property":"subType","rules":[{"t":"eq","v":"36"},{"t":"else"}],"checkall":"true","outputs":2,"x":544,"y":122,"wires":[["a1467944.5eb988"],["38029d29.c7fd62"]]},{"id":"a1467944.5eb988","type":"function","z":"6f018651.90fe78","name":"Invert payload","func":"if (msg.payload == 1)\n msg.payload = 0;\nelse\n msg.payload = 1;\nreturn msg;","outputs":1,"noerr":0,"x":663,"y":57,"wires":[["38029d29.c7fd62"]]},{"id":"b03550b3.4fcab","type":"change","z":"6f018651.90fe78","name":"Topic=Domoticz","rules":[{"t":"set","p":"topic","to":"Domoticz"}],"action":"","property":"","from":"","to":"","reg":false,"x":157,"y":188,"wires":[["c7e52cc0.381ad"]]},{"id":"5454541d.ababac","type":"subflow","name":"Fake sensors","in":[{"x":35,"y":30,"wires":[{"id":"ff04f8fa.00fb08"}]}],"out":[{"x":666,"y":30,"wires":[{"id":"30e6a3cb.cf195c","port":0}]}]},{"id":"666dc361.99923c","type":"mysencap","z":"5454541d.ababac","name":"Temp","nodeid":"1","childid":0,"subtype":0,"internal":0,"ack":false,"msgtype":"1","presentation":true,"presentationtype":"6","presentationtext":"FakeTempSensor","fullpresentation":true,"firmwarename":"FakeTemp","firmwareversion":"0.0","x":350,"y":30,"wires":[["30e6a3cb.cf195c"]]},{"id":"ff04f8fa.00fb08","type":"function","z":"5454541d.ababac","name":"Generate temp","func":"msg.payload = \"25\"\nreturn msg;","outputs":1,"noerr":0,"x":185,"y":30,"wires":[["666dc361.99923c"]]},{"id":"30e6a3cb.cf195c","type":"mysdecenc","z":"5454541d.ababac","name":"MySensors encode","x":515,"y":30,"wires":[[]]},{"id":"6580173d.9a7fe8","type":"serial-port","serialport":"/dev/ttyMyController","serialbaud":"115200","databits":"8","parity":"none","stopbits":"1","newline":"\\n","bin":"false","out":"char","addchar":true},{"id":"65355d72.9acaa4","type":"serial-port","serialport":"/dev/ttyDomoticz","serialbaud":"115200","databits":"8","parity":"none","stopbits":"1","newline":"\\n","bin":"false","out":"char","addchar":true},{"id":"13cc7d6f.ec3383","type":"serial-port","serialport":"/dev/ttyMysC","serialbaud":"115200","databits":"8","parity":"none","stopbits":"1","newline":"\\n","bin":"false","out":"char","addchar":true},{"id":"5af61127.a509f","type":"serial-port","z":"","serialport":"/dev/ttyUSB0","serialbaud":"115200","databits":"8","parity":"none","stopbits":"1","newline":"\\n","bin":"false","out":"char","addchar":true},{"id":"29d1b211.d62e4e","type":"serial-port","serialport":"/dev/ttyVera","serialbaud":"115200","databits":"8","parity":"none","stopbits":"1","newline":"\\n","bin":"false","out":"char","addchar":true},{"id":"56e6890.fa91978","type":"debug","z":"faef2a18.0510d8","name":"CTRLR debug","active":true,"console":"false","complete":"payload","x":748,"y":465,"wires":[]},{"id":"933030f1.6ccfd","type":"serial out","z":"faef2a18.0510d8","name":"Vera","serial":"29d1b211.d62e4e","x":821,"y":196,"wires":[]},{"id":"54370c66.abc8f4","type":"serial in","z":"faef2a18.0510d8","name":"MySensorsGW","serial":"5af61127.a509f","x":77.5,"y":146,"wires":[["396eb79f.c69148"]]},{"id":"6dae78cf.925188","type":"serial out","z":"faef2a18.0510d8","name":"MySensorsGW","serial":"5af61127.a509f","x":750,"y":533,"wires":[]},{"id":"cbef03e5.3411","type":"serial in","z":"faef2a18.0510d8","name":"MYSController","serial":"13cc7d6f.ec3383","x":76,"y":527,"wires":[["992c7345.66d39"]]},{"id":"9b7faefd.64805","type":"serial out","z":"faef2a18.0510d8","name":"MYSController","serial":"13cc7d6f.ec3383","x":844,"y":243,"wires":[]},{"id":"91697766.6e9688","type":"inject","z":"faef2a18.0510d8","name":"Send version request","topic":"MySensors test","payload":"0;255;3;0;2;","payloadType":"string","repeat":"","crontab":"","once":false,"x":122,"y":434,"wires":[["5feb3ddb.a014c4"]]},{"id":"5be5bb8c.a41a44","type":"serial in","z":"faef2a18.0510d8","name":"Domoticz","serial":"65355d72.9acaa4","x":59.5,"y":631,"wires":[["1b7cf599.e4830a","80399396.7fc67"]]},{"id":"cb8a2201.3475e","type":"serial out","z":"faef2a18.0510d8","name":"Domoticz","serial":"65355d72.9acaa4","x":828,"y":343,"wires":[]},{"id":"439009ab.bc6ff8","type":"serial in","z":"faef2a18.0510d8","name":"MyController","serial":"6580173d.9a7fe8","x":70.5,"y":581,"wires":[["47f782c.fb8087c"]]},{"id":"be681116.4197f","type":"serial out","z":"faef2a18.0510d8","name":"MyController","serial":"6580173d.9a7fe8","x":838,"y":293,"wires":[]},{"id":"6cab82ec.93547c","type":"subflow:5454541d.ababac","z":"faef2a18.0510d8","name":"","x":237,"y":193,"wires":[["396eb79f.c69148","26c64377.d939bc"]]},{"id":"a7dc7c6f.58238","type":"inject","z":"faef2a18.0510d8","name":"Trig fakes","topic":"","payload":"","payloadType":"none","repeat":"","crontab":"","once":false,"x":92,"y":193,"wires":[["6cab82ec.93547c"]]},{"id":"1b7cf599.e4830a","type":"subflow:6f018651.90fe78","z":"faef2a18.0510d8","name":"","x":315,"y":631,"wires":[["1c964876.e369b8"]]},{"id":"e62acc9e.19d53","type":"subflow:8f98bd26.70674","z":"faef2a18.0510d8","name":"","x":664,"y":343,"wires":[["cb8a2201.3475e","d994688d.266b98"]]},{"id":"10218729.efde79","type":"subflow:8160ff88.7e9f","z":"faef2a18.0510d8","name":"","x":881,"y":153,"wires":[]},{"id":"396eb79f.c69148","type":"subflow:87ad6845.785298","z":"faef2a18.0510d8","name":"","x":429,"y":146,"wires":[["fe9c2881.0163d8","1ed4947e.e12b6c"],["e62acc9e.19d53","28097d6b.d7f682","6b5d7d4b.94a284","ebe581f9.141a8","10218729.efde79"]]},{"id":"fe9c2881.0163d8","type":"debug","z":"faef2a18.0510d8","name":"MYS debug","active":true,"console":"false","complete":"payload","x":638,"y":84,"wires":[]},{"id":"1ed4947e.e12b6c","type":"file","z":"faef2a18.0510d8","name":"","filename":"/home/pi/MySensors/gw_out.log","appendNewline":true,"createDir":true,"overwriteFile":"false","x":702,"y":118,"wires":[]},{"id":"28461cae.d7b9e4","type":"subflow:fb0fe50f.04f018","z":"faef2a18.0510d8","name":"","x":316,"y":475,"wires":[["1c964876.e369b8"]]},{"id":"20753984.df8ac6","type":"serial in","z":"faef2a18.0510d8","name":"Vera","serial":"29d1b211.d62e4e","x":55,"y":475,"wires":[["28461cae.d7b9e4"]]},{"id":"992c7345.66d39","type":"subflow:9a01ec1d.65fe1","z":"faef2a18.0510d8","name":"","x":315,"y":527,"wires":[["1c964876.e369b8"]]},{"id":"47f782c.fb8087c","type":"subflow:6bb8370.f9447c8","z":"faef2a18.0510d8","name":"","x":313,"y":581,"wires":[["1c964876.e369b8"]]},{"id":"1c964876.e369b8","type":"subflow:87ad6845.785298","z":"faef2a18.0510d8","name":"","x":553,"y":527,"wires":[["56e6890.fa91978","eeac51f0.1153b"],["6dae78cf.925188"]]},{"id":"28097d6b.d7f682","type":"subflow:56bd1bfc.a942e4","z":"faef2a18.0510d8","name":"","x":659,"y":293,"wires":[["be681116.4197f"]]},{"id":"6b5d7d4b.94a284","type":"subflow:c1bbb0ac.3e445","z":"faef2a18.0510d8","name":"","x":660,"y":243,"wires":[["9b7faefd.64805"]]},{"id":"ebe581f9.141a8","type":"subflow:c542f76c.3abd08","z":"faef2a18.0510d8","name":"","x":660,"y":196,"wires":[["933030f1.6ccfd"]]},{"id":"eeac51f0.1153b","type":"file","z":"faef2a18.0510d8","name":"","filename":"/home/pi/MySensors/gw_in.log","appendNewline":true,"createDir":true,"overwriteFile":"false","x":799,"y":498,"wires":[]},{"id":"5feb3ddb.a014c4","type":"subflow:c1f1131a.3e0ef","z":"faef2a18.0510d8","name":"","x":321,"y":434,"wires":[["1c964876.e369b8"]]},{"id":"26c64377.d939bc","type":"debug","z":"faef2a18.0510d8","name":"","active":true,"console":"false","complete":"false","x":419,"y":229,"wires":[]},{"id":"80399396.7fc67","type":"debug","z":"faef2a18.0510d8","name":"Domoticz out","active":true,"console":"false","complete":"payload","x":289,"y":676,"wires":[]},{"id":"d994688d.266b98","type":"debug","z":"faef2a18.0510d8","name":"Domoticz in","active":true,"console":"false","complete":"payload","x":850,"y":406,"wires":[]}]You will need @tbowmo's mysensors node-red plugin for this flow. And be aware that the debug log management in this flow is NOT working as it is really supposed to.
To create the socat pipes I use a number of shell scripts of this form executed as root:
#!/bin/bash while sleep 1; do socat PTY,link=/dev/ttyVera,mode=666,group=dialout,raw TCP-LISTEN:5003,reuseaddr doneTypically, you can invoke such a script using
sudo ./socat_vera.sh &which would let the script execute in the background. The while loop make sure the pipe stays available even if there is nothing connected to it.
For sure there are a lot of different things about this that can be improved and optimized, but that is what I am currently using in my testing environment.
-
hi again, I noticed that domoticz would lose connection to the Gateway when I would ask one of the nodes to restart. Is that expected behavior?
For example when I want to introduce a new node/code to domoticz, the moment I hit reboot on some node domoticz would report that it has lost TCP connection with the gateway and it would wait 30s or something and then reconnect to the gateway, which is ok to restart but it will then miss the introduction/presentation data sent by the sensor. This is one of the coolest features of MysController, to update and reset remote nodes, without the need to reopen all the nodes and hitting reset or removing the battery etc.
Anyone noticing this, is there some workaround for this? -
Hi all,
I've been working on this project since some time, basically it's a GUI for controlling/updating/debugging a network of MySensors nodes. OTA functionality is supported via MYSBootloader - read posts for further instructions/troubleshooting or PM.
link updated: MYSController Version 1.0.0.3316 released
New features:
- support OTA FW update Sensebender board
- metric/imperial system I_CONFIG
- save nodes
Update via update button in MYSController or download here.

Hi tekka,
I have tested MYSController, and it was a massive success ! thanks a lot for your work.
I have just one question, in the csv file there is a type.
According to my reading this is to tag a node type, but where are the already known types ?
Type 1 => only temperature
Type 2 => only humidity
Type 3 => temp & hum
etc
Is there another config file where to specify user types ?Type,Name,Version,File,Comments
10,Blink,1,Blink.hex,blinking example
20,TimeReporter,1,TimeReporter.hex,TimeReporter
100,Sensebender Micro,1,SensebenderMicro.cpp.hex,Sensebender Micro
110,Sensebender Blink,1,SensebenderBlink.cpp.hex,Sensebender Blink -
Hi tekka,
I have tested MYSController, and it was a massive success ! thanks a lot for your work.
I have just one question, in the csv file there is a type.
According to my reading this is to tag a node type, but where are the already known types ?
Type 1 => only temperature
Type 2 => only humidity
Type 3 => temp & hum
etc
Is there another config file where to specify user types ?Type,Name,Version,File,Comments
10,Blink,1,Blink.hex,blinking example
20,TimeReporter,1,TimeReporter.hex,TimeReporter
100,Sensebender Micro,1,SensebenderMicro.cpp.hex,Sensebender Micro
110,Sensebender Blink,1,SensebenderBlink.cpp.hex,Sensebender Blink -
For completeness, here are the MYSBootloader instructions for OTA updates via MYSController:
-
Load gw sketch and connect arduino either via serial or ethernet port. No special bootloader needed for that part (i.e. standard optiboot bootloader will do the job).
-
Add these lines to the boards.txt file in your Arduino IDE installation folder (located somewhere like C:/Program Files/Arduino/hardware/arduino/avr)
proMYSBL16.name=ATmega328 external 16Mhz with MYSBootloader
proMYSBL16.upload.tool=avrdude
proMYSBL16.upload.protocol=arduino
proMYSBL16.upload.maximum_size=30720
proMYSBL16.upload.maximum_data_size=2048
proMYSBL16.upload.speed=115200
proMYSBL16.bootloader.tool=avrdude
proMYSBL16.bootloader.low_fuses=0xF7
proMYSBL16.bootloader.high_fuses=0xDA
proMYSBL16.bootloader.extended_fuses=0x06
proMYSBL16.bootloader.unlock_bits=0x3F
proMYSBL16.bootloader.lock_bits=0x3F
proMYSBL16.bootloader.file=MySensors/MYSBootloader.hex
proMYSBL16.build.mcu=atmega328p
proMYSBL16.build.f_cpu=16000000L
proMYSBL16.build.board=AVR_UNO
proMYSBL16.build.core=arduino
proMYSBL16.build.variant=standard######## settings for 8Mhz internal clock
proMYSBL8.name=ATmega328 internal 8Mhz with MYSBootloader
proMYSBL8.upload.tool=avrdude
proMYSBL8.upload.protocol=arduino
proMYSBL8.upload.maximum_size=30720
proMYSBL8.upload.maximum_data_size=2048
proMYSBL8.upload.speed=57600
proMYSBL8.bootloader.tool=avrdude
proMYSBL8.bootloader.low_fuses=0xE2
proMYSBL8.bootloader.high_fuses=0xDA
proMYSBL8.bootloader.extended_fuses=0x06
proMYSBL8.bootloader.unlock_bits=0x3F
proMYSBL8.bootloader.lock_bits=0x3F
proMYSBL8.bootloader.file=MySensors/MYSBootloader.hex
proMYSBL8.build.mcu=atmega328p
proMYSBL8.build.f_cpu=8000000L
proMYSBL8.build.board=AVR_UNO
proMYSBL8.build.core=arduino
proMYSBL8.build.variant=standard -
Copy MYSBootloader.hex (from MYSController/Bootloader folder) to the Arduino IDE installation folder C:/Program Files/Arduino/hardware/arduino/avr/bootloaders/MySensors/
-
Restart Arduino IDE, choose under Tools | Board | ATmega328 external 16Mhz with MYSBootloader or Tools | Board | ATmega328 internal 8Mhz with MYSBootloader depending on your HW settings
-
Connect USBasp to sensor node and select Tools | Burn Bootloader
-
If everything worked well until here, you now have the MYSBootloader with the fuse settings from above burnt to your sensor node (16Mhz extXTAL or 8Mhz intRC, BOOTSZ 1024W, BOD 1V8).
-
Please use the AVR fuse calculator to retrieve the individual fuse settings. If you need to change frequency, BOD or other settings, change the fuse settings based on the fuse calculator.
Important: The MYSBootloader.hex file was compiled for 16Mhz oscillators but it should also work at 8Mhz. If you intend to go below 8Mhz, I highly recommend to compile the bootloader with adjusted frequency settings. -
Start MYSController, hit config and adjust settings (COM-Port & baud or IP address:port)
-
Hit connect: Connection to gateway should be established (gateway answers with gateway ready message), the node should appear and request an ID & FW.
-
Right-mouse click on that node, select assign FW, choose for example **TimeReporter ** (demo firmware included in the MYSController/Firmware folder). Then click reboot and wait until FW is uploaded and node boots.
-
TimeReporter firmware reports every few seconds some values such as time, millis, and voltage.
-
Custom firmware: compile your sketch and retrieve the generated .hex file (activate verbose mode in the Arduino IDE to get compiler messages and output path).
-
Copy .hex file to MYSController/Firmware folder and edit firmware_config.csv file according to the existing lines.
-
Hit Refresh Repo in MYSController and the newly copied firmware should appear in the Assign FW dropdown list, ready to be uploaded.
Have fun :)
I'Ve done the steps witch you describe but it doesn't show up in the ArduinoIDE.
Step 1, added the lines to boards.txt
Step 2, made a directory \MySensors under
D:\Program Files\Arduino\hardware\arduino\avr\bootloaders
Step 3, copied the .hex file into D:\Program Files\Arduino\hardware\arduino\avr\bootloaders\MySensorsWhat did i do wrong???
-
-
Guys,
I'm trying to get this working with my nano clone but am having no luck.
When I flash the boot loader the nano doesn't send the request (the light on the nano comes on red and stays on).
I'm presuming it's because I haven't updated the fuse settings etc for the nano? Would someone be so kind as to offer some help with regards what I need to change?
Edit: I'm up and running!
-
Did anyone figure out how to get MySensors debug messages to show? My sketch has debug uncommented and I can see them via serial, but not in the app?
-
Did anyone figure out how to get MySensors debug messages to show? My sketch has debug uncommented and I can see them via serial, but not in the app?
-
@tekka Yeah, I get that, that's what I'm struggling with. I have the debug line uncommented on my ESP8266 gateway, but see nothing in the mysensors debug tab? I'm using the latest beta build as I run 2.0.0.
Also, I've asked a couple of times, is the default firmware pre release 1.3 bootloader (16mhz) suitable in its default state for both my Uno's and Nano's?
Thanks in advance,
Mark
-
@tekka Yeah, I get that, that's what I'm struggling with. I have the debug line uncommented on my ESP8266 gateway, but see nothing in the mysensors debug tab? I'm using the latest beta build as I run 2.0.0.
Also, I've asked a couple of times, is the default firmware pre release 1.3 bootloader (16mhz) suitable in its default state for both my Uno's and Nano's?
Thanks in advance,
Mark
-
@tekka That explains it then :) Thank you very much for the confirmations!
-
Did anyone figure out how to get MySensors debug messages to show? My sketch has debug uncommented and I can see them via serial, but not in the app?
@Mark-Swift : If you're happy to modify the MySensors library in an unsupported way, I've added a logMessage function to transmit text/debug messages from remote nodes:
https://github.com/peterdey/MySensors-Arduino/commit/f5f339b71620ec3cd896304a2ca6aba40ad40218Found it useful, particularly in conjunction with MYSController OTA firmware updates.
-
@Mark-Swift : If you're happy to modify the MySensors library in an unsupported way, I've added a logMessage function to transmit text/debug messages from remote nodes:
https://github.com/peterdey/MySensors-Arduino/commit/f5f339b71620ec3cd896304a2ca6aba40ad40218Found it useful, particularly in conjunction with MYSController OTA firmware updates.
@pdey Let me get this straight, this allows me to see the serial debug messages from my nodes running the modified boot loader? That would be a dream come true, I really miss debug messages...
Thank you!
-
@pdey Let me get this straight, this allows me to see the serial debug messages from my nodes running the modified boot loader? That would be a dream come true, I really miss debug messages...
Thank you!
@Mark-Swift: You'll need to replace Serial.Print with node.logMessage - but yes, I use it for transmitting debug messages, wirelessly, to the controller.
No gateway modifications required (the gateway will just pass the message over to the controller). Old versions of MYSController (e.g. 0.1.2.276) would actually show the debug messages as a LOG_MESSAGE in the "Messages" tab; later versions hide it away in the "Debug" tab.

-