FHEM Forum

FHEM => Codeschnipsel => Thema gestartet von: Joe_D am 14 Dezember 2019, 21:25:01

Titel: Modulvorstellung 98_FIFO.pm
Beitrag von: Joe_D am 14 Dezember 2019, 21:25:01
Hallo Zusammen,

zum Einstand möchte ich angehängtes Modul 98_FIFO.pm vorstellen, das ich geschrieben habe um Temperaturen, Drehzahlen, Ströme, Spannungen etc. pp. einfach bei Änderung in FHEM als Reading einzulesen - ohne telnet, web oder MQTT... Dazu hört das FIFO-Device an einer named pipe und legt empfangene Daten jeweils als Reading an.

Devicedefinition: define myFIFO FIFO /var/tmp/mypipe

Die named pipe muss zuvor mit mkfifo /var/tmp/mypipe angelegt werden. FHEM muss auf diese pipe lesend zugreifen können!

Mit anderen Programmen oder Skripten kann nun einfach in die pipe geschrieben werden. Das Format muss "ReadingName" [Tabulator] "ReadingWert" [linefeed] sein.

Also z.B. echo -e "Testwert\t66.2\n" > /var/tmp/mypipe

In FHEM sollte nun im Device myFIFO das Reading Testwert den Wert 66.2 haben.

FIFO unterstützt zudem die readingsFnAttributes - mit event-on-change-reading kann verhindert werden, das gleiche Werte Events erzeugen.

Gruß

  Jochen
Titel: Antw:Modulvorstellung 98_FIFO.pm
Beitrag von: Joe_D am 08 Februar 2020, 10:46:01
Wenn in der named pipe noch keine Daten drin sind, blockiert perl (oder linux?) leider den open-Aufruf was dann zu einem Blockieren von FHEM führt.

Anbei die neue Version ohne Blockierung.

Gruß

   Jochen