INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Programm zur zentralen Ablage von Messwerten
07.06.2015, 18:31
Beitrag #1
Programm zur zentralen Ablage von Messwerten
Hallo alle zusammen,

durch das Experimentieren mit dem Arduino bin ich auf die Idee gekommen eine Art Netzwerkserver zu schreiben, der Messdaten zentral ablegt. Man kann sich per TCP, UDP (mit Integrierter Rückantwort) und seriell am Server anmelden und diese Daten formatiert wieder abrufen. Ich benutze das für eine Netzwerk-Fernanzeige.
Es existiert schon ein umfangreicher Befehlssatz, den der angeschlossene Client nutzen kann. Die Funktionen reichen vom erzeugen einer Textdatei (auf dem Server) bis hin zur Abfrage einer Seriellen Schnittstelle. Ich habe meinen Arduino Ethernet (als Client) an den Server angebunden. Die Werte müssen also nicht mehr auf dem Arduino abgelegt werden sondern sind für alle Clients nutzbar. Sogar den Call-Monitor der Fritzbox konnte ich über ein Zusatzmodul einbinden.
Wer Programmierkenntnisse besitzt, könnte sich also einen eigenen Client schreiben (Raspberry PI,LinuxClient,...). Es können auch mehrere Clients gleichzeitig angebunden werden, da jede Clientverbindung eigenständig arbeitet.

Ich wollte mal so in die Runde Fragen, ob ein Interesse an solch einem Programm bestehen würde. Wohin die Entwicklung dabei geht kann ich noch nicht sagen. Mich würde jedenfalls eure Meinung dazu interessieren. Vielleicht hat ja jemand eine Idee, was man noch so alles damit anstellen könnte.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.06.2015, 19:09
Beitrag #2
RE: Programm zur zentralen Ablage von Messwerten
Hi,
ich benutze für sowas ähnliches FHEM.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.06.2015, 05:56
Beitrag #3
RE: Programm zur zentralen Ablage von Messwerten
(07.06.2015 19:09)Thorsten Pferdekämper schrieb:  Hi,
ich benutze für sowas ähnliches FHEM.
Gruß,
Thorsten

Hi Thorsten,

der Name war mir geläufig und ich habe mir das Projekt gestern angesehen, bzw. ich konnte es nur überfliegen. Ich muss sagen, das ist schon beeindruckend, was man damit machen kann. Vielleicht werde ich mich damit auch noch einmal damit beschäftigen, wenn ich die Zeit dafür finde.

Mit meinem Programm gehe ich einen anderen Weg. Ich erweitere sozusagen
die Fähigkeiten des angeschlossenen Clients und ermögliche den angehängten Komponenten die Fähigkeiten zur Kommunikation untereinander.

Mit meinem Grundprogramm (hier im Forum) bin ich gerade dabei, eine Art Klingelanlage umzusetzen. Dabei funktioniert der Arduino Mega (Klon) ganz eigenständig, meldet z.B. wann jemand geklingelt hat oder veranlasst eine Aktion (z.B. eine Meldung an ein Handy zu senden). Dazu muss der Client diese Funktion nicht selbst übernehmen, sondern er sendet über einen Serverbefehl die entsprechende Sequenz an das Handy (z.B.UDP-Paket ... oder Mail) .

Ich werde mal ein paar kleine Videos einstellen, um zu zeigen, wie das ganze funktioniert.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.06.2015, 19:18
Beitrag #4
Video Teil 1
Hallo,

hier ist wie versprochen der erste Teil.

Das Programm (z.Zt. nur Windows / Überlege, das auch mit Mono laufen zu lassen) muss nicht installiert werden. Die Dateien
im Verzeichnis einfach kopieren und den Server starten.

Die Verzögerungen im Netzwerk liegen wahrscheinlich am WLAN, an dem mein Rechner angeschlossen ist. im LAN funktioniert er einwandfrei.

Hier zeige ich euch, wie man sich mit dem Programm Putty am Server anmeldet.
Das, was hier demontriere, kann man natürlich auch mit einem selbstgeschriebenen Programm machen (c##/Python/.../...).

Wichtiger Hinweis : Das Gerät 192.168.1.254 ist ein ARDUINO und bindet sich an den Server an, sobald er den Port 5556 öffnen kann. Wenn jemand den Code des Arduinos haben will, eine kurze Nachricht reicht.

Noch etwas wichtiges : Das Programm ist noch nicht fertig und jeden Tag fallen mir neue Ideen ein !!!

Wer Fragen dazu hat, raus damit. Keine Scheu !!!



Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.06.2015, 21:30 (Dieser Beitrag wurde zuletzt bearbeitet: 12.06.2015 22:11 von Home38.)
Beitrag #5
Teil 2 - Mehrere Clients anbinden
In diesem Video seht Ihr, wie man sich mit mehreren Clients am Server anmelden kann. Der Befehl $testdata gibt Testdaten zurück, damit man das Verhalten des Clients testen kann. Jeder Client ist völlig unabhängig und man kann so viele Clients anmelden, wie es der Rechner mitmacht. Ich hatte bei 30 Clients aufgehört.

Mit dem Befehl $sendmsg kann man Nachrichte zwischen den Clients senden.

Fast jeder Befehl hat übrigens Zusatzparameter (Optionsstrings) , mit denen man das Verhalten und die Ausgabe steuern kann. Das, was Ihr seht, sind die Grundbefehle.

Ich habe die Auflösung bewusst hochgedreht, denn nichts ist schlimmer als ein Video, wo man die Augen zusammenkneifen muss, um etwas zu erkennen.






Hallo,

in diesem Teil werden Textzeilen in eine Datei auf dem Server geschrieben.
Die Datei wird im Verzeichnis abgelegt, wo sich auch die anderen Dateien befinden.

Mit dem Befehl $writefile können (mit entsprechenden Parametern) Dateien neu erstellt werden und Dateien fortgeschrieben werden.



Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.06.2015, 08:44 (Dieser Beitrag wurde zuletzt bearbeitet: 13.06.2015 09:15 von Home38.)
Beitrag #6
Teil 4 - Textdatei abrufen
Im 3.Teil habe ich über $writefile einen Text in eine Datei auf dem Server geschrieben. In diesem Teil lasse ich mir die Datei mit dem Befehl $typefile anzeigen. Zuerst die erstellte Textdatei und dann die INI-Datei.

Der Befehl $typefile hat allerdings noch eine Besonderheit. Über eine sogenannte Patterndatei kann man sich den Inhalt "zurechtschneiden", d.h. dass ich mir die Informationen formattiert ausgeben lassen kann. Ich benutze das für eine Fernanzeige. Das Bild ändert sich nur, wenn der Inhalt ändert.

Dort werden von einem Externen Programm Produktionsdaten erzeugt und diese Informationen werden an einer anderen Stelle benötigt.

Über den Anzeigeclient (Teil 5/6) kann man sich die Daten (mit unterschiedlicher Textaufbereitung ) anzeigen lassen.





Um die Werte von Sensoren oder anderen Geräten abzuspeichern, ist eine Textdatei nicht so gut geeignet. Über die Registerfunktion können die (mehrere) Werte zu einem Sensor abgelegt werden. Diese Werte können dann von anderen Geräten über den Befehl ?register abgefragt werden. Im Video wird ein Registereintrag (Sensor30) über Putty angelegt. Die anderen Sensoren 1-15 legt der Arduino an (Teil 6).

Das Anzeigeprogramm wird über ein Script gesteuert     .
Es können die Serverbefehle benutzt werden und es gibt auch lokale Befehle, die der Client ausführen kann.

Im oberen Teil des Anzeige sieht man die aktuellen Verbindungen und darunter kann man die Einträge im Register für den Sensor30 sehen.
Jeder dieser Einträge kann man über einen Befehl ändern (siehe Video).



Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.06.2015, 11:57 (Dieser Beitrag wurde zuletzt bearbeitet: 13.06.2015 12:00 von Home38.)
Beitrag #7
RE: Programm zur zentralen Ablage von Messwerten
In diesem Teil zeige ich , wie man den Arduino (192.168.1.254) dazu bewegen kann, die Messwerte im Register abzulegen. Sobald der Arduino startet, versucht er eine Verbindung zum Server aufzubauen. Wenn Ihm das nicht gelingt, wird der Arduino komplett neu gestartet. Das hat sich als beste Variante bewährt.

Als erstes werden die Sensoren eingetragen :

   

Hier werden die Werte gesetzt :

   

Im Video gibt es nach dem Durchlauf eine kurz Pause. An dieser Stelle wartet das Programm , damit man den Effekt besser sehen kann.

Am Ende füge ich noch einmal einen Sensor mit Hand (Putty) hinzu und ändere dort die Werte.



Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.06.2015, 19:24 (Dieser Beitrag wurde zuletzt bearbeitet: 17.06.2015 19:40 von Home38.)
Beitrag #8
Teil 7 - Kommunikation mit dem Server über UDP ( ohne Rückantwort)
Nicht jeder Client muss und vor allen Dingen kann per TCP angebunden werden.
Tcp benötigt immer eine Verbindung mit der Gegenstelle.

In diesem Teil kommuniziere ich mit dem Server über UDP. Im Server selbst ist ein interner UDP-Client angebunden, der in diesem Fall als INTERNAL-UDP gekennzeichnet ist. UDP lauscht hier (Einstellung INI-Datei) auf dem Port 5557 auf alle für Ihn ankommende Pakete. Es können ALLE Befehle benutzt werden, die auch die TCP-Verbindung nutzen kann. Es können also Registerwerte geschrieben werden als auch Dateien erzeugt und fortgeschrieben werden.

Um das ganze besser sehen zu können, habe ich mir ein Programm (links) geschrieben, daß die UDP-Pakete anzeigt. In diesem Fall die DEBUG-Ausgabe des Servers. Das andere Programm (rechts) kann UDP-Befehle versenden.

Als erstes benutze ich den Befehl $testdata (macht aber ohne Rückantwort keinen Sinn, siehe Teil 8) , dann den Befehl $writefile, um eine Datei auf dem Server zu erzeugen. Zum Schluß lege ich noch einen Eintrag im Register an .





In diesem Teil sende ich einen Befehl per UDP und gebe dem Paket mit, wem es die aufbereitete Rückantwort senden soll. Das macht bei Geräten Sinn, bei denen keine TCP-Verbindung möglich ist (WLAN, UDP über Werksfunk, etc.)

Die Daten werden dann bereits aufbereitet an die Zieladresse gesendet. Im hinteren Teil des Paketes befindet sich der Serverbefehl und im vorderen Teil die Informationen für die Zieladresse der Rückantwort.

Damit man es besser sehen kann, simuliere ich hier zwei UDP-Empfänger. Einmal mit Port 10010 und einmal mit Port 10020.



Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  WebServer mit Ethernet Shield--->Fehler im Programm Wampo 0 2.019 22.08.2013 13:13
Letzter Beitrag: Wampo

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste