Node-RED – Voorbeeld – Data via HTTP GET/POST verzenden met PHP script
Op deze pagina vind je een voorbeeld met Node-RED hoe je data via een HTTP GET/POST commando icm een PHP script kan opslaan als lokaal CSV bestand of MySQL database.
Wat heb je nodig?
HTTP GET
Stap 1
Om een datapunt te simuleren gebruik een inject node en configureer de payload:
Stap 2
Voeg een functie toe om een GET URL op te bouwen met de payload:
De code voor de functie:
1 2 3 4 5 |
var msg = { method: 'GET', url: 'http://192.168.2.100/test/meting.php?temp=' + msg.payload, }; return msg; |
Stap 3
Voeg als laatste een http “request node” toe, en configureer deze als volgt:
Stap 4
Nu volgt het PHP script om de GET data op te slaan in een lokaal bestand (of MySQL database)
1 2 3 4 5 6 7 8 9 10 11 |
<?php chdir(dirname(__FILE__)); $temp = $_GET['temp']; if ($temp != "") { $bestand = fopen("data.csv", "a"); fwrite($bestand, date("Y").";".date("m").";".date("d").";".date("H").";".date("i").";".date("s").";".$temp."\r\n"); fclose($bestand); } ?> |
De complete workflow:
Na een deploy van de nodes wordt er een “data.csv” bestand aangemaakt met de volgende inhoud:
2018;05;16;20;09;09;25.12
Project in Node-RED clipboard:
1 |
[{"id":"da9863e.fe8f2a","type":"http request","z":"b499d5d2.995708","name":"","method":"use","ret":"txt","url":"","tls":"","x":810,"y":80,"wires":[[]]},{"id":"ba87f004.ed427","type":"inject","z":"b499d5d2.995708","name":"inject temp","topic":"","payload":"25.12","payloadType":"str","repeat":"","crontab":"","once":true,"onceDelay":0.1,"x":390,"y":80,"wires":[["a57e9130.672c"]]},{"id":"a57e9130.672c","type":"function","z":"b499d5d2.995708","name":"HTTP GET URL","func":"var msg = {\n method: 'GET',\n url: 'http://192.168.2.100/test/meting.php?temp=' + msg.payload,\n};\nreturn msg;","outputs":1,"noerr":0,"x":600,"y":80,"wires":[["da9863e.fe8f2a"]]}] |
HTTP POST
Stap 1
Om een POST te maken hoef je alleen bovenstaande functie te veranderen:
De code voor de functie:
1 2 3 4 5 6 7 8 9 10 |
var msg = { method: 'POST', url: 'http://192.168.2.100/test/meting.php', headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'User-Agent': 'Mozilla/5.0', }, payload: {temp: msg.payload, hum: '54'}, }; return msg; |
Stap 2
Nu volgt het PHP script om de POST data op te slaan in een lokaal bestand (of MySQL database)
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php chdir(dirname(__FILE__)); $temp = $_POST["temp"]; $hum = $_POST["hum"]; if ($temp != "") { $bestand = fopen("data.csv", "a"); fwrite($bestand, date("Y").";".date("m").";".date("d").";".date("H").";".date("i").";".date("s").";".$temp.";".$hum."\r\n"); fclose($bestand); } ?> |
De complete workflow:
Na een deploy van de nodes wordt er een “data.csv” bestand aangemaakt met de volgende inhoud:
2018;05;16;22;26;44;25.12;54
Project in Node-RED clipboard:
1 |
[{"id":"da9863e.fe8f2a","type":"http request","z":"b499d5d2.995708","name":"","method":"use","ret":"txt","url":"","tls":"","x":850,"y":80,"wires":[[]]},{"id":"ba87f004.ed427","type":"inject","z":"b499d5d2.995708","name":"inject temp","topic":"","payload":"25.12","payloadType":"str","repeat":"","crontab":"","once":true,"onceDelay":0.1,"x":410,"y":80,"wires":[["a57e9130.672c"]]},{"id":"a57e9130.672c","type":"function","z":"b499d5d2.995708","name":"HTTP POST URL","func":"var msg = {\n method: 'POST',\n url: 'http://192.168.2.100/test/meting.php',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'User-Agent': 'Mozilla/5.0',\n },\n payload: {temp: msg.payload, hum: '54'},\n};\nreturn msg;","outputs":1,"noerr":0,"x":630,"y":80,"wires":[["da9863e.fe8f2a"]]}] |
Bron(nen):