Autor Thema: Status Fensterkontakt via Netcat senden  (Gelesen 1214 mal)

ukatz

  • Gast
Status Fensterkontakt via Netcat senden
« am: 30 August 2016, 19:11:55 »
Hallo Foren-Gemeinde

Ich habe ein Raspberry Pi mit dem entsprechenden Enocean-Modul. Angebunden sind vier Hoppe Fensterkontakte die den Status auf, gekippt und zu darstellen.

Aktuell parse ich intervallmäßig die FEHM-Webseite mit meinem Gira HomeServer nach diesen Informationen und setze darüber die Gruppenadressen in meinem KNX-System. Das funktioniert auch ganz gut.

Was mich stört ist, dass ich die Seite alle 30 Sekunden aktiv prüfen muss. So lange dauert es dann auch maximal bis eine Statusänderung von der Logik auf dem Homeserver weiterverarbeitet wird.

Ich würde gerne aktiv den Status bei Änderung via Netcat an den HomeServer senden.

Dazu habe ich bereits folgendes für die 99_util zusammengesucht:

sub send2HomeServer
{
  my $room = "$_[0]";
  my $state = "$_[1]";

  system("echo Raum:$room Status:$state | nc 192.168.1.4 7016 & pid=$! sleep 1 kill $pid 2>/dev/null >/dev/null");
}

Ich übergebe quasi Raum und Status.

Aber wie kann ich nun diese Funktion bei Statusänderung aufrufen?

Das übersteigt leider mein FHEM wissen. Ich hoffe ihr könnt mir hier helfen.

Gruß
Ukatz

Offline immi

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1070
Antw:Status Fensterkontakt via Netcat senden
« Antwort #1 am: 31 August 2016, 13:57:01 »
Aber wie kann ich nun diese Funktion bei Statusänderung aufrufen?
Ukatz
hi Ukatz
notify oder doif
http://fhem.de/commandref_DE.html#notify
http://fhem.de/commandref_DE.html#DOIF
immi

Offline Wernieman

  • Developer
  • Hero Member
  • ****
  • Beiträge: 7978
Antw:Status Fensterkontakt via Netcat senden
« Antwort #2 am: 12 September 2016, 20:12:36 »
Und noch etwas:
system("echo Raum:$room Status:$state | nc 192.168.1.4 7016 & pid=$! sleep 1 kill $pid 2>/dev/null >/dev/null");Da fehlen doch bestimmt ","?? und nc kennt auch einen "timeout", aus der man-page:
     -w timeout
             Connections which cannot be established or are idle timeout after
             timeout seconds.  The -w flag has no effect on the -l option,
             i.e. nc will listen forever for a connection, with or without the
             -w flag.  The default is no timeout.
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html