[Gelöst] Fehlermeldung im LOG, DOIF wird aber ausgeführt.

Begonnen von CarstenF, 08 August 2016, 11:06:11

Vorheriges Thema - Nächstes Thema

CarstenF

Hallo zusammen,
ich habe mit dem DOIF eine Automatisierung laufen, welche aus einem Reading Werte holt und dann auf ein LCD Display schreibt. Das DOIF wird auch ausgeführt, jedoch schreibt FHEM eine Fehlermeldung ins LOGFILE.

([Display1:"scrollingState: 1"]) ({system("wget -q -O- 'http://192.168.1.26/control?cmd=lcd,1,1,".ReadingsVal("Display1","Line1","n.n")."'")})
DOELSEIF ([Display1:"scrollingState: 2"]) ({system("wget -q -O- 'http://192.168.1.26/control?cmd=lcd,2,1,".ReadingsVal("Display1","Line2","n.n")."'")})
DOELSEIF ([Display1:"scrollingState: 3"]) ({system("wget -q -O- 'http://192.168.1.26/control?cmd=lcd,1,1,".ReadingsVal("Display1","Line3","n.n")."'")})
DOELSEIF ([Display1:"scrollingState: 4"]) ({system("wget -q -O- 'http://192.168.1.26/control?cmd=lcd,2,1,".ReadingsVal("Display1","Line4","n.n")."'")})
DOELSEIF ([Display1:"scrollingState: 5"]) ({system("wget -q -O- 'http://192.168.1.26/control?cmd=lcd,1,1,".ReadingsVal("Display1","Line5","n.n")."'")})
DOELSEIF ([Display1:"scrollingState: 6"]) ({system("wget -q -O- 'http://192.168.1.26/control?cmd=lcd,2,1,".ReadingsVal("Display1","Line6","n.n")."'")})
DOELSEIF ([Display1:"scrollingState: 7"]) ({system("wget -q -O- 'http://192.168.1.26/control?cmd=lcd,1,1,".ReadingsVal("Display1","Line7","n.n")."'")})


Das Modul wo die Werte herkommen heißt DLCD und ist nicht offiziell eingecheckt, ist aber glaube ich für die Fehlermeldung nicht relevant. Display1 ist hier in diesem Fall der Name des DLCD Moduls. Wenn also ein bestimmter scrollingState im Event erscheint, soll das DOIF den Wert aus einem weiteren Reading ( Line1, Line2 etc) über http auf das Display schreiben.

Die "error" Meldung im Doif sieht so aus

{system("wget -q -O- 'http://192.168.1.26/control?cmd=lcd,1,1,".ReadingsVal("Display1","Line5","n.n")."'")}: -1

Der Fehler aktualisiert sich jedesmal, wenn eine neue Aktion ausgeführt wird. Dan heißt die Fehlermeldung nicht mehr Line5, sondern Line6 etc.

Gebe ich eine der DOIF Aktionen manuell über die Eingabezeile ein, wird sie ausgeführt, jedoch schmeißt FHEM als "Ausgabewert" die auch oben ersichtliche " -1 " aus.
Hat jemand eine Idee wo in dem Code der Fehler ist? Danke fürs drüberschauen schon mal....

Gruß Carsten
Raspberry Pi4
CUL 868, CUL 433, LaCrosse Gateway, Zigbeetomqtt2, HUE, Homematic
Max-Cube umgeflasht
MAX!, FhemtoFhem, Homebridge, FhemConnector, IR_Gateway und sonst auch noch allerlei Spielzeug....

betateilchen

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

CarstenF

Sorry, vllt. falsch ausgedrückt... Also im Reading erscheinen Fehler die so aussehen

error
{system("wget -q -O- 'http://192.168.1.26/control?cmd=lcd,1,1,".ReadingsVal("Display1","Line7","n.n")."'")}: -1
2016-08-08 11:18:33


Und im Logfile steht nach jeder Ausführung

2016.08.08 11:20:00 1: PERL WARNING: Use of uninitialized value in string eq at fhem.pl line 4558.
2016.08.08 11:20:03 2: Display1_doif: {system("wget -q -O- 'http://192.168.1.26/control?cmd=lcd,1,1,".ReadingsVal("Display1","Line7","n.n")."'")}: -1

...jeweils mit der entsprechenden LINE aus dem DLCD Reading

Gruß Carsten
Raspberry Pi4
CUL 868, CUL 433, LaCrosse Gateway, Zigbeetomqtt2, HUE, Homematic
Max-Cube umgeflasht
MAX!, FhemtoFhem, Homebridge, FhemConnector, IR_Gateway und sonst auch noch allerlei Spielzeug....

Ellert

Wenn Du an system(...) die Anweisung return 0 anhängst sollte die Meldung verschwinden.

CarstenF

Danke Ellert,

Muß return 0 hinter jede "System (..) Ausführung?
Falls ja, wo genau kommt das denn hin?

({system("wget -q -O- 'http://192.168.1.26/control?cmd=lcd,1,1,".ReadingsVal("Display1","Line1","n.n")."'")return 0;}) So?

Gruß Carsten
Raspberry Pi4
CUL 868, CUL 433, LaCrosse Gateway, Zigbeetomqtt2, HUE, Homematic
Max-Cube umgeflasht
MAX!, FhemtoFhem, Homebridge, FhemConnector, IR_Gateway und sonst auch noch allerlei Spielzeug....

Ellert


CarstenF

Hallo Ellert,

mit einem ";" hatte ich auch schon probiert. Zwei waren die Lösung. Jetzt sind  die "Errors" aus dem Reading raus.

vielen Dank
Raspberry Pi4
CUL 868, CUL 433, LaCrosse Gateway, Zigbeetomqtt2, HUE, Homematic
Max-Cube umgeflasht
MAX!, FhemtoFhem, Homebridge, FhemConnector, IR_Gateway und sonst auch noch allerlei Spielzeug....

ComputerZOO

Moin,
Thread ist zwar schon etwas älter, aber ich hätte da auch noch eine Frage in die Richtung:
Ist es möglich ein system("wget xyz") zur Abfrage einer Bedingung im DOIF zu nutzen?

define di.updatecheck DOIF ([20:00] and {system("wget xyz")} ne "") (mach-dies-mach-das)

KernSani

Was spricht dagegen es auszuprobieren? Im Bedingungsteil von DOIF brauchst du übrigens keine geschweiften Klammern.
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

ComputerZOO

Zitat von: KernSani am 06 Mai 2017, 19:47:49
Was spricht dagegen es auszuprobieren? Im Bedingungsteil von DOIF brauchst du übrigens keine geschweiften Klammern.
;)
Bin wieder zu Hause, so etwas auf'm Handy zu machen ist dann doch etwas zu langwierig.

([08:30] and [sys.synology.ds415:DSM_update] eq "1") (
  set sys.msg.pushover msg Update für Synology DiskStation verfügbar title='🎁Update' sound='spacealarm')
DOELSEIF ([08:30] and {"wget -qO - http://fhem.de/fhemupdate4/svn/controls_fhem.txt | cat - FHEM/controls_fhem.txt | sort | uniq -u | cut -d "/" -f 2 | sort | uniq | tr "\n" " "."X"; return 0"} !~ "REV") (
  set sys.msg.pushover msg Updates für FHEM verfügbar title='🎁Updates' sound='spacealarm')

Das scheint zu funktionieren, mal sehen, was morgen früh um 08:30 Uhr passiert.