FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: mcBachmann am 15 Februar 2017, 20:56:29

Titel: Simples Übertragungsprotokoll
Beitrag von: mcBachmann am 15 Februar 2017, 20:56:29
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
Titel: Antw:Simples Übertragungsprotokoll
Beitrag von: P.A.Trick am 15 Februar 2017, 21:15:17
Ja schaue dir mal das MQTT Protokoll + Modul an!
Titel: Antw:Simples Übertragungsprotokoll
Beitrag von: mcBachmann am 15 Februar 2017, 21:40:26
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.
Titel: Antw:Simples Übertragungsprotokoll
Beitrag von: P.A.Trick am 15 Februar 2017, 22:21:05
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
Titel: Antw:Simples Übertragungsprotokoll
Beitrag von: efyzz am 15 Februar 2017, 22:50:21
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!
Titel: Antw:Simples Übertragungsprotokoll
Beitrag von: Florian_GT am 15 Februar 2017, 23:05:25
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...
Titel: Antw:Simples Übertragungsprotokoll
Beitrag von: Thorsten Pferdekaemper am 16 Februar 2017, 10:55:19
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
Titel: Antw:Simples Übertragungsprotokoll
Beitrag 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.
Titel: Antw:Simples Übertragungsprotokoll
Beitrag von: Florian_GT am 18 Februar 2017, 00:12:19
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...
Titel: Antw:Simples Übertragungsprotokoll
Beitrag von: mcBachmann am 18 Februar 2017, 08:09:47
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.
Titel: Antw:Simples Übertragungsprotokoll
Beitrag von: Icinger am 18 Februar 2017, 08:13:52
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
Titel: Antw:Simples Übertragungsprotokoll
Beitrag von: Thorsten Pferdekaemper am 18 Februar 2017, 10:08:57
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
Titel: Antw:Simples Übertragungsprotokoll
Beitrag von: mcBachmann am 18 Februar 2017, 20:42:57
Zitat von: Icinger am 18 Februar 2017, 08:13:52
Für spontan eingehende Daten gibts bei ECMD das:

lg, Stefan

Danke!
Titel: Antw:Simples Übertragungsprotokoll
Beitrag von: mcBachmann am 18 Februar 2017, 21:16:56
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.