IF Abfrage funktioniert nicht

Begonnen von StefanJoe, 07 Januar 2016, 22:34:25

Vorheriges Thema - Nächstes Thema

RoBra81

Guten Morgen,

darf ich mal zurück zum Thema kommen: auch bei mir funktionieren diverse IFs nicht mehr, nachdem ich am Wochenende mal wieder ein Update gemacht habe. Ein einfaches notify wie

define OG.ks.WS.NachttischFelix.not.Short notify OG.ks.WS.NachttischFelix.Taste..Short.* IF ([OG.ks.LI.Sterne] eq "off") (set OG.ks.LI.Sterne.RP on-for-timer 300) ELSE (set OG.ks.LI.Sterne off)


das noch bis vor dem Update problemlos lief, liefert jetzt folgende Zeile im Log:

2016.01.17 21:29:37.429 3: OG.ks.WS.NachttischFelix.not.Short return value: Unknown command if, try help.

Was kann da schief gelaufen sein?

Ronny

Zrrronggg!

#16
Meine letzte Antwort bezog sich genau auf die Frage des Threaderstellers, mehr "on Topic" geht nicht finde ich. Okay, dazwischen gab es "bisschen" off Topic  ;D

Ich glaube jedenfalls, das sein Fall nicht mit IF zu tun hat, sondern mit eigentheiten des Whatsapp moduls.

Zu deinem Problem fällt mir erstmal nichts ein, ausser das es vielleicht keine gute Idee ist Punkte in defines und Devicenamen zu verwenden. Punkte haben in Perl bzw bei regexp ja eine funktionale Bedeutung, dass kann zu Verwirrungen führen.

Als Abstandshalter empfiehlt sich der underscore "_"

FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL

RoBra81

Hallo,

sorry, ich habe erstmal nur die Off-topic-Antworten dazwischen gesehen. Das mit den Punkten hat bisher immer funktioniert, erst seit dem update funktionieren die notifys mit IF nicht mehr...

Ronny

Zrrronggg!

"Hat bisher immer funktioniert" muss ja nix heissen. %NAME hat "bisher" auch immer funktioniert. ;D
FHEM Updates bringen machmal eben verändertes verhalten mit, besonders an solchen Stellen, die man eigentlich nicht oder nicht mehr machen soll.

Aber gut, ich weiss es nicht, dass war mir nur aufgefallen.

Aber probiers doch einfach mal aus. Ändere den Namen Probeweise auf

OG_ks_WS_Nachttisch (etc etc)

FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL

RoBra81

Das merkwürdige ist doch aber, dass ich im notify das IF groß schreibe und die Meldung im Log meint, er kenne if (kleingeschrieben) nicht...

Prof. Dr. Peter Henning

Wieso merkwürdig ? Das eine ist FHEM-Code, das andere Perl-Code.

LG

pah

Damian

Zitat von: RoBra81 am 18 Januar 2016, 08:53:11
Guten Morgen,

darf ich mal zurück zum Thema kommen: auch bei mir funktionieren diverse IFs nicht mehr, nachdem ich am Wochenende mal wieder ein Update gemacht habe. Ein einfaches notify wie

define OG.ks.WS.NachttischFelix.not.Short notify OG.ks.WS.NachttischFelix.Taste..Short.* IF ([OG.ks.LI.Sterne] eq "off") (set OG.ks.LI.Sterne.RP on-for-timer 300) ELSE (set OG.ks.LI.Sterne off)


das noch bis vor dem Update problemlos lief, liefert jetzt folgende Zeile im Log:

2016.01.17 21:29:37.429 3: OG.ks.WS.NachttischFelix.not.Short return value: Unknown command if, try help.

Was kann da schief gelaufen sein?

Ronny

Wenn über die Kommandozeile IF ([OG.ks.LI.Sterne] eq "off") (set OG.ks.LI.Sterne.RP on-for-timer 300) ELSE (set OG.ks.LI.Sterne off) funktioniert, dann sollte es auch mit notify funktionieren, ansonsten hast du den FHEM-IF-Befehl bei dir nicht.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

