[GELÖST] Ins Log einen aktuellen Readingswert schreiben (per Readingsval)

Begonnen von Dirk070, 20 Februar 2020, 18:15:54

Vorheriges Thema - Nächstes Thema

Dirk070

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

KernSani

#1
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
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Dirk070

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.....

KernSani

oben nochmal angepasst... habe leider gerade keinen Zugriff auf ein System, wo ich das testen könnte ;-)
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Dirk070


Dirk070

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!