Hauptmenü

Problem mit at und if

Begonnen von haneub, 30 Oktober 2023, 17:50:19

Vorheriges Thema - Nächstes Thema

haneub

Hallo,
hab jetzt alle Varianten durch, die mir einfallen, aber ich kriegs nicht zum laufen...
Ich will wenn Reading unlocked_by_card des devices myGoE = 1 ist nachts um 2 allow charging des selben devices auf 1 setzen.

Probiert habe ich:
define TibberNachtsAn at *2:00:00 {if ([myGoE:unlocked_by_card] == 1)  { fhem("set myGoE allow_charging 1") }}
define TibberNachtsAn at *2:00:00 {if ([myGoE:unlocked_by_card] == 1)  { fhem("set myGoE allow_charging 1");; }}
define TibberNachtsAn at *2:00:00 { fhem("set myGoE allow_charging 1") if ([myGoE:unlocked_by_card] == 1) }

nix davon geht. Die Fehlermeldungen helfen mir nicht (syntax error at (eval 1976129) line 1, near "myGoE:")
Wie gehts richtig?
[myGoE:unlocked_by_card] == 7 funktioniert in einem DOIF genau so problemlos...
Danke, Harald

KernSani

Hallo Harald,
Coding bitte immer in code tags formatieren. Das macht es lesbarer.
Ansonsten bist du in deinem notify mit Perl unterwegs, da musst du auch Perl verwenden (also ReadingsNum in deinem Fall).
Grüße Oli
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

betateilchen

if ([color=red][myGoE:unlocked_by_card][/color] == 1)
Das ist halt kein perl... vermutlich solltest Du dazu auch eine Fehlermeldung im Logfile finden.

[myGoE:unlocked_by_card] == 7 funktioniert in einem DOIF genau so problemlos...
Schlimm genug, dass so ein Unfug überhaupt irgendwo funktioniert. Aber das tut es nur, weil der "Erfinder" von DOIF das so haben wollte. Das hat weder etwas mit FHEM noch mit perl zu tun - sondern nur mit DOIF.

Und Dein Konstrukt ist halt auch kein DOIF.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

RalfRog

Schau mal hier gleich ins erste Beispiel (if & set).
https://wiki.fhem.de/wiki/AT_um_eine_Temperaturabh%C3%A4ngige_Nachtabsenkung_zu_realisieren

Ansonsten mal ins Wiki bzw. Commandref zu "at" schauen.
Gruß Ralf
FHEM auf Proxmox VM Bookworm (Futro S740) - nanoCUL, HM-MOD-RPI-PCB und MAX!Cube über LAN
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder sowie Shelly 3EM, 1PM, PlugS und IT Schaltsteckdosen

haneub

Zitat von: RalfRog am 30 Oktober 2023, 22:15:59Schau mal hier gleich ins erste Beispiel (if & set).
https://wiki.fhem.de/wiki/AT_um_eine_Temperaturabh%C3%A4ngige_Nachtabsenkung_zu_realisieren

Ansonsten mal ins Wiki bzw. Commandref zu "at" schauen.
Gruß Ralf

Herzlichen Dank, die Referenz deckt genau meinen Fall ab (und ich hatte es vorhher mit der Suche leider nicht gefunden).
Das DOIF und IF völlig verschieden sind hab ich nicht gewusst / erwartet.

rabehd

Es gibt at, notify, DOIF....
Es gibt IF und if...

Du wirst noch einiges lesen müssen.
Hier mußt du erstmal begreifen, dass DOIF etwas besonders ist, was at und notify mit eigenem Syntax "zusammenfasst".

Das wird schon, immer kleine Schritte machen und klare Fragen stellen.
Auch funktionierende Lösungen kann man hinterfragen.