StefanJoe

Hallo zusammen,
sorry - aber ich hatte mich die letzten Tage mehr mit meinem Heizungsmodul beschäftigt :)

Habe gerade noch ein bisschen was getestet, der Fehler scheint eher vom notify her zu kommen...

Sobald ich durch HandyStefan:message ein notify auslösen lassen will, kommen diese merkwürdigen Fehlermeldungen.
Mit einem anderen Trigger

define notifyHandyS notify IT_0FFFFF0FFF IF (HandyStefan:message eq "message: test") (set IT_0FFFF00FFF on)

passiert folgendes:

2016.01.22 00:01:45 3: notifyHandyStefan return value: syntax error at (eval 180377) line 1, near "HandyStefan:"
syntax error at (eval 180377) line 1, near "}}"


Weiß jemand was das sein könnte ?

Zrrronggg!

Zitat von: Prof. Dr. Peter Henning am 21 Januar 2016, 17:17:05
Wieso merkwürdig ? Das eine ist FHEM-Code, das andere Perl-Code.

LG

pah

Eben. Er meint, dass er fhem IF verwendet, aber eine Fehlermeldung für Perl-if bekommt, das er gar nicht verwendet hat. Das ist mir auch aufgefallen und ich fand das auch merkwürdig.

FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL

Zrrronggg!

Zitat von: StefanJoe am 22 Januar 2016, 00:04:31
Habe gerade noch ein bisschen was getestet, der Fehler scheint eher vom notify her zu kommen...

Sobald ich durch HandyStefan:message ein notify auslösen lassen will, kommen diese merkwürdigen Fehlermeldungen.
Mit einem anderen Trigger

define notifyHandyS notify IT_0FFFFF0FFF IF (HandyStefan:message eq "message: test") (set IT_0FFFF00FFF on)

passiert folgendes:

2016.01.22 00:01:45 3: notifyHandyStefan return value: syntax error at (eval 180377) line 1, near "HandyStefan:"
syntax error at (eval 180377) line 1, near "}}"


Weiß jemand was das sein könnte ?
Na das die Sytnax des IF Befehls irgendwie falsch ist. Ich kenne den wie gesagt nicht und les das jetzt auch nicht genau nach.

Ansonsten ist das jetzt der umgekehrte Fall deines Eingangsposts oder?

Könnten wir bei einem 1. Problem bleiben und das erstmal lösen damit wir uns nicht dauernd in was neues reindenken müssen?
FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL

Prof. Dr. Peter Henning

Nur abgesehen davon, dass es mir vollkommen unverständlich ist, warum jemand sich mit geschachtelten FHEM-Scripten befasst (statt des viel einfacheren DOIF an dieser Stelle, oder eines sauberen Perl-Codes...): Natürlich hat er (eben im "Innern" des Moduls) ein Perl-if verwendet...

LG

pah

Zrrronggg!

ZitatNur abgesehen davon, dass es mir vollkommen unverständlich ist, warum jemand sich mit geschachtelten FHEM-Scripten befasst (statt des viel einfacheren DOIF an dieser Stelle, oder eines sauberen Perl-Codes...)
da bin ich ja bei dir. Aber den IF Befehl gibts ja nun mal (ich war damals wenn ich mich erinnere vor der Entwicklung skeptisch u.a. wegen erwarteter Konfusion mit "if") und ich will versuchen zu helfen. Leider schwer, weil ich IF auch nicht verwende.

ZitatNatürlich hat er (eben im "Innern" des Moduls) ein Perl-if verwendet...

Den Verdacht hatte ich auch schon, nahm aber auch an, dass die Perl-Fehlermeldungen die bei der Ausführung des Moduls anfallen vom Modul irgendwie abgefangen oder gar interpretiert würden. Vermutlich kann man aber gar nicht verhindern, dass die Perl Fehlermeldung ins Log durchschlagen.

Für den Anfänger aber eben doch verwirrend.

Ach was Anfänger: Ich kapiere die Fehlermeldung auch nicht.
FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL