FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: FHEMAN am 17 Oktober 2023, 12:51:06

Titel: Rückgabewert im Ausführungsteil ignorieren
Beitrag von: FHEMAN am 17 Oktober 2023, 12:51:06
Hallo,

ich starte im Ausführungsteil eine Funktion, welche einen Rückgabewert hat.
Dies führt dazu, dass ich ein Reading Error erhalte mit dem Funktionsaufruf samt Rückgabewert.
Anscheinend weiß DOIF - vermutlich zu Recht - nicht, wie es mit dem Wert umgehen soll.
Habe ich eine Möglichkeit in DOIF, das Verhalten zu ändern?
Ich möchte die aufgerufene Funktion eher ungern anpassen.

Titel: Aw: Rückgabewert im Ausführungsteil ignorieren
Beitrag von: Damian am 17 Oktober 2023, 13:02:13
Wo siehst du den Fehler?
Titel: Aw: Rückgabewert im Ausführungsteil ignorieren
Beitrag von: FHEMAN am 17 Oktober 2023, 13:11:28
Nur im DOIF selbst. In der Form
Code : Rückgabewert
Nicht im Log oder anderweitig. Es sieht auch so aus, als hätte es keine weiteren Auswirkungen. Es gibt aber auch nur diesen einen Funktionsaufruf im Ausführungsteil.
Titel: Aw: Rückgabewert im Ausführungsteil ignorieren
Beitrag von: Damian am 17 Oktober 2023, 14:34:10
Wenn es FHEM-Modus ist, dann wird alles, was eine Rückgabe ungleich "" liefert als Fehler interpretiert, hat aber sonst keine Bewandtnis. 
Titel: Aw: Rückgabewert im Ausführungsteil ignorieren
Beitrag von: FHEMAN am 17 Oktober 2023, 15:07:52
Ist es dann richtig, dass auch das Zuweisen zu einer Variablen im Perl-Modus keine Abhilfe schafft?

error:    { my $result = fhem("setex MQTT2_zigbee_Schaltsteckdose.12 on UeberschussAutoOn") }: on

setex ist ein cmdalias und gibt mir den State zurück. (Ich benötige das an anderer Stelle, da ich viel mit FILTER arbeite und sonst nicht weiß, ob überhaupt ein Gerät die Filterbedingungen erfüllt.)
Titel: Aw: Rückgabewert im Ausführungsteil ignorieren
Beitrag von: Otto123 am 17 Oktober 2023, 15:49:38
Zitat von: FHEMAN am 17 Oktober 2023, 15:07:52Ist es dann richtig, dass auch das Zuweisen zu einer Variablen im Perl-Modus keine Abhilfe schafft?
return '' würde es tun. :)
Es wird immer der letzte zugewiesene Wert aus dem Perl Aufruf zurück gegeben, egal ob der in eine Variable gesteckt wird. Zum Test in der FHEM Komamndozeile
{my $val='willi'}{my $val='willi';;return ''}