Hallo,
nachdem ich durch Google & kurze Recherche durch die Module nicht fündig wurde, möchte ich meine Frage gern hier loswerden.
Gibt es bereits ein Modul mit welchem man eine minimale Datenübertragung z.B. zwischen FHEM und einem Arduino seriell in folgender Form realisieren könnte?
Verbindungsaufbau FHEM <-> Gerät:
FHEM: Connect:<Index 1>,<Index 2>,<Index 3>,<Index 4>
Gerät: Connect:Ok
Polling FHEM <-> Gerät:
FHEM: Data
Gerät: Data:123,456,213,134
Hintergrund: Ich hätte gern einen möglichst sparsamen Weg um möglichst viele Daten aus einem kleinen Gerät wie z.B. einem Atmega8 zu erhalten.
Dabei wäre es von Vorteil, wenn man dem Gerät sagen kann (durch den Connect) welche Daten es dann später auch liefern soll.
Index 1 könnte z.B. folgendes heißen:
0x01:0x01:0x03
0x01 - Basis
0x01 - 1. Instanz
0x03 - Spannung
Index 2:
0x01:0x01:0x05
0x01 - Basis
0x01 - 1. Instanz
0x05 - Timer Ticks
Index 3:
0x10:0x01:0x04
0x10 - PCA301 (aus aktuellem Anlass)
0x01 - 1. Instanz
0x04 - Status an oder aus
Index 04:
0x10:0x01:0x05
0x10 - PCA301
0x01 - 1. Instanz
0x05 - RSSI
Theoretisch könnte man das auch mit dem Key:Value Modul (36_KeyValueProtocol.pm) umsetzen, aber ich würde gern die eigentliche Kommunikation so gering wie möglich jedoch so konfigurierbar wie nötig halten. D.h. wer die Temperatur vom PCA301 nicht braucht fordert diese nicht an und erpart dem Gerät damit auch die Messung.
Die Interpretation der übertragenen Werte würde ich dann allein FHEM überlassen wollen und diese eventuell durch eine Art Beschreibungsdatei vorgeben. Also 0x10 wäre dann immer ein PCA301, 0x10:*:0x04 dann immer ein Boolean.
Gibt es dafür eventuell schon ein Modul was ich nutzen könnte?
Grüße
Sven
Ja schaue dir mal das MQTT Protokoll + Modul an!
Hallo Patrick,
danke für den Tipp. Hab mich gleich mal eingelesen und wenn ich das richtig verstanden habe, ist die bestehende MQTT Implementierung nicht dafür geeignet da diese ein Netzwerk voraussetzt. MQTT-SN klingt jedoch ganz gut. Da werde ich in diese Richtung mal weiter lesen.
Ah ok wenn du kein Netzwerk hast kannst du dir auch nochmal das ECMD Modul anschauen.
Damit habe ich auch schon einmal einen Arduino UNO an FHEM gestöpselt.
https://wiki.fhem.de/wiki/ECMD
Nabend,
genau, ECMD. Daran beiße ich mir allerdings gerade die Zähne aus, siehe https://forum.fhem.de/index.php/topic,62652.0.html (https://forum.fhem.de/index.php/topic,62652.0.html).
Wenn Du es hinbekommen hast, würde ich mich sehr freuen, wenn Du Deinen Lösungsweg hier kurz postest :)
Danke!
ECMD bzw. Seriell würde ich wenn du jetzt die Möglichkeit hast, durch MQTT ersetzen.
Ich habe schon viel mit ECMD herumhantiert, und muss sagen MQTT is the way to go.
Es gibt einige Geräte, da kommt man nicht an Seriell/Telnet vorbei, und an der Stelle stehe ich gerade. Bis dahin kann ich dir helfen, aber ich muss dir sagen, du bist dann trotzdem nicht glücklich.
Ich wollte als nächstes Suchen, ob es sowas wie ein RS232/RS485 to MQTT Gateway mit ESP8266 gibt. Das qwasi alle vom Port kommenden Nachrichten an den MQTT Broker schickt, und alle empfangenen auf den Port schreibt. Aber noch nicht einmal Zeit zum Suchen gefunden...
Hi,
wie wär's mit Homematic Wired in der Homebrew-Variante?
mySensors dürfte auch ähnliche Ansätze ermöglichen, aber HBW hat halt schon die Sache mit der Beschreibungsdatei.
Gruß,
Thorsten
Vielen Dank für die zahlreichen Antworten. Ich schau mir die anderen Lösungen mal an. MQTT/MQTT-SN würde ich jetzt ausschließen, da nach meinem jetzigen Lernstand dort immer nur ein Wert pro Paket übertragen werden kann, d.h. man würde im Funkbereich unnötig schnell die 1%-Regel (https://wiki.fhem.de/wiki/1%25_Regel (https://wiki.fhem.de/wiki/1%25_Regel)) erfüllen.
Zitat von: mcBachmann am 17 Februar 2017, 06:42:35
Vielen Dank für die zahlreichen Antworten. Ich schau mir die anderen Lösungen mal an. MQTT/MQTT-SN würde ich jetzt ausschließen, da nach meinem jetzigen Lernstand dort immer nur ein Wert pro Paket übertragen werden kann, d.h. man würde im Funkbereich unnötig schnell die 1%-Regel (https://wiki.fhem.de/wiki/1%25_Regel (https://wiki.fhem.de/wiki/1%25_Regel)) erfüllen.
Darum ja auch gleich ein ESP8266, der verbindet sich vernünftig an dein W-LAN und es gibt kein Stress mit der Bundesnetzagentur. Oder mit LAN gibt es da auch sicherlich was z.B. für das NETIO von Pollin...
ECMD habe ich mir jetzt kurz angeschaut. Sieht auf den ersten Blick ganz gut aus, da scheinbar die Auswertelogik komplett bei FHEM liegt und das Gerät wirklich nur als Rohdatenlieferant dienen kann. Ich habe jedoch noch nicht durchschaut, ob man Daten auch ohne Request senden darf. Z.B. eine Zustandsänderung wenn ein Fenster geöffnet wird.
Homematic als Homebrew scheint mir ein wenig zu viel. Genauso wie ein ESP8266 (von denen ich 2 rumliegen habe). Meine Frage zielt ja eher auf ein Übertragungsprotokoll statt eine fertige Lösung für bestimmte Sensoren ab.
Mir geht es darum, ein möglichst schmales Protokoll zu haben was z.B. auch auf einem Atmega8 läuft. Die Auswertelogik sollte dabei komplett im FHEM liegen und das Gerät soll einfach nur in der Lage sein, so viele Daten wie möglich zu verwalten, ohne den kompletten Speicher allein durch das Übertragungsprotokoll zu verbrauchen. Von Vorteil wäre es dabei, wenn die gelieferten Daten einen standardisierten Index haben um eine Art Plug & Play in FHEM zu ermöglichen. Eventuell hat das ECMD auch schon, da muss ich noch ein wenig Doku lesen.
Für spontan eingehende Daten gibts bei ECMD das:
Zitat
reading <reading> match "<regex>"
Declares a new reading named <reading>. A spontaneous data transmission from the physical device that matches the Perl regular expression <regex> is evaluated to become the value of the named reading.
lg, Stefan
Zitat von: mcBachmann am 18 Februar 2017, 08:09:47
Mir geht es darum, ein möglichst schmales Protokoll zu haben was z.B. auch auf einem Atmega8 läuft. Die Auswertelogik sollte dabei komplett im FHEM liegen und das Gerät soll einfach nur in der Lage sein, so viele Daten wie möglich zu verwalten, ohne den kompletten Speicher allein durch das Übertragungsprotokoll zu verbrauchen. Von Vorteil wäre es dabei, wenn die gelieferten Daten einen standardisierten Index haben um eine Art Plug & Play in FHEM zu ermöglichen.
Hast Du Dir auch schonmal mySensors angeschaut?
Gruß,
Thorsten
Zitat von: Icinger am 18 Februar 2017, 08:13:52
Für spontan eingehende Daten gibts bei ECMD das:
lg, Stefan
Danke!
Zitat von: Thorsten Pferdekaemper am 18 Februar 2017, 10:08:57
Hast Du Dir auch schonmal mySensors angeschaut?
Gruß,
Thorsten
Danke für den Hinweis, habe mir https://www.mysensors.org/download/serial_api_20 (https://www.mysensors.org/download/serial_api_20) mal angeschaut. Die Standardisierung der ganzen Quellen gefällt mir ganz gut.