Hallo zusammen,
ich komme an einer Stelle nicht weiter.
Ich habe ein komplexeres Konstrukt in meiner 99_myutils. Dort wird gerpüft, ob Rolladen wirklich gefahren sind.
Dazu nutze ich ein Konstrukt aus einem FHEM-Sleep.
Ich würde gerne dazu im Fehlerfall die aktuelle Position der Rolladen im Log ausgeben.
Folgendes Coding habe ich in einen Test-Notify gepackt:
TestDummy
{
Log 1, "Test_NOTIFY >>>>>>>>>>>>>>>>>";
fhem("sleep 0.5; {Log 1, \"Test ReadingsVal(\"CCU_EG_WZ_Bl1PBU_GAL\",\"control\",0)\"}");
return
}
Fehlermeldungen:
PERL WARNING: Bareword found where operator expected at (eval 191448) line 1, near ""Test ReadingsVal("CCU_EG_WZ_Bl1PBU_GAL"
After sleep: syntax error at (eval 191448) line 1, near ""Test ReadingsVal("CCU_EG_WZ_Bl1PBU_GAL"
Ich habe nun schon diverse Varianten ausprobiert, komme aber nicht weiter.
Kann mir dazu netterweise jemand einen Tipp geben?
PS:
Eine Abfrage per If, die auch den Readingsval nutzt, funktioniert übrigens:
fhem( "sleep 60; {if (ReadingsVal(\"$Rollade\", \"control\", \"\") ne \"$Drive\")
Das Coding ist gekürzt....
Also die Abfrage funktioniert, aber ich bekomme den Wert nicht ins Log.
Und ich brauche an dieser Stelle den aktuellen Wert und kann daher nicht eine Variable vor der Befehlskette füllen.
Vielen Dank vorab schonmal für Eure Hilfe.
Viele Grüße
Dirk
Ich denke es wäre wesentlich übersichtlicher, etwas in der Art zu machen (ungetestet):
fhem("sleep 0.5; { Log 1, \"Test \".ReadingsVal(\"CCU_EG_WZ_Bl1PBU_GAL\",\"control\",0);
Edit: Vergessen, dass sleep ja was danach braucht, sonst blockiert es... Aber trotzdem müsstest du den Aufruf von ReadingVal aus dem dem String rausnehmen
Ja, stimmt. Greift der FHEM-Sleep denn für die nachfolgenden Befehle?
In diesem Fall den Perl-Log-Befehl?
Ich hätte vermutet, dass damit der Perl-Teil losrennt und ein FHEM-Prozess wartet.....
oben nochmal angepasst... habe leider gerade keinen Zugriff auf ein System, wo ich das testen könnte ;-)
Danke, ich teste das, ist ja "mein Problem" ;)
Zitat von: KernSani am 20 Februar 2020, 18:36:33
Ich denke es wäre wesentlich übersichtlicher, etwas in der Art zu machen (ungetestet):
fhem("sleep 0.5; { Log 1, \"Test \".ReadingsVal(\"CCU_EG_WZ_Bl1PBU_GAL\",\"control\",0);
Edit: Vergessen, dass sleep ja was danach braucht, sonst blockiert es... Aber trotzdem müsstest du den Aufruf von ReadingVal aus dem dem String rausnehmen
Fast ;)
So klappts:
fhem("sleep 0.5; {Log 1, \"Test \".ReadingsVal(\"CCU_EG_WZ_Bl1PBU_GAL\",\"control\",0)}");
Vielen Dank für die schnelle Hilfe!!! Top!