This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

A cookie will be stored in your browser regardless of choice to prevent you being asked this question again. You will be able to change your cookie settings at any time using the link in the footer.

Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
LCD I2C Node-Red
#1
Bonjour,
J'ai installer un écran LCD 20x4 I2C sur Mon RPi4 en utilisant :

node-red-contrib-lcd20x4-i2c

   

Le code que j'ai mis en place
Code:
[{"id":"daed4568.f8a7d8","type":"tab","label":"LCD 1","disabled":false,"info":""},{"id":"5c7a63fc.d041e4","type":"LCD20x4-I2C","z":"daed4568.f8a7d8","name":"LCD20x4","speed":"3","size":"20x4","address":"0x27","x":1080,"y":240,"wires":[]},{"id":"924c4048.97a328","type":"function","z":"daed4568.f8a7d8","name":"Message","func":"// Line Number  Msg String      Start Position  Centered\n// 1            Date/Time       Ignored         true\n// 2            \"Test line 2.\"  2               false\n// 3            \"Test line 3.\"  3               false\n// 4            \"Test line 4.\"  4               false\n\n//var sString01 = \"Test line 1.\";\n\nvar V1 = flow.get('envInTemp');\nvar V2 = flow.get('envInHumi');\nvar V3 = flow.get('envOutTemp');\nvar V4 = flow.get('envOutHumi');\nvar V5 = flow.get('envOutPres');\nvar V6 = flow.get('navPosLat');\nvar V7 = flow.get('navPosLon');\n\nvar sString01 = \"I\" + V1 + \"\\xDFC \" + V2 + \"%\" + \"  Hpa\";\nvar sString02 = \"O\" + V3 + \"\\xDFC \" + V4 + \"%\" + \" \" + V5;\nvar sString03 = \" \";\nvar sString04 = V6 + \" \" + V7;\n//var iPos01 = 1;\n//var iPos02 = 2;\n//var iPos03 = 3;\n//var iPos04 = 4;\n//var bCenter01 = true;\n//var bCenter02 = true;\n//var bCenter03 = false;\n//var bCenter04 = false;\n\nmsg.payload = {\n\tmsgs:[\n\t\t{\n\t\t\tmsg:sString01,\n\t\t\tpos:1,\n\t\t\tcenter:false\n\t\t},\n\t\t{\n\t\t\tmsg:sString02,\n\t\t\tpos:1,\n\t\t\tcenter:false\n\t\t},\n\t\t{\n\t\t\tmsg:sString03,\n\t\t\tpos:1,\n\t\t\tcenter:false\n\t\t},\n\t\t{\n\t\t\tmsg:sString04,\n\t\t\tpos:1,\n\t\t\tcenter:false\n\t\t}\n\t]\n};\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":920,"y":240,"wires":[["5c7a63fc.d041e4"]]},{"id":"b113533e.df98a8","type":"comment","z":"daed4568.f8a7d8","name":"LCD I2C 20x4","info":"","x":130,"y":140,"wires":[]},{"id":"39bfc90f.c5de4e","type":"signalk-on-delta","z":"daed4568.f8a7d8","name":"","context":"vessels.self","flatten":true,"x":140,"y":220,"wires":[["3bc8e1d2.744abe"]]},{"id":"3bc8e1d2.744abe","type":"switch","z":"daed4568.f8a7d8","name":"TopicSelect","property":"topic","propertyType":"msg","rules":[{"t":"eq","v":"environment.inside.temperature","vt":"str"},{"t":"eq","v":"environment.inside.relativeHumidity","vt":"str"},{"t":"eq","v":"environment.outside.temperature","vt":"str"},{"t":"eq","v":"environment.outside.humidity","vt":"str"},{"t":"eq","v":"environment.outside.pressure","vt":"str"},{"t":"eq","v":"navigation.position","vt":"str"}],"checkall":"true","repair":false,"outputs":6,"x":330,"y":220,"wires":[["40056ee7.d7dcf8"],["2cab1f6e.1fde9"],["6e118c2d.ca05ec"],["59c29f51.f94c1"],["2fac89c3.4ebce6"],["d453db17.bf6788"]]},{"id":"40056ee7.d7dcf8","type":"function","z":"daed4568.f8a7d8","name":"environment.inside.temperature","func":"var numInput = Number(msg.payload);\nvar T =  numInput-273.15;\nmsg.payload = T.toFixed(1);\n\nif(msg.topic == \"environment.inside.temperature\")\n    flow.set(\"envInTemp\", msg.payload);\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":630,"y":100,"wires":[["924c4048.97a328"]]},{"id":"2cab1f6e.1fde9","type":"function","z":"daed4568.f8a7d8","name":"environment.inside.relativeHumidity","func":"var T = Number(msg.payload);\nmsg.payload = T.toFixed(1);\n\nif(msg.topic == \"environment.inside.relativeHumidity\")\n    flow.set(\"envInHumi\", msg.payload);\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":640,"y":140,"wires":[["924c4048.97a328"]]},{"id":"6e118c2d.ca05ec","type":"function","z":"daed4568.f8a7d8","name":"environment.outside.temperature","func":"var numInput = Number(msg.payload);\nvar T =  numInput-273.15;\nmsg.payload = T.toFixed(1);\n\nif(msg.topic == \"environment.outside.temperature\")\n    flow.set(\"envOutTemp\", msg.payload);\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":640,"y":180,"wires":[["924c4048.97a328"]]},{"id":"59c29f51.f94c1","type":"function","z":"daed4568.f8a7d8","name":"environment.outside.humidity","func":"var T = Number(msg.payload);\nmsg.payload = T.toFixed(1);\n\nif(msg.topic == \"environment.outside.humidity\")\n    flow.set(\"envOutHumi\", msg.payload);\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":630,"y":220,"wires":[["924c4048.97a328"]]},{"id":"2fac89c3.4ebce6","type":"function","z":"daed4568.f8a7d8","name":"environment.outside.pressure","func":"var numInput = Number(msg.payload);\nvar T =  numInput/100;\nmsg.payload = T.toFixed(1);\n\nif(msg.topic == \"environment.outside.pressure\")\n    flow.set(\"envOutPres\", msg.payload);\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":630,"y":260,"wires":[["924c4048.97a328"]]},{"id":"fbe379f5.28f8c","type":"function","z":"daed4568.f8a7d8","name":"navigation.position.latitude","func":"var N0S = 0;\nvar T = Number(msg.payload);\n\nif(Math.sign(T) == -1) {\n    N0S = \"S\";\n    T = Math.abs(T);\n} else if(Math.sign(T) == 1){\n    N0S = \"N\";\n}\n\nmsg.payload = T.toFixed(5) + N0S;\n\nif(msg.topic == \"latitude\")\n    flow.set(\"navPosLat\", msg.payload);\n\nreturn msg;","outputs":"1","noerr":0,"initialize":"","finalize":"","x":620,"y":300,"wires":[["924c4048.97a328","7e8d1c3a.2e58f4"]]},{"id":"d453db17.bf6788","type":"split","z":"daed4568.f8a7d8","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"topic","x":170,"y":320,"wires":[["11b79409.7cd8d4"]]},{"id":"11b79409.7cd8d4","type":"switch","z":"daed4568.f8a7d8","name":"topicSelect","property":"topic","propertyType":"msg","rules":[{"t":"eq","v":"latitude","vt":"str"},{"t":"eq","v":"longitude","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":330,"y":320,"wires":[["fbe379f5.28f8c"],["9b0aee7.171b91"]]},{"id":"9b0aee7.171b91","type":"function","z":"daed4568.f8a7d8","name":"navigation.position.longitude","func":"var E0W = 0;\nvar T = Number(msg.payload);\n\nif(Math.sign(T) == -1) {\n    E0W = \"W\";\n    T = Math.abs(T);\n} else if(Math.sign(T) == 1){\n    E0W = \"E\";\n}\n\nmsg.payload = T.toFixed(5) + E0W;\n\nif(msg.topic == \"longitude\")\n    flow.set(\"navPosLon\", msg.payload);\n\nreturn msg;","outputs":"1","noerr":0,"initialize":"","finalize":"","x":620,"y":340,"wires":[["924c4048.97a328","ea0ca9bb.d9e4"]]},{"id":"7e8d1c3a.2e58f4","type":"debug","z":"daed4568.f8a7d8","name":"","active":false,"tosidebar":true,"console":false,"tostatus":true,"complete":"payload","targetType":"msg","statusVal":"payload","statusType":"auto","x":960,"y":300,"wires":[]},{"id":"ea0ca9bb.d9e4","type":"debug","z":"daed4568.f8a7d8","name":"","active":false,"tosidebar":true,"console":false,"tostatus":true,"complete":"payload","targetType":"msg","statusVal":"payload","statusType":"auto","x":970,"y":380,"wires":[]}]

Il y a encore du travail pour la présentation et l'ajout d'options mais ça se présente bien.

En espérant que ma contribution puisse vous aider ?

Actuellement le résultat est comme ceci :

   
Reply
#2
Update with better stability :
Code:
[{"id":"5c7a63fc.d041e4","type":"LCD20x4-I2C","z":"daed4568.f8a7d8","name":"LCD20x4","speed":"1","size":"20x4","address":"0x27","x":1300,"y":240,"wires":[]},{"id":"924c4048.97a328","type":"function","z":"daed4568.f8a7d8","name":"Message","func":"// Line Number  Msg String      Start Position  Centered\n// 1            Date/Time       Ignored         true\n// 2            \"Test line 2.\"  2               false\n// 3            \"Test line 3.\"  3               false\n// 4            \"Test line 4.\"  4               false\n\n//var sString01 = \"Test line 1.\";\n\nvar V1 = flow.get('envInTemp');\nvar V2 = flow.get('envInHumi');\nvar V3 = flow.get('envOutTemp');\nvar V4 = flow.get('envOutHumi');\nvar V5 = flow.get('envOutPres');\nvar V6 = flow.get('navPosLat');\nvar V7 = flow.get('navPosLon');\n\nvar sString01 = \"I\" + V1 + \"\\xDFC \" + V2 + \"%\" + \"  Hpa\";\nvar sString02 = \"O\" + V3 + \"\\xDFC \" + V4 + \"%\" + \" \" + V5;\nvar sString03 = \" \";\nvar sString04 = V6 + \" \" + V7;\n//var iPos01 = 1;\n//var iPos02 = 2;\n//var iPos03 = 3;\n//var iPos04 = 4;\n//var bCenter01 = true;\n//var bCenter02 = true;\n//var bCenter03 = false;\n//var bCenter04 = false;\n\nmsg.payload = {\n\tmsgs:[\n\t\t{\n\t\t\tmsg:sString01,\n\t\t\tpos:1,\n\t\t\tcenter:false\n\t\t},\n\t\t{\n\t\t\tmsg:sString02,\n\t\t\tpos:1,\n\t\t\tcenter:false\n\t\t},\n\t\t{\n\t\t\tmsg:sString03,\n\t\t\tpos:1,\n\t\t\tcenter:false\n\t\t},\n\t\t{\n\t\t\tmsg:sString04,\n\t\t\tpos:1,\n\t\t\tcenter:false\n\t\t}\n\t]\n};\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":920,"y":240,"wires":[["50001641.29a84"]]},{"id":"b113533e.df98a8","type":"comment","z":"daed4568.f8a7d8","name":"LCD I2C 20x4","info":"","x":130,"y":140,"wires":[]},{"id":"39bfc90f.c5de4e","type":"signalk-on-delta","z":"daed4568.f8a7d8","name":"","context":"vessels.self","flatten":true,"x":140,"y":220,"wires":[["3bc8e1d2.744abe"]]},{"id":"3bc8e1d2.744abe","type":"switch","z":"daed4568.f8a7d8","name":"TopicSelect","property":"topic","propertyType":"msg","rules":[{"t":"eq","v":"environment.inside.temperature","vt":"str"},{"t":"eq","v":"environment.inside.relativeHumidity","vt":"str"},{"t":"eq","v":"environment.outside.temperature","vt":"str"},{"t":"eq","v":"environment.outside.humidity","vt":"str"},{"t":"eq","v":"environment.outside.pressure","vt":"str"},{"t":"eq","v":"navigation.position","vt":"str"}],"checkall":"true","repair":false,"outputs":6,"x":330,"y":220,"wires":[["40056ee7.d7dcf8"],["2cab1f6e.1fde9"],["6e118c2d.ca05ec"],["59c29f51.f94c1"],["2fac89c3.4ebce6"],["d453db17.bf6788"]]},{"id":"2cab1f6e.1fde9","type":"function","z":"daed4568.f8a7d8","name":"environment.inside.relativeHumidity","func":"var T = Number(msg.payload);\nmsg.payload = T.toFixed(1);\n\nif(msg.topic == \"environment.inside.relativeHumidity\")\n    flow.set(\"envInHumi\", msg.payload);\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":640,"y":140,"wires":[["924c4048.97a328"]]},{"id":"6e118c2d.ca05ec","type":"function","z":"daed4568.f8a7d8","name":"environment.outside.temperature","func":"var numInput = Number(msg.payload);\nvar T =  numInput-273.15;\nmsg.payload = T.toFixed(1);\n\nif(msg.topic == \"environment.outside.temperature\")\n    flow.set(\"envOutTemp\", msg.payload);\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":640,"y":180,"wires":[["924c4048.97a328"]]},{"id":"59c29f51.f94c1","type":"function","z":"daed4568.f8a7d8","name":"environment.outside.humidity","func":"var T = Number(msg.payload);\nmsg.payload = T.toFixed(1);\n\nif(msg.topic == \"environment.outside.humidity\")\n    flow.set(\"envOutHumi\", msg.payload);\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":630,"y":220,"wires":[["924c4048.97a328"]]},{"id":"2fac89c3.4ebce6","type":"function","z":"daed4568.f8a7d8","name":"environment.outside.pressure","func":"var numInput = Number(msg.payload);\nvar T =  numInput/100;\nmsg.payload = T.toFixed(1);\n\nif(msg.topic == \"environment.outside.pressure\")\n    flow.set(\"envOutPres\", msg.payload);\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":630,"y":260,"wires":[["924c4048.97a328"]]},{"id":"fbe379f5.28f8c","type":"function","z":"daed4568.f8a7d8","name":"navigation.position.latitude","func":"var N0S = 0;\nvar T = Number(msg.payload);\n\nif(Math.sign(T) == -1) {\n    N0S = \"S\";\n    T = Math.abs(T);\n} else if(Math.sign(T) == 1){\n    N0S = \"N\";\n}\n\nmsg.payload = T.toFixed(5) + N0S;\n\nif(msg.topic == \"latitude\")\n    flow.set(\"navPosLat\", msg.payload);\n\nreturn msg;","outputs":"1","noerr":0,"initialize":"","finalize":"","x":620,"y":300,"wires":[["924c4048.97a328"]]},{"id":"d453db17.bf6788","type":"split","z":"daed4568.f8a7d8","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"topic","x":170,"y":320,"wires":[["11b79409.7cd8d4"]]},{"id":"11b79409.7cd8d4","type":"switch","z":"daed4568.f8a7d8","name":"topicSelect","property":"topic","propertyType":"msg","rules":[{"t":"eq","v":"latitude","vt":"str"},{"t":"eq","v":"longitude","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":330,"y":320,"wires":[["fbe379f5.28f8c"],["9b0aee7.171b91"]]},{"id":"9b0aee7.171b91","type":"function","z":"daed4568.f8a7d8","name":"navigation.position.longitude","func":"var E0W = 0;\nvar T = Number(msg.payload);\n\nif(Math.sign(T) == -1) {\n    E0W = \"W\";\n    T = Math.abs(T);\n} else if(Math.sign(T) == 1){\n    E0W = \"E\";\n}\n\nmsg.payload = T.toFixed(5) + E0W;\n\nif(msg.topic == \"longitude\")\n    flow.set(\"navPosLon\", msg.payload);\n\nreturn msg;","outputs":"1","noerr":0,"initialize":"","finalize":"","x":620,"y":340,"wires":[["924c4048.97a328"]]},{"id":"40056ee7.d7dcf8","type":"function","z":"daed4568.f8a7d8","name":"environment.inside.temperature","func":"var numInput = Number(msg.payload);\nvar T =  numInput-273.15;\nmsg.payload = T.toFixed(1);\n\nif(msg.topic == \"environment.inside.temperature\")\n    flow.set(\"envInTemp\", msg.payload);\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":630,"y":100,"wires":[["924c4048.97a328"]]},{"id":"50001641.29a84","type":"delay","z":"daed4568.f8a7d8","name":"","pauseType":"timed","timeout":"30","timeoutUnits":"seconds","rate":"1","nbRateUnits":"10","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":true,"x":1100,"y":240,"wires":[["5c7a63fc.d041e4"]]}]


Attached Files Image(s)
   
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)