System.Ping starten und stoppen

Anbindung von FS20-Komponenten, ELV-Wetterstationen, EnOcean und DMX an HomeMatic

Moderator: Co-Administratoren

Benutzeravatar
uwe111
Beiträge: 4821
Registriert: 26.02.2011, 22:22
Hat sich bedankt: 3 Mal
Danksagung erhalten: 246 Mal
Kontaktdaten:

Re: System.Ping starten und stoppen

Beitrag von uwe111 » 30.11.2015, 19:45

hug0 hat geschrieben:Das ist normal, oder? Also ausgeführte Skripte sind blockierend?
Ja, ausgeführte HM-Scripte blockieren andere HM-Scripts. Deshalb gibt es in der HM-Scriptsprache auch keinen wait() Befehl.
Am besten fährst Du, wenn Du alles auf ereignisgesteuert statt sequentiell umstellst.

Viele Grüße

Uwe
Alle sagten: Das geht nicht. Dann kam einer, der wußte das nicht und hat's einfach gemacht.
SPENDEN :wink: Download: CUxD 2.11, SSH KeyDir

danberg
Beiträge: 106
Registriert: 15.11.2015, 23:03

Re: System.Ping starten und stoppen

Beitrag von danberg » 01.12.2015, 14:37

Hallo

Also noch ein Grund für ein System.Ping das aktivier-/deaktivierbar ist, da es bei Realisierung über System.Exec zu Blockierungen kommt (oder habe ich das jetzt falsch verstanden ?).

Viele Grüsse
Danberg
Viele Grüsse Danberg
__________________________
RaspberryMatic@RPi2 / FW 2.27.8.20170410

hug0
Beiträge: 178
Registriert: 03.06.2013, 08:11

Re: System.Ping starten und stoppen

Beitrag von hug0 » 01.12.2015, 14:41

Ja, würde ich sagen! :P

Benutzeravatar
uwe111
Beiträge: 4821
Registriert: 26.02.2011, 22:22
Hat sich bedankt: 3 Mal
Danksagung erhalten: 246 Mal
Kontaktdaten:

Re: System.Ping starten und stoppen

Beitrag von uwe111 » 01.12.2015, 15:20

danberg hat geschrieben:oder habe ich das jetzt falsch verstanden ?
Ja, falsch verstanden! :mrgreen: CUxD-System.Exec arbeitet ereignisorientiert.

Es liegt an Dir, wie Du das Problem dann auf der CCU umsetzt. Du musst ja nicht auf den Rückgabewert eines System.Exec Aufrufes warten.

Viele Grüße

Uwe
Alle sagten: Das geht nicht. Dann kam einer, der wußte das nicht und hat's einfach gemacht.
SPENDEN :wink: Download: CUxD 2.11, SSH KeyDir

hug0
Beiträge: 178
Registriert: 03.06.2013, 08:11

Re: System.Ping starten und stoppen

Beitrag von hug0 » 01.12.2015, 15:25

Naja, beim Ping dann schon, oder? Wenn der Ping erfolgreich ist, geht das auch recht fix, aber sonst habe zumindest ich aktuell immer eine kleine Latenz in anderen Programmen durch den Timeout...

Benutzeravatar
uwe111
Beiträge: 4821
Registriert: 26.02.2011, 22:22
Hat sich bedankt: 3 Mal
Danksagung erhalten: 246 Mal
Kontaktdaten:

Re: System.Ping starten und stoppen

Beitrag von uwe111 » 01.12.2015, 17:06

hug0 hat geschrieben:Naja, beim Ping dann schon, oder?
:? Nein! Das Problem hast Du nur dann, wenn Du im HM-Script auf die Rückgabe von irgendetwas wartest.
Und die Idee hinter der ereignisgesteuerten Programmierung ist ja gerade, das man nicht mehr aktiv auf Ereignisse wartet.
(siehe hier: https://de.wikipedia.org/wiki/Ereignis_ ... mierung%29)

Viele Grüße

Uwe
Alle sagten: Das geht nicht. Dann kam einer, der wußte das nicht und hat's einfach gemacht.
SPENDEN :wink: Download: CUxD 2.11, SSH KeyDir

hug0
Beiträge: 178
Registriert: 03.06.2013, 08:11

Re: System.Ping starten und stoppen

Beitrag von hug0 » 01.12.2015, 22:53

Hm, kann ich leider nicht folgen.
Wie kann ich denn das Ergebnis des Ping-Befehls auswerten, ohne auf dessen Rückgabewert zu warten?
Danke! Thorsten

Benutzeravatar
uwe111
Beiträge: 4821
Registriert: 26.02.2011, 22:22
Hat sich bedankt: 3 Mal
Danksagung erhalten: 246 Mal
Kontaktdaten:

Re: System.Ping starten und stoppen

Beitrag von uwe111 » 02.12.2015, 09:27

hug0 hat geschrieben:Wie kann ich denn das Ergebnis des Ping-Befehls auswerten, ohne auf dessen Rückgabewert zu warten?
Mir fallen da spontan 2 Möglichkeiten ein:
  1. Beim Beenden des durch CUxD-System.Exec aufgerufenen Prozesses wird ein Ereignis ausgelöst. Das könntest Du triggern.
  2. Du kannst die komplette Verarbeitung des Ergebnisses einschließlich dem Setzen von CCU-Systemvariablen in dem durch CUxD-System.Exec aufgerufenen Script vornehmen. Ich denke, das wäre die optimale Lösung.
Viele Grüße

Uwe
Alle sagten: Das geht nicht. Dann kam einer, der wußte das nicht und hat's einfach gemacht.
SPENDEN :wink: Download: CUxD 2.11, SSH KeyDir

hug0
Beiträge: 178
Registriert: 03.06.2013, 08:11

Re: System.Ping starten und stoppen

Beitrag von hug0 » 02.12.2015, 09:29

Ok, verstehe. Danke für den Tipp! Bis dato ist mein aufgerufener Prozess direkt der Ping-Befehl...

danberg
Beiträge: 106
Registriert: 15.11.2015, 23:03

Re: System.Ping starten und stoppen

Beitrag von danberg » 02.12.2015, 11:38

Hallo

OK, aber noch nicht ganz verstanden:

Ist es richtig,

dass bei 1.:
'nur' der Ereignis-Code abgefragt werden kann und nicht StdOut (ping scheint im weiteren keinen dem Resultat
entsprechenden Exit-Code zurückzugeben) ?

dass bei 2.:
ein 'Linux'-Script erstellt werden muss, dass dann über CMD_Exec ausgeführt wird ?

Danke und viele Grüsse
Danberg
Viele Grüsse Danberg
__________________________
RaspberryMatic@RPi2 / FW 2.27.8.20170410

Antworten

Zurück zu „CUxD“