SDM120 Energy Meter หาซื้อได้จาก aliexpress คลิกที่นี่
USB to RS485 ก็จาก aliexpress คลิกที่นี่
นำมาใช้งานกับ RPi ได้อย่างดี
ใช้คำสั่ง เพื่อหาว่ามี usb to serail port ต่ออยู่หรือไม่
$ lsusb
เราจะเจอ usb to serial port ที่ /dev/ttyUSB0
นำมาใช้งานกับ RPi ได้อย่างดี
ใช้คำสั่ง เพื่อหาว่ามี usb to serail port ต่ออยู่หรือไม่
$ lsusb
ค้นหาว่า usb-serial ของเราต่อกับ tty ไหน จากคำสั่ง
$ dmesg | grep tty
เราจะเจอ usb to serial port ที่ /dev/ttyUSB0
หลังจากนั้นก็จะทำการต่อสายการสื่อสารชนิด RS485 Modbus ไปยัง SDM120 Energy Meter ลาก flow modbus มาวางนะครับ ส่วน วิธีการติดตั้ง modbus flow คลิก
กำหนดค่าใน modbus ดังนี้ โดยผมจะเลือก FC-4 เพื่ออ่านค่าจาก Input Register ส่วนตำแหน่งของ Register ของ SDM120 ก็ดังนี้นะครับ
การกำหนด Register เลือกอ่านค่า Volts ที่ address 0 [30000] เลือก Quantity 2 เนื่องจาก format เป็น IEEE754 float ใช้ 4 bytes
กลับไปกำหนดค่า Buad rate ที่ 2400 bps นะครับ เพราะเป็นค่าเริ่มต้นของ SDM120
ต่อ DHT-22 เพื่อใช้วัดอุณหภูมิและความชื้นสัมพัทธ์ วิธีการใช้งานคลิก
ส่วน Node มีอะไรบ้างก็ลอง Copy Code บางส่วนไปวางดูตาม code ข้างล่างครับ
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[{"id":"85510ca.9052af","type":"tab","label":"SDM120 Energy Meter"},{"id":"5e56284e.858668","type":"function","z":"85510ca.9052af","name":"Voltage","func":"var rawData = new ArrayBuffer(4);\nvar intView = new Uint16Array(rawData);\nvar fltView = new Float32Array(rawData);\n\nintView[0] = msg.payload[1]; //low\nintView[1] = msg.payload[0]; //high\n\nmsg.payload = parseFloat(fltView[0].toFixed(1));\nmsg.topic = \"voltage\";\n\nnode.status({fill:\"blue\",shape:\"ring\",text:msg.topic + \":\" + msg.payload}); \n\nreturn msg;","outputs":1,"noerr":0,"x":404.00001525878906,"y":21.000001907348633,"wires":[["1716619.613939e"]]},{"id":"4176070.7a5cdf8","type":"modbus-read","z":"85510ca.9052af","name":"SDM120","showStatusActivities":false,"showErrors":false,"unitid":"1","dataType":"InputRegister","adr":"0","quantity":"2","rate":"5","rateUnit":"s","server":"433ac110.603ab","x":151.55967712402344,"y":29.204532623291016,"wires":[["5e56284e.858668"],[]]},{"id":"addc97cc.7d3548","type":"modbus-read","z":"85510ca.9052af","name":"SDM120","showStatusActivities":false,"showErrors":false,"unitid":"1","dataType":"InputRegister","adr":"6","quantity":"2","rate":"5","rateUnit":"s","server":"433ac110.603ab","x":152.7926254272461,"y":124.21020221710205,"wires":[["adf281ed.27c85"],[]]},{"id":"adf281ed.27c85","type":"function","z":"85510ca.9052af","name":"Ampare","func":"var rawData = new ArrayBuffer(4);\nvar intView = new Uint16Array(rawData);\nvar fltView = new Float32Array(rawData);\n\nintView[0] = msg.payload[1]; //low\nintView[1] = msg.payload[0]; //high\n\nmsg.payload = parseFloat(fltView[0].toFixed(3));\nmsg.topic =\"Ampare\";\n\nnode.status({fill:\"blue\",shape:\"ring\",text:msg.topic + \":\" + msg.payload}); \n\nreturn msg;","outputs":1,"noerr":0,"x":404.7926330566406,"y":126.21014976501465,"wires":[["f5b0affc.e0fd5"]]},{"id":"8b13daf0.3e8c58","type":"modbus-read","z":"85510ca.9052af","name":"SDM120","showStatusActivities":false,"showErrors":false,"unitid":"1","dataType":"InputRegister","adr":"12","quantity":"2","rate":"5","rateUnit":"s","server":"433ac110.603ab","x":137.79264450073242,"y":267.11927223205566,"wires":[["23079d50.bff4b2"],[]]},{"id":"23079d50.bff4b2","type":"function","z":"85510ca.9052af","name":"Watt","func":"var rawData = new ArrayBuffer(4);\nvar intView = new Uint16Array(rawData);\nvar fltView = new Float32Array(rawData);\n\nintView[0] = msg.payload[1]; //low\nintView[1] = msg.payload[0]; //high\n\nmsg.payload = parseFloat(fltView[0].toFixed(3));\nmsg.topic =\"Watts\";\n\nnode.status({fill:\"blue\",shape:\"ring\",text:msg.topic + \":\" + msg.payload}); \n\nreturn msg;","outputs":1,"noerr":0,"x":378.7926559448242,"y":267.11927604675293,"wires":[["e3caebd4.f9b268","3e3284d6.0b284c"]]},{"id":"e3fbc0e8.34149","type":"modbus-read","z":"85510ca.9052af","name":"SDM120","showStatusActivities":false,"showErrors":false,"unitid":"1","dataType":"InputRegister","adr":"70","quantity":"2","rate":"5","rateUnit":"s","server":"433ac110.603ab","x":144.79265213012695,"y":550.1192569732666,"wires":[["3b093b73.4e1914"],[]]},{"id":"3b093b73.4e1914","type":"function","z":"85510ca.9052af","name":"Frequency","func":"var rawData = new ArrayBuffer(4);\nvar intView = new Uint16Array(rawData);\nvar fltView = new Float32Array(rawData);\n\nintView[0] = msg.payload[1]; //low\nintView[1] = msg.payload[0]; //high\n\nmsg.payload = parseFloat(fltView[0].toFixed(2));\nmsg.topic =\"Frequency\";\n\nnode.status({fill:\"blue\",shape:\"ring\",text:msg.topic + \":\" + msg.payload}); \n\nreturn msg;","outputs":1,"noerr":0,"x":387.7926445007324,"y":544.1193084716797,"wires":[["e512e786.443d48"]]},{"id":"97b09676.fe8108","type":"modbus-read","z":"85510ca.9052af","name":"SDM120","showStatusActivities":false,"showErrors":false,"unitid":"1","dataType":"InputRegister","adr":"342","quantity":"2","rate":"5","rateUnit":"s","server":"433ac110.603ab","x":139.79266738891602,"y":430.1192111968994,"wires":[["aa634520.f4d0f8"],[]]},{"id":"aa634520.f4d0f8","type":"function","z":"85510ca.9052af","name":"kWh","func":"var rawData = new ArrayBuffer(4);\nvar intView = new Uint16Array(rawData);\nvar fltView = new Float32Array(rawData);\n\nintView[0] = msg.payload[1]; //low\nintView[1] = msg.payload[0]; //high\n\nmsg.payload = parseFloat(fltView[0].toFixed(3));\nmsg.topic =\"kWh\";\n\nnode.status({fill:\"blue\",shape:\"ring\",text:msg.topic + \":\" + msg.payload}); \n\nreturn msg;","outputs":1,"noerr":0,"x":372.7926483154297,"y":434.1192264556885,"wires":[["dbd577a2.4c0468"]]},{"id":"f0d3606.f116fa","type":"modbus-read","z":"85510ca.9052af","name":"SDM120 PF","showStatusActivities":false,"showErrors":false,"unitid":"1","dataType":"InputRegister","adr":"30","quantity":"2","rate":"5","rateUnit":"s","server":"433ac110.603ab","x":147.79266357421875,"y":484.93746185302734,"wires":[["6845145.3c4bbec"],[]]},{"id":"6845145.3c4bbec","type":"function","z":"85510ca.9052af","name":"PF","func":"var rawData = new ArrayBuffer(4);\nvar intView = new Uint16Array(rawData);\nvar fltView = new Float32Array(rawData);\n\nintView[0] = msg.payload[1]; //low\nintView[1] = msg.payload[0]; //high\n\nmsg.payload = parseFloat(fltView[0].toFixed(1));\nmsg.topic =\"PF\";\n\nnode.status({fill:\"blue\",shape:\"ring\",text:msg.topic + \":\" + msg.payload}); \n\nreturn msg;","outputs":1,"noerr":0,"x":374.7926597595215,"y":486.9374599456787,"wires":[["8f58ccdb.18d22"]]},{"id":"1716619.613939e","type":"ui_gauge","z":"85510ca.9052af","name":"Volts","group":"45627eb6.92681","order":1,"width":"0","height":"0","gtype":"gage","title":"Volts","label":"units","format":"{{value}}","min":0,"max":"500","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","x":615.5653915405273,"y":24.545454025268555,"wires":[]},{"id":"f5b0affc.e0fd5","type":"ui_gauge","z":"85510ca.9052af","name":"Amp","group":"45627eb6.92681","order":2,"width":"0","height":"0","gtype":"gage","title":"Amp","label":"units","format":"{{value}}","min":0,"max":"2","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","x":613.7926216125488,"y":125.21022415161133,"wires":[]},{"id":"e3caebd4.f9b268","type":"ui_gauge","z":"85510ca.9052af","name":"Watts","group":"a473a9b9.35d958","order":2,"width":"0","height":"0","gtype":"gage","title":"Watts","label":"units","format":"{{value}}","min":0,"max":"300","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","x":593.7927322387695,"y":262.21021270751953,"wires":[]},{"id":"dbd577a2.4c0468","type":"ui_gauge","z":"85510ca.9052af","name":"kWh","group":"18ce6310.d3e1cd","order":3,"width":"0","height":"0","gtype":"gage","title":"kWh","label":"units","format":"{{value}}","min":0,"max":"100","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","x":596.7926597595215,"y":431.0284004211426,"wires":[]},{"id":"8f58ccdb.18d22","type":"ui_gauge","z":"85510ca.9052af","name":"PF","group":"18ce6310.d3e1cd","order":1,"width":"3","height":"4","gtype":"gage","title":"PF","label":"units","format":"{{value}}","min":"-1","max":"1","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","x":594.7926902770996,"y":499.02837562561035,"wires":[]},{"id":"31071305.3df0ec","type":"modbus-read","z":"85510ca.9052af","name":"ModbusSlave02","showStatusActivities":true,"showErrors":true,"unitid":"2","dataType":"InputRegister","adr":"0","quantity":"1","rate":"5","rateUnit":"s","server":"433ac110.603ab","x":163.7926788330078,"y":633.9375,"wires":[["3e129878.a78868"],[]]},{"id":"3e129878.a78868","type":"function","z":"85510ca.9052af","name":"ADC0","func":"var rawData = new ArrayBuffer(2);\nvar intView = new Uint16Array(rawData);\n//var fltView = new Float32Array(rawData);\n\nintView[0] = msg.payload[0]; //low\n//intView[1] = msg.payload[0]; //high\n\nmsg.payload =intView;\n//msg.payload = parseFloat(fltView[0].toFixed(1));\nmsg.topic =\"ADC0\";\n\nnode.status({fill:\"blue\",shape:\"ring\",text:msg.topic + \":\" + msg.payload}); \n\nreturn msg;","outputs":1,"noerr":0,"x":370.792724609375,"y":634.846435546875,"wires":[[]]},{"id":"3e3284d6.0b284c","type":"ui_chart","z":"85510ca.9052af","name":"watt","group":"a473a9b9.35d958","order":0,"width":"0","height":"0","label":"Watts","chartType":"line","legend":"false","xformat":"HH:mm:ss","interpolate":"linear","nodata":"","ymin":"0","ymax":"300","removeOlder":"12","removeOlderPoints":"","removeOlderUnit":"3600","cutout":0,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"x":592.5681457519531,"y":314.6619234085083,"wires":[[],[]]},{"id":"f73a26c8.1448f8","type":"modbus-read","z":"85510ca.9052af","name":"SDM120Watts","showStatusActivities":false,"showErrors":false,"unitid":"1","dataType":"InputRegister","adr":"12","quantity":"2","rate":"10","rateUnit":"m","server":"433ac110.603ab","x":146.79267501831055,"y":325.0283966064453,"wires":[["e9946936.fa9028"],[]]},{"id":"e9946936.fa9028","type":"function","z":"85510ca.9052af","name":"WattTweet","func":"var rawData = new ArrayBuffer(4);\nvar intView = new Uint16Array(rawData);\nvar fltView = new Float32Array(rawData);\n\nintView[0] = msg.payload[1]; //low\nintView[1] = msg.payload[0]; //high\n\nmsg.payload = \"PV Power = \" + parseFloat(fltView[0].toFixed(3)) + \" Watts\";\nmsg.topic =\"Watts\";\n\nnode.status({fill:\"blue\",shape:\"ring\",text:msg.topic + \":\" + msg.payload}); \n\nreturn msg;","outputs":1,"noerr":0,"x":382.7926445007324,"y":321.0283851623535,"wires":[["3e505989.f9d666"]]},{"id":"7c90bf71.a080e","type":"rpi-dht22","z":"85510ca.9052af","name":"TempHumid","topic":"DHT22","dht":"22","pintype":"0","pin":4,"x":318.0000305175781,"y":818.0000171661377,"wires":[["4cc97377.551dcc"]]},{"id":"ec8b6b7e.f562a8","type":"inject","z":"85510ca.9052af","name":"Trigger","topic":"","payload":"","payloadType":"date","repeat":"5","crontab":"","once":false,"x":134.00000762939453,"y":824.0000066757202,"wires":[["7c90bf71.a080e"]]},{"id":"3062e018.2623a","type":"ui_gauge","z":"85510ca.9052af","name":"Temp","group":"b750226f.77c2d","order":4,"width":"3","height":"3","gtype":"gage","title":"Temp","label":"units","format":"{{value}}°C","min":0,"max":"100","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","x":726.0000610351562,"y":698.000244140625,"wires":[]},{"id":"4858e408.a40abc","type":"ui_gauge","z":"85510ca.9052af","name":"Humid","group":"b750226f.77c2d","order":4,"width":"3","height":"3","gtype":"gage","title":"Humid","label":"units","format":"{{value}}%","min":0,"max":"100","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","x":733.0000190734863,"y":796.0001983642578,"wires":[]},{"id":"4cc97377.551dcc","type":"function","z":"85510ca.9052af","name":"SplitData","func":"var msg1 = {};\nvar msg2 = {};\n\nmsg1.payload = msg.payload;\nmsg1.topic='Temp';\nmsg2.payload=msg.humidity;\nmsg2.topic='Humid';\n\nnode.status({fill:\"blue\",shape:\"ring\",text:msg.topic + \":\" + msg.payload + \":\" + msg.humidity}); \n\nreturn [msg1,msg2];","outputs":"2","noerr":0,"x":483.8333740234375,"y":816.7223796844482,"wires":[["3062e018.2623a","63f30fd1.a9816"],["4858e408.a40abc","63f30fd1.a9816"]]},{"id":"63f30fd1.a9816","type":"ui_chart","z":"85510ca.9052af","name":"TempHumidity","group":"b750226f.77c2d","order":0,"width":"6","height":"5","label":"Temperature and Humidity ","chartType":"line","legend":"true","xformat":"HH:mm:ss","interpolate":"linear","nodata":"","ymin":"0","ymax":"100","removeOlder":"12","removeOlderPoints":"","removeOlderUnit":"3600","cutout":0,"colors":["#7a6858","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"x":753.8958225250244,"y":848.7777919769287,"wires":[[],[]]},{"id":"8fb921c4.f9438","type":"twitter out","z":"85510ca.9052af","twitter":"","name":"Tweet","x":929.8369312286377,"y":437.0105276107788,"wires":[]},{"id":"378f556b.3265ca","type":"modbus-read","z":"85510ca.9052af","name":"SDM120kWh","showStatusActivities":false,"showErrors":false,"unitid":"1","dataType":"InputRegister","adr":"342","quantity":"2","rate":"10","rateUnit":"m","server":"433ac110.603ab","x":143.8958625793457,"y":381.888876914978,"wires":[["ba3a9cfd.4d1cf"],[]]},{"id":"ba3a9cfd.4d1cf","type":"function","z":"85510ca.9052af","name":"kWhTweet","func":"var rawData = new ArrayBuffer(4);\nvar intView = new Uint16Array(rawData);\nvar fltView = new Float32Array(rawData);\n\nintView[0] = msg.payload[1]; //low\nintView[1] = msg.payload[0]; //high\n\nmsg.payload = \"Total Energy = \" + parseFloat(fltView[0].toFixed(3)) + \" kWh\";\nmsg.topic =\"kWh\";\n\nnode.status({fill:\"blue\",shape:\"ring\",text:msg.topic + \":\" + msg.payload}); \n\nreturn msg;","outputs":1,"noerr":0,"x":381.8958549499512,"y":377.8888759613037,"wires":[["3e505989.f9d666"]]},{"id":"3e505989.f9d666","type":"join","z":"85510ca.9052af","name":"","mode":"custom","build":"string","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","timeout":"","count":"5","x":786.837028503418,"y":436.69101905822754,"wires":[["8fb921c4.f9438"]]},{"id":"8fa33959.e43288","type":"modbus-read","z":"85510ca.9052af","name":"SDM120","showStatusActivities":false,"showErrors":false,"unitid":"1","dataType":"InputRegister","adr":"0","quantity":"2","rate":"10","rateUnit":"m","server":"433ac110.603ab","x":153.89583587646484,"y":78.88888931274414,"wires":[["2e748ce3.e297c4"],[]]},{"id":"2e748ce3.e297c4","type":"function","z":"85510ca.9052af","name":"VoltsTweet","func":"var rawData = new ArrayBuffer(4);\nvar intView = new Uint16Array(rawData);\nvar fltView = new Float32Array(rawData);\n\nintView[0] = msg.payload[1]; //low\nintView[1] = msg.payload[0]; //high\n\nmsg.payload = parseFloat(fltView[0].toFixed(3)) + \" V.\";\nmsg.topic =\"Volts\";\n\nnode.status({fill:\"blue\",shape:\"ring\",text:msg.topic + \":\" + msg.payload}); \n\nreturn msg;","outputs":1,"noerr":0,"x":402.89581298828125,"y":78.88888549804688,"wires":[["3e505989.f9d666"]]},{"id":"9f0187d3.50dbd8","type":"modbus-read","z":"85510ca.9052af","name":"SDM120","showStatusActivities":false,"showErrors":false,"unitid":"1","dataType":"InputRegister","adr":"6","quantity":"2","rate":"10","rateUnit":"m","server":"433ac110.603ab","x":154.8958282470703,"y":187.88888549804688,"wires":[["4b24212f.245f1"],[]]},{"id":"4b24212f.245f1","type":"function","z":"85510ca.9052af","name":"AmpTweet","func":"var rawData = new ArrayBuffer(4);\nvar intView = new Uint16Array(rawData);\nvar fltView = new Float32Array(rawData);\n\nintView[0] = msg.payload[1]; //low\nintView[1] = msg.payload[0]; //high\n\nmsg.payload = parseFloat(fltView[0].toFixed(3)) + \" A.\";\nmsg.topic =\"Amp\";\n\nnode.status({fill:\"blue\",shape:\"ring\",text:msg.topic + \":\" + msg.payload}); \n\nreturn msg;","outputs":1,"noerr":0,"x":401.8958282470703,"y":183.8888874053955,"wires":[["3e505989.f9d666"]]},{"id":"4682f801.5a2dc8","type":"function","z":"85510ca.9052af","name":"SplitData","func":"msg.payload = msg.payload +\"°C \" + msg.humidity + \"%\";\n\nnode.status({fill:\"blue\",shape:\"ring\",text:msg.topic + \":\" + msg.payload + \":\" + msg.humidity}); \n\nreturn msg;","outputs":"1","noerr":0,"x":484.89581298828125,"y":724.3333129882812,"wires":[["3e505989.f9d666"]]},{"id":"185784e3.a0715b","type":"rpi-dht22","z":"85510ca.9052af","name":"TempHumid","topic":"DHT22","dht":"22","pintype":"0","pin":4,"x":314.0000228881836,"y":743.2222290039062,"wires":[["4682f801.5a2dc8"]]},{"id":"36c9ca25.7616b6","type":"inject","z":"85510ca.9052af","name":"Trigger","topic":"","payload":"","payloadType":"date","repeat":"600","crontab":"","once":false,"x":130,"y":749.2222185134888,"wires":[["185784e3.a0715b"]]},{"id":"e512e786.443d48","type":"ui_gauge","z":"85510ca.9052af","name":"F","group":"18ce6310.d3e1cd","order":2,"width":"3","height":"4","gtype":"gage","title":"F","label":"units","format":"{{value}}","min":"45","max":"55","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","x":589,"y":557,"wires":[]},{"id":"433ac110.603ab","type":"modbus-client","z":"","name":"Modbus","clienttype":"serial","bufferCommands":true,"stateLogEnabled":false,"tcpHost":"127.0.0.1","tcpPort":"502","tcpType":"DEFAULT","serialPort":"/dev/ttyUSB0","serialType":"RTU-BUFFERD","serialBaudrate":"2400","serialDatabits":"8","serialStopbits":"1","serialParity":"none","serialConnectionDelay":"100","unit_id":"1","commandDelay":"1","clientTimeout":"1000","reconnectTimeout":"5000"},{"id":"45627eb6.92681","type":"ui_group","z":"","name":"Volts & Amp","tab":"9fcb7b53.17ee58","order":2,"disp":true,"width":"6"},{"id":"a473a9b9.35d958","type":"ui_group","z":"","name":"Power & Energy","tab":"9fcb7b53.17ee58","order":3,"disp":true,"width":"6"},{"id":"18ce6310.d3e1cd","type":"ui_group","z":"85510ca.9052af","name":"Power Factor","tab":"9fcb7b53.17ee58","order":4,"disp":true,"width":"6"},{"id":"b750226f.77c2d","type":"ui_group","z":"","name":"Temp & Humid","tab":"9fcb7b53.17ee58","order":1,"disp":true,"width":"6"},{"id":"9fcb7b53.17ee58","type":"ui_tab","z":"85510ca.9052af","name":"PV300W Energy Meter","icon":"dashboard","order":"1"}] |
Comments