Mit der bereits integrierten Ethernet-Schnittstelle eignet sich das Nanode-Board ideal für die webbasierte Datenerfassung. Die über die analogen Ports erfassten Sensordaten können anschliessend über Ethernet an eine Webanwendung zur Datenerfassung im Internet oder Intranet gesendet werden.
Eine der bekanntesten Anwendungen im Internet ist Pachube, ein Real-Time Open Data Web Service, auf welchem man über eine API Daten speichern und anschliessend darstellen kann.
Für das Speichern der Daten über die Pachube-API kann ein Beispielsketch EtherShield_simpleClient_Pachube aus der EtherShield-Library verwendet werden.
Bild 1: Nanode als Datenlogger, Ethernet (rechts), Temperatursensor (oben)
Neben der oben genannten Datenspeicherung im Internet kann man seine gesammelten Daten auch im Intranet speichern. Für die Datenspeicherung kann beispielsweise eine MySQL-Datenbank verwendet werden, welche über ein PHP-Script mit Daten gefüllt wird.
Das Senden der Daten erfolgt dabei über einen URL-Aufruf.
Beispiel:
http://10.0.1.8/update-daten.php?temp=23.56
Damit nicht ungewollt Daten in die Datenbank gespeichert werden, kann man den URL-Aufruf mit einem zusätzlichen Parameter (Key) erweitert werden.
http://10.0.1.8/update-daten.php?temp=23.56&key=123456789ABCDEF
Vor dem Speichern der Daten in der MySQL-Datenbank prüft die Speicherfunktion ob der in der URL übergebene Key mit einem gespeicherten Key übereinstimmt.
In der Datenlogger-Hardware, in unserem Beispiel dem Nanode, wird für die Datenübergabe an die Intranet-Anwendung das leicht angepasste Beispiel EtherShield_simpleClient_Emoncms verwendet.
Das Beispiel ist universell aufgebaut und kann für viele verschiedene Client-Anwendungen mit dem Nanode verwendet werden.
#include <EtherShield.h> byte mac[6] = { 0x54,0x55,0x38,0x12,0x01,0x23}; byte ip[4] = {10,0,1,100}; byte gateway[4] = {10,0,1,1}; byte server[4] = {10, 0, 1, 8}; #define HOST "" // Blank "" if on your local network #define API "/update-daten.php?key=123456789ABCDEF&" unsigned long lastupdate; char str[50]; char fstr[10]; int dataReady=0; void setup() { Serial.begin(9600); Serial.println("EtherShield Datenlogger"); ethernet_setup(mac,ip,gateway,server,80); } void loop() { //-------------------------------------- // 1) Measurements and data preparation //-------------------------------------- if ((millis()-lastupdate)>6000) { lastupdate = millis(); float a0 = analogRead(0); // Build up a json string: {key:value,key:value} // dtostrf - converts a double to a string! // strcat - adds a string to another string // strcpy - copies a string strcpy(str,"temp="); dtostrf(a0,0,2,fstr); strcat(str,fstr); strcat(str,""); dataReady = 1; } //---------------------------------------- // 2) Send the data //---------------------------------------- if (ethernet_ready() && dataReady==1) { ethernet_send_url(PSTR(HOST),PSTR(API),str); Serial.println("sent"); dataReady = 0; } }
Mittels Chart-Funktion, beispielsweise der PHP-Library Libchart, können die in der Datenbank gespeicherten Sensordaten auf einer Webseite dargestellt werden.
Bild 2: Sensordaten auf Webseite darstellen
Mit dieser netzwerkinternen Lösung werden keine Daten ins Internet gesendet. Die Datenverarbeitung-und Speicherung erfolgt mit einer eigenen Lösung. Man hat den vollen Zugriff auf die Daten und kann diese nach Bedarf für andere Anwendungen nutzen.
Suchen
Aktuelles
- Arduino Praxiseinstieg, 5. Auflage erschienen
- Arduino UNO R4 offiziell vorgestellt
- Review: PCB Service von WellPCB
- Review: SMD-Bestückungs-Service von JLCPCB
- Portable Power Supply – VoltBot
- Leiterplatten-Panel bei JLCPCB
- Arduino Praxiseinstieg, 4. Auflage erscheint am 29.04.2019
- Klein, kleiner, ganz klein – ATtiny10
- Review – Leiterplatten (PCB) von JLCPCB
- Arduino Day 2018
Kategorien
Archive
- Dezember 2023
- Juni 2023
- Juli 2020
- Dezember 2019
- Oktober 2019
- Juni 2019
- April 2019
- Juli 2018
- Mai 2018
- November 2017
- Oktober 2017
- September 2017
- Juli 2017
- April 2017
- März 2017
- Februar 2017
- Dezember 2016
- November 2016
- September 2016
- Mai 2016
- Januar 2016
- Dezember 2015
- August 2015
- Mai 2015
- März 2015
- Januar 2015
- Dezember 2014
- September 2014
- August 2014
- Juli 2014
- Juni 2014
- Mai 2014
- April 2014
- März 2014
- Februar 2014
- Januar 2014
- Dezember 2013
- Oktober 2013
- September 2013
- August 2013
- Juni 2013
- Mai 2013
- April 2013
- März 2013
- Februar 2013
- Januar 2013
- Dezember 2012
- November 2012
- Oktober 2012
- September 2012
- August 2012
- Juli 2012
- Juni 2012
- Mai 2012
- April 2012
- Februar 2012
- Januar 2012
- Dezember 2011
- November 2011
- Oktober 2011
- September 2011
- August 2011
- Juli 2011
- Juni 2011
- Mai 2011
- April 2011
- März 2011
- Januar 2011
- Dezember 2010
- November 2010
- Oktober 2010
- September 2010
- August 2010
- Juli 2010
- Juni 2010
- Mai 2010
Kommentare
ArduinoPraxis [...]
ArduinoPraxis [...]
Werner Smidt [...]
ArduinoPraxis [...]
Oliver [...]