Hallo und guten Tag,
ich habe einen Mega 256 mit Ethernet-Shield. Es werden jede Minute ca. 40 Temperaturen und etwa 20 digitale Zustände auf der SD protokolliert, nebst Datum und Uhrzeit und Sensor-ID. Es sollen noch ca. 20 One-Wire-Thermometer folgen. Die tägliche Textdatei hole ich manuell mittels Web-Server von der Arduino-SD, kopiere sie dann auf dem PC in eine Gesamt-Text-Datei, um anschließend die Daten mit Excel sichtbar zu machen.
Dies ist umständlich, wegen der großen Datenmenge zeitaufwändig beim Download vom Arduino und mittelfristig nicht mehr handhabbar. Ausserdem komme ich, wenn notwendig nur umstädlich an aktuelle Daten heran.
Aus Kostengründen möchte ich nicht immer einen PC laufen lassen, der kontinuierlich die Daten in Empfang nimmt und sie speichert.
Mir schwebt ein Medium vor, das die Daten vom Arduino in Empfang nimmt, sie evtl. in eine Datenbank schreibt und dabei so gut wie keinen Strom verbraucht. Auf diese Daten/-bank möchte ich dann im Bedarfsfall mittels PC zugreifen. Im Moment produziere ich täglich 1,5 MB Daten.
Ich habe keine Vorstellung, was dieses Medium sein könnte. Ebenfalls habe ich von Datenbanken und deren Programmierung keine Ahnung und suche deshalb auf diesem Weg erst einmal Hinweise zu möglichen Lösungen. Ich bin für jeden Ansatz dankbar.
Gruß Gerd
Hallo!
Hier kannst du mal reinschauen, alles Schritt für Schritt erklärt, das hab ich ohne jegliche Vorkenntnisse hinbekommen.
Ich lasse mir auf einem Server Sensor Daten direkt in eine CSV Datei schreiben. Ist das ungefär das was du suchst?
http://forum.arduino.cc/index.php?topic=239519.msg1745030#msg1745030
Gruß
Danke, für diesen Hinweis. Das ist ja ziemlich umfangreich. Das Prinzip ist schon das, was mir vorschwebt. Ob mir das Speichern in einer "Wolke" gefällt, da bin ich mir noch nicht sicher. Mir wäre es lieber, wenn die "Wolke" bei mir zu Hause wäre. Ein kleines "etwas", in das der Arduino seine Daten speichert, auf die ich von "aussen" zugreifen kann.
Nach allem, was ich bisher so gelesen habe, ist das Speichern in einer mySQL-Datenbank das Angesagte. Da habe ich viel zu tun, vor allem zu lernen.
Gruß Gerd
Ich denke die Daten lassen sich auch auf einem Stick oder einer Festplatte speichern die z.b. am Router hängt. Wie das allerdings genau funktioniert weiß ich nicht.
Darf man fragen wofür du soviele Temperaturen messen musst??
Gruß
Nur so als theoretische Idee: Wie wäre es mit einer 32GB Speicherkarte, neue Datei für jede Stunde oder jeden Tag (damit die Dateigröße überschaubar bleibt) und über Ethernet Abfrage von konkreten Dateien ermöglichen?
Ich selbst habe mit Arduino+Ethernet allerdings null praktische Erfahrung.
Grüße
Helmuth
Schau dir das mal an:
http://playground.arduino.cc/Code/FTP
Hallo,
ich hatte mir mal folgenden Link gespeichert, aber noch nicht benötigt.
http://forum.arduino.cc/index.php?PHPSESSID=digbt5e07trvolfnd270va0es2&topic=124633.0
Allen Anschein nach läuft es bei Dir auf eine Datenbank hinaus, bei so vielen Meßwerten. Wenn man nun eine Datenbank auf einen anderen Rechner anlegt der noch wenig Strom aufnehmen soll, empfiehlt sicht eigentlich dafür ein Raspberry Pi B+.
Damit wird jedoch der Arduino überflüssig. Weil der Raspberry Datensammler und Datenbank sein kann. Nachteil, Du müßtest Dich mit dem Raspberry beschäftigen. Du müßtest Dich aber eh mit etwas zusätzlichen beschäftigen, wegen der Datenbank.
Hallo,
erst einmal Danke, für die sehr unterschiedlichen Hinweise.
Hier einige Infos zu meiner Hardware-Struktur und dem gesamten Vorhaben:
Ein Arduino Mega 256 mit Ethernet-Shield (mit SD) ist im Einsatz.
Ich wohne in einem Haus, das vom Keller bis zum Dachgeschoss 4 Etagen umfasst. Es wird durch eine Fußbodenheizung beheizt. Auf dem Dach befindet sich ein Sonnenkollektor und im Keller ein 500-Liter Wärmespeicher.
Ich möchte alle Funktionen mittels Messen kontrollieren, regeln und möglichst optimieren.
Mit der Fußbodenheizung habe ich angefangen. Ich messe die Raumtemperaturen und die jeweiligen Vor- und Rücklauftemperaturen der einzelnen Heizkreise. Die Temperatursensoren/Thermometer werden über vier One-Wire-Busse abgefragt und die einzelnen Heizkreise mittels elektrischer Ventile über Relais geschaltet. Kollektor und Speicher sind noch nicht dabei. Ich muss erst Herr der Daten werden. Die Raumtemperaturen werden mit Sollwerten verglichen und daraus die Öffnungszeiten für die Heizkreisventile berechnet.
Bisher gibt es 39 Thermometer an vier Bussen und 21 Relais. Es werden noch ca. 20 Thermometer hinzukommen und vermutlich auch noch einige Relais.
Gemessen und gerechnet wird zur Zeit minütlich. Ausgegeben wird zur Zeit: minütlich die Schaltzustände der Relais und alle fünf Minuten (wegen der Datenmenge) die Temperaturen. Zur Zeit umfassen die täglichen Textdateien 1,5 MB. Jeder Datensatz enthält vier Informationen: Datum und Uhrzeit, Sensor-ID bzw. Relais-Ausgang, Messwert bzw. Schaltzustand, Art des Wertes, Temperatur oder Digitalwert. Über die ID kann ich dann im Computer noch Raum, Etage usw. hinzufügen.
Die Datenmenge wird nun langsam ein Problem. Ich sammle die Daten jetzt seit zwei Wochen. Das reine Öffnen der Textdatei, in die ich die neuen Datensätze rein kopiere dauert bereits sechs Sekunden. Excel lies diese Daten ein und stellt sie in einer Pivottabelle mit Diagramm dar. Dieser Prozess dauert jedesmal zur Zeit 3 3/4 Minuten. Schon in einem Monat wird das nicht mehr gehen. So siehts aus.
Gruß Gerd
Hallo,
wenn Du neben den Rasberry ein kleines NAS mit WEBserver stellst, kannst Du mit MySQL die Datenbank betreiben und auf den NAS ist viel Platz.
Gunther
Hallo,
bei den Datenmengen kommst Du laut meiner Meinung um eine ordentliche Datenbank nicht drum herum. Wenn man darauf zugreifen möchte, geht es mit 14 Tage Rückblick schnell. Möchte man 6 Monate zurückblicken dauert es eben. Ist überall so. Die Daten müssen ja erstmal von der Datenbank gelesen und gefiltert werden. Du kannst auch statt 1 Minuter aller 2 oder nur aller 5 Minuten speichern. Reicht das nicht aus? Hätte man den "Datenmüll" halbiert oder gefünftelt.
Neben dem Raspberry ein NAS ist in meinen Augen ein Gerät zu viel. Man kommt von einem ins andere. Arduino > Raspberry > NAS. Da kann auch gleich der Arduino ans NAS senden. Wenn man auf dem NAS MySQL einrichten kann, wäre doch alles möglich. Oder nicht? Und mit 2 Platten gespiegelt hat man erstmal etwas Sicherheit. Externes Backup ersetzt das natürlich nicht.
Das wären so meine aktuellen Gedanken zum Thema.
Hallo,
Arduino > NAS scheint mir eine gute Lösung zu sein. Hat damit schon jemand Erfahrungen? Gibt es vielleicht einen Geräte-Tip? Gibt es welche, wo der mySQL-Server schon drauf ist?
Gruß Gerd
Ethernetshield am Arduino rauswerfen.
Verbindung zwischen Arduino und Raspberry Pi schaffen (zB. I2C oder UART)
MySQL auf dem Raspberry einrichten. Nun könntest du mit einem Apache/Nginx ein kleines Webinterface basteln, der dir die Werte auswertet.
Hallo Stefan,
ich glaube, das überfordert mich. Ich habe schon von mySQL keine Ahnung und muss mich da reinarbeiten. Dann auch Raspberry lernen und und und? Das ist zuviel auf einmal. Glaube ich jedenfalls.
Gruß Gerd
Also ich denke es geht etwas kleiner, als mit MySQL und Apache.
Bei der Hardwareempfehlung würde ich aber auch zum Raspberry Pi B+ oder zum Beaglebone Black raten.
Die Datenbank kann man auch erst mal etwas einfacher aufziehen. Ein C oder C++ Konsolenprogramm mit SQLite wäre für den Einstieg nicht schlecht. Dann sind die Daten erstmal strukturiert gespeichert, man kann sie später immer noch auf einen größeren Datenbankserver kopieren. SQLite ist die Standarddatenbank unter Android und auch unter allen anderen Betriebssystem weit verbreitet.
http://www.sqlite.org/
Auch für einen minimalen Webzugriff auf die Daten muss man C++ nicht unbedingt verlassen, auf dem Beaglebone habe ich schon Html-Formulare mit Poco getestet. Da hat man auch gleichzeitig noch vereinfachten Zugriff auf SQLite und MySQL ...
http://pocoproject.org/features.html
Man könnte SQLite wahrscheinlich auch auf eine Art von Arduino bringen. Der Galileo sollte das hinkriegen, aber nicht mit der Standard Arduino Software.
Entweder mit Intels IoT Toolkit
(da finde ich gerade keinen Link)
Oder mit Windows for IoT
Hallo,
also ich weis jetzt nicht warum ihr wieder mit dem Raspberry anfangen wollt. Ist dafür in meinen Augen Unsinn. Auch da müssen Festplatten ran. Dafür ist dann wieder ein USB Hub notwendig usw. Ein NAS von QNAP oder anderen hat einen Webserver und SQL an Bord. Damit hat man einen kleinen Kasten. Und nicht eine Schachtel Raspberry mit Netzteil + USB Hub mit Netzteil und Festplatten mit Netzteil und weitere Kabel rumstehen und rumliegen. Die Daten können direkt vom Arduino zum NAS.
Warum Festplatten ran? Eine einfache 16GB Speicherkeite reicht hier vollkommen aus. Eine NAS von QNAP macht hier nichts anderes, nur dass diese doch deutlich teurer ist.
Ein NAS braucht genauso wie der RaspPi ein Netzteil. Meist ist es ein 12V Netzteil, beim RaspPi lediglich ein 5V Netzteil.
Der RaspPi macht hier genau das, was man braucht. Jedoch erfordert das nicht gerade wenig Einarbeitungszeit. Es kann auch weiterhin das Ethernetshield genutzt werden beim Arduino. Dann brauchen beide Geräte nicht im unmittelbar gleichen Raum untergebracht werden.
Hallo,
naja, ob nun 12V oder 5V Netzteil ist erstmal irrelevant. Aber ich ging von den Datenmengen aus die er täglich speichern möchte. Hab aber soeben nachgerechnet. Zur Zeit sind es 1,5MB. Rechnen wir bei einer 16GB SD mit 12GB freien Nutzdatenraum für die Datenbank und 2MB pro Tag, könnte man knapp 17 Jahre speichern. Okjay, sollte reichen. Oder er nimmt gleich eine 32GB SD Karte. Nur kann er dann nicht gleich alles mit dem Raspberry "erschlagen"? Nur dann muß er wieder seine Senoren anpassen, wegen den 3,3V. Dann muß er doch Arduino und Raspberry koppeln. Okay, ich hatte laut gedacht.
IO-Programmierung auf den Linux-Rechnern erfordert auch wieder einiges an Einarbeitung. Da ist es einfacher den Arduino zu nehmen und ihn z.B. einfach an den USB vom Linux Rechner zu hängen. Das spart ein zweites Netzteil.
Wenn die Hardware tauglicher wäre, würde der Galileo genau in diese Lücke passen. Einfache Programmierung, wie beim Arduino, ein OS versteckt die darunterliegende Hardware. Gleichzeitig ist der Arbeitsspeicher und der SD-Kartenspeicher so groß, dass man auch Sachen wie eine Datenbank in den Sketch hineinkriegt.
Nur gehört der Galileo in die Rubrik "Die Idee ist gut, aber ..."
Immerhin haben sie beim Nachfolger gelernt. Ein Dual-Core Atom und 1 GB Ram klingt schon besser.
Hallo,
meine Gedanken zu dem Projekt: Ist es wirklich nötig jede Minute alles zu speichern? Gerade Fußbodenheizungen sind doch so träge, dass auch alle 15-30min. Speicherung reichen könnten.
Man könnte auch eine Tagesdatei und eine Monatsdatei speichern. Tagesdatei für Detailauswertungen und Monatsdatei, wo nur alle 30min. ein Durchschnittswert protokolliert wird.
Es ist die Frage, ob wie viel Zeit man für die Einarbeitung in Datenbanken, Nas, RaspPi usw. im Vergleich zur händischen Datenverarbeitung braucht. Vielleicht würden Excel-Makros einiges noch vereinfachen können.
Das Thema interessiert mich zunehmend.
Nochmal meine Idee: Einen (WLAN) Router hat jeder rumstehen und ohnehin 24/7 am Laufen. Die meisten haben einen hostfähigen USB Anschluss und können somit als "NAS für Arme" verwendet werden. An den Router kann man also - je nach benötigter Kapazität - eine Festplatte oder einen großen USB Stick anschließen.
Auf diesen USB Speicher kann man dann vom LAN oder via DynDNS-Dienst von überall zugreifen.
Es muss doch irgendwie möglich sein, mit dem Arduino via Ethernet mit dem Router zu sprechen und dort Dateien auf dem Netzlaufwerk abzulegen.
Allerdings hab ich noch keine Dokumentation von so einem Projekt gesehen...warum nicht? Was übersehe ich?
Ist das Protokoll zu komplex, um es auf einem Arduino mit wenig RAM zu implementieren? Oder fehlen mir mangels Erfahrung mit der Materie nur die richtigen Suchbegriffe?
Gruß
Helmuth