Hallo,
für meine Rollladensteuerung (DUOFERN) und dessen Visualisierung in Tablet-UI habe ich ein userReadings angelegt.
attr DUOFERN_Arbeitszimmer userReadings statePosition{
if(ReadingsVal($name,"moving","0") eq "up" or ReadingsVal($name,"moving","0") eq "down")
{ReadingsVal($name,"moving",0)}
elseif(ReadingsVal($name,"state","0") eq "closed" or ReadingsVal($name,"state","0") eq "opened")
{ReadingsVal($name,"state",0)}
else {ReadingsVal($name,"position",0)}}
leider bekomme ich immer eine Fehlermeldung:
Error evaluating DUOFERN_Arbeitszimmer userReading statePosition: syntax error at (eval 10182) line 5, near ") {"
Habt Ihr einen Tip für mich?
gruß
Matthias
Ich hab's jetzt nicht im Detail durch aber was mir aufgefallen ist: elseif müsste in perl elsif lauten: https://perldoc.perl.org/functions/elseif.html
Vielleicht hilft das...
Ansonsten mal Klammern "zählen" (hab ich jetzt nicht aber sieht nicht so verkehrt aus)...
Gruß, Joachim
Danke für den Hinweiß
habe ich gleich geändert, aber nach wie vor die gleiche Fehlermeldung :-(
mmh,
ich habe das userReadings jetzt mal gelöscht und FHEM neu gestartet aber unter Readings ist statePosition immer noch mit der Fehlermeldung da?
In der FHEM.cfg steht auch nix mehr von der statePosition...
verstehe ich nicht
Readings werden nicht gelöscht -> deletereading
- aber in Zeile 4 ist nach der letzten Klammer noch 1 Zeichen, die könnten stören
Gruß Otto
Danke, das Leerzeichen wird es gewesen sein.
Wie kann ich das Ergebnis des userReadings anschauen?
???
Im Reading?
Oder wie meinst Du das?
Mein gesetztes userReading mit der If Anweisung wird mir nicht in der Übersicht Readings angezeigt, hätte jetzt erwartet das der Rückgabewert der IF Anweisung hier mit gelistet ist.
Wo kann ich den das Ergebnis anschauen? in der log Datei des device habe ich auch nix gefunden....
gruß
ZitatDiese benutzerdefinierte Readings werden bei jeder Aktualisierung der Gerätereadings gesetzt, indem das spezifizierte perl code { <perl code> } ausgeführt wird, und dessen Wert dem Reading zugewiesen wird.
Wenn dein Gerät DUOFERN_Arbeitszimmer seine Readings aktualisiert sollte auch das Userreading aktualisiert werden.
mach mal ein list DUOFERN_Arbeitszimmer
Gruß Otto
Internals:
CODE 61F129
DEF 61F129
IODev Rademacher
LASTInputDev Rademacher
MODEL RolloTron Comfort Master
MSGCNT 40
NAME DUOFERN_Arbeitszimmer
NR 38
Rademacher_MSGCNT 40
Rademacher_RAWMSG 0FFF0F21010050000000410014000461F129FFFFFF01
Rademacher_TIME 2018-07-05 11:55:14
STATE opened
SUBTYPE RolloTron Comfort Master
TYPE DUOFERN
OLDREADINGS:
READINGS:
2018-07-05 11:55:14 dawnAutomatic off
2018-07-05 11:55:14 duskAutomatic off
2018-07-05 11:55:14 manualMode off
2018-07-05 11:55:14 moving stop
2018-07-05 11:55:14 position 0
2018-07-05 11:55:14 state opened
2018-07-05 11:55:14 sunAutomatic off
2018-07-05 11:55:14 sunMode off
2018-07-05 11:55:14 sunPosition 65
2018-07-05 11:55:14 timeAutomatic on
2018-07-05 11:55:14 ventilatingMode off
2018-07-05 11:55:14 ventilatingPosition 80
2018-07-05 11:55:14 version 1.4
helper:
Attributes:
IODev Rademacher
room DUOFERN
userReadings statePosition{
if(ReadingsVal($name,"moving","0") eq "up" or ReadingsVal($name,"moving","0") eq "down")
{ReadingsVal($name,"moving",0)}
elsif(ReadingsVal($name,"state","0") eq "closed" or ReadingsVal($name,"state","0") eq "opened")
{ReadingsVal($name,"state",0)}
else {ReadingsVal($name,"position",0)}}
Leider kein Rückgabe wert des userReadings .-(
Ich weiß es auch nicht, sieht eigentlich gut aus. Probier doch einfach erstmal ein kleines Stück.
test {ReadingsVal($name,"state","0")}
Gruß Otto
Internals:
CODE 61F129
DEF 61F129
IODev Rademacher
LASTInputDev Rademacher
MODEL RolloTron Comfort Master
MSGCNT 42
NAME DUOFERN_Arbeitszimmer
NR 38
Rademacher_MSGCNT 42
Rademacher_RAWMSG 0FFF0F21010050000000410414000461F129FFFFFF01
Rademacher_TIME 2018-07-05 15:38:18
STATE 4
SUBTYPE RolloTron Comfort Master
TYPE DUOFERN
OLDREADINGS:
READINGS:
2018-07-05 15:38:18 dawnAutomatic off
2018-07-05 15:38:18 duskAutomatic off
2018-07-05 15:38:18 manualMode off
2018-07-05 15:38:18 moving stop
2018-07-05 15:38:18 position 4
2018-07-05 15:38:18 state 4
2018-07-05 15:38:18 sunAutomatic off
2018-07-05 15:38:18 sunMode off
2018-07-05 15:38:18 sunPosition 65
2018-07-05 15:38:18 test 4
2018-07-05 15:38:18 timeAutomatic on
2018-07-05 15:38:18 ventilatingMode off
2018-07-05 15:38:18 ventilatingPosition 80
2018-07-05 15:38:18 version 1.4
helper:
Attributes:
IODev Rademacher
room DUOFERN
userReadings test {ReadingsVal($name,"state","0")}
das geht!
Na dann taste Dich mal Stück für Stück vorwärts. Ich vermute Dein ursprünglicher Code wird zwar fehlerfrei ausgeführt, aber ohne Ergebnis. ;)
mit der Variablen test geht es.
Kann es sein das statePosition irgendwo anders verwendet wird?