Hallo,
für meine Anwendung möchte ich testen, ob ein HM-Aktor erreichbar ist.
In PERL habe ich es über
my $ostatus=ReadingsTimestamp("AussenSwitch","pct","0");
fhem "set AussenSwitch statusRequest";;
my $nstatus=ReadingsTimestamp("AussenSwitch","pct","0");
if ($ostatus eq $nstatus && $nstatus ne "0") {
...
versucht.
Also ich lese den Timestamp eines Readings, setzte einen statusRequest ab und lese, ob sich der TimeStamp geändert hat.
Leider ist das fhem "set AussenSwitch statusRequest";; vermutlich asynchron, so dass das zweite Lesen des TimeStamps vor der Ausführung stattfindet und ich gleiche Werte bekomme.
Gibt es eine Möglichkeit zu warten, bis der statusRequest ausgeführt wurde, oder gibt es eine einfachere Möglichkeit zu "pingen" ??
Greets
Byte
Du könntest ein sleep einbauen.
Etwas komplizierter: Per notify auf entsprechende Events reagieren um dann den entsprechend nächsten Schritt auszuführen.
OK, danke.
An ein Notify hatte ich auch schon gedacht, macht es komplizierter. Dann muss ich über ein weiteres Dummy festlegen, ob ich mich in einem Ping befinde, oder ob pct normal über das Einschalten geändert wurde...
Also habe ich keine Möglichkeit übersehen, danke ...
Greets
Byte
könnte man auch über actiondetector mit attr actAutoTry automatisch machen lassen. je nach konfiguration eventuell etwas träge.
Kann ich denn über Perl eine globale Variable erstellen und später abfragen?
Das erspart mir den dummy. Dann würde ich in perl bleiben.
Vermute doch, dass es geht, da vermutlich die gesamte Datenstruktur im Speicher ist (Arrays oder Strukturen)
Greets
Byte