neuer FHEM-Befehl IF

Begonnen von Damian, 25 Dezember 2013, 23:50:06

Vorheriges Thema - Nächstes Thema

cwagner

Deine Erklärung zu $EVENT erklärt nun einiges (anderes) für mich. Deine ursprünglich vorgeschlagene Lösung gefällt mir inzwischen gut, ich kann Sie eben nicht mit trigger debuggen, sondern muss den Fenstergriff entsprechend handhaben. Im täglichen Betrieb ist die Lösung zuverlässlich und IF ist für mich im Vorteil, weil es verständlicher ist und die Einbindung von Readings intuitiv.

Vielen Dank dafür.

Christian
PI 2B+/5 Raspbian 12, Perl 5.36.0, FHEM 6.3: 295 Module in ConfigDB: Steuerung Heizkessel, FBH, Solarthermie, kontr. Lüftung mit WRG. Smarthome u.a. HMCUL, 1-Wire (FT232RL ; DS2480B), EnOcean (TCM EPS3), MQTT2. DOIF, PID20, Threshold, OWX; Micropelt IRTV, Volkszähler, SolarForecast; MariaDB

Damian

#271
Zitat von: cwagner am 24 Mai 2014, 16:31:53
Deine Erklärung zu $EVENT erklärt nun einiges (anderes) für mich. Deine ursprünglich vorgeschlagene Lösung gefällt mir inzwischen gut, ich kann Sie eben nicht mit trigger debuggen, sondern muss den Fenstergriff entsprechend handhaben. Im täglichen Betrieb ist die Lösung zuverlässlich und IF ist für mich im Vorteil, weil es verständlicher ist und die Einbindung von Readings intuitiv.

Vielen Dank dafür.

Christian

Zukünftig wirst du dir bei Abfragen keine Gedanken über Events und auch keine Gedanken über reguläre Ausdrücke machen müssen, denn das wird wie bei THRESHOLD auch bei DOIF unerheblich sein.

Gruß

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

der-Lolo

Du spannst uns aber auch alle auf die Folter...

Damian

Zitat von: der-Lolo am 24 Mai 2014, 16:54:18
Du spannst uns aber auch alle auf die Folter...

Ok, ich halte meinen Mund (oder besser meine Finger). Da sich bisher keiner gegen DOIF ausgesprochen hat (wird bestimmt noch kommen), muss ich es nur noch umsetzen. Leider habe ich, neben FHEM-Hobby, noch einen echten Job, der mich etwas Zeit kostet, daher wird es noch etwas dauern.
Da ich allerdings vom Erfolg von DOIF überzeugt bin, werde ich es auf jeden Fall umsetzen - ich hoffe noch vor den Sommerferien.

Gruß

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

kermi

Guten Abend alle miteinander,

warum funktionier bei meinen Jalousieschaltern (HM-LC-BL1-FM) folgender IF - Befehl nicht?
Genauer, es wird nur Jalousie jl_fenster1 herunter gefahren, der Rest wird ignoriert.

define jsWinter_Fenster_automatik_temp notify js_temperatur_winter IF (([js_temperatur_winter:state] eq "on") and ([js_automatik:state] eq "on")) ((set jl_fenster1 pct 0,set jl_fenster2 pct 0,set jl_terasse pct 0)) ELSE ((set jl_fenster1 pct 100,set jl_fenster2 pct 100,set jl_terasse pct 100))

Hab mich eigentlich genau an die WIKI gehalten.

PS:  DOIF finde ich eine genauso geniale Sache wie IF, bin gespannt wann es soweit ist.

Gruß
Stephan

FB 7390 mit FHEM 5.5
2x CUL V2
HM-Sec-RHS, HM-ES-PMSw1-Pl, HM-PB-4Dis-WM, HM-LC-Dim1TPBU-FM, HM-LC-Sw1-FM, HM-PB-2-WM55, KFM 100, HM-OU-LED16,
EM 1000 WZ ... und div. Quatsch

Damian

Zitat von: kermi am 30 Mai 2014, 00:00:24
Guten Abend alle miteinander,

warum funktionier bei meinen Jalousieschaltern (HM-LC-BL1-FM) folgender IF - Befehl nicht?
Genauer, es wird nur Jalousie jl_fenster1 herunter gefahren, der Rest wird ignoriert.

define jsWinter_Fenster_automatik_temp notify js_temperatur_winter IF (([js_temperatur_winter:state] eq "on") and ([js_automatik:state] eq "on")) ((set jl_fenster1 pct 0,set jl_fenster2 pct 0,set jl_terasse pct 0)) ELSE ((set jl_fenster1 pct 100,set jl_fenster2 pct 100,set jl_terasse pct 100))

Hab mich eigentlich genau an die WIKI gehalten.

PS:  DOIF finde ich eine genauso geniale Sache wie IF, bin gespannt wann es soweit ist.

Gruß
Stephan

Wenn ein Komma als Trennzeichen gelten soll (ist der Normalfall), dann darfst du keine doppelten Klammern verwenden: "((set jl_fenster1 pct 0,set ...", also:

define jsWinter_Fenster_automatik_temp notify js_temperatur_winter IF (([js_temperatur_winter:state] eq "on") and [js_automatik:state] eq "on")) (set jl_fenster1 pct 0,set jl_fenster2 pct 0,set jl_terasse pct 0) ELSE (set jl_fenster1 pct 100,set jl_fenster2 pct 100,set jl_terasse pct 100)

Gruß

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

kermi

jupp, das war es...

Damit ist meine Rolladensteuerung erst einmal perfekt, wenn dann DOIF erscheint kann ich ja meine ganzen merkwürdigen Konstrukte mit Dummys und Watchdog noch einmal übersichtlicher und einfacher umstricken.

Vielen Dank und einfach mal Respekt für deine generelle unermüdliche Hilfe hier!

Gruß
Stephan
FB 7390 mit FHEM 5.5
2x CUL V2
HM-Sec-RHS, HM-ES-PMSw1-Pl, HM-PB-4Dis-WM, HM-LC-Dim1TPBU-FM, HM-LC-Sw1-FM, HM-PB-2-WM55, KFM 100, HM-OU-LED16,
EM 1000 WZ ... und div. Quatsch

Brockmann

#277
Kann mir mal jemand auf die Sprünge helfen. Ich zweifel langsam an meinem Verstand (oder der Integrität meines FHEM). Ich würde dieses IF gerne nutzen, aber ich bekomme es nicht hin. Beispiel (über das Eingabefeld in FHEM eingegeben):
define test dummy
set test on
define testfun at +00:00:10 IF ([test] eq "on") (set test off)


Das sollte nach meinem Verständnis der Syntax korrekt sein, führt zu folgender Ausgabe im Logfile:
1: devspec2array ([test]: Unmatched ( in regex; marked by <-- HERE in m/^( <-- HERE ([test])$/ at fhem.pl line 1019.
3: set ([test] eq : Please define ([test] first
3: testfun: Please define ([test] first


fhem.pl sollte aktuell sein:
# $Id: fhem.pl 6080 2014-06-07 16:12:09Z rudolfkoenig $

Wo ist der Fehler? Vor oder hinter dem Bildschirm??

Jens_B

Kann es sein das Du eine eckige Klammer zuviel hast? Oder zuwenig? Ich kenn die Syntax des IF Befehls nicht.


Gesendet von meinem iPhone mit Tapatalk
RaspberryPi 4 (Raspian Buster)FHEM+Homebridge
HMLAN für Homematic
Z-Wave USB Stick
Shelly Devices
Fritz!Box 7590Ax

Brockmann

Zitat von: Jens_B am 24 Juni 2014, 12:36:46
Kann es sein das Du eine eckige Klammer zuviel hast?

Ja, stimmt. Das war aber nur ein Fehler beim Abtippen. Habs korrigiert. Ändert aber nichts an der Fehlermeldung.

der-Lolo

Gibt es denn den Dummy test überhaupt..?
oder vielmehr gab es ein Save zwischendrin?
set dummy on wird sicher dann auch nicht richtig sein - oder zeigt test im state on?

Brockmann

Zitat von: der-Lolo am 24 Juni 2014, 16:42:15
Gibt es denn den Dummy test überhaupt..?
oder vielmehr gab es ein Save zwischendrin?
set dummy on wird sicher dann auch nicht richtig sein - oder zeigt test im state on?
Ich gebe diese drei Befehle unmittelbar hintereinander per Eingabefeld ein. Also gibt es den Test-Dummy auch.
Habe ja extra dieses Beispiel konstruiert, was jeder einfach nachvollziehen kann.

Ich vermute, dass es bei anderen klappt, denn genauso ist ja die Syntax von IF.
Nur warum klappt es bei mir nicht?? Kann ich irgendwas an meiner Installation modifiziert haben, was zu diesem Effekt führen würde?

Ich kann IF auch auf die gleiche Weise mit jedem anderen meiner Devices einsetzen und bekomme eine solche Fehlermeldung.

der-Lolo

set dummy on

liefert wirklich im state des dummys ein on?

Brockmann

Zitat von: der-Lolo am 24 Juni 2014, 18:04:12
set dummy on
liefert wirklich im state des dummys ein on?
Nee, set test on liefert ein on.
Ist aber auch egal, denn soweit kommt das IF doch gar nicht. Statt dessen erzeugt es die Fehlermeldung im Log, dass es test nicht kennt, obwohl es definiert ist.
Es geht ja nicht darum, dass IF nicht das tut, was es soll. Es tut gar nichts bzw. wirft einen Fehler, weil das referenzierte Device angeblich nicht definiert sei. Ist es aber.
Und das ist bei allen meinen Devices so, egal ob Dummy oder nicht.

Gegenprobe: Mach mir doch bitte mal ein kurzes, einfaches Szenario, was ich nachbauen kann, wo IF bei Dir funktioniert. Vielleicht bin ich ja wirklich einfach zu blöd...

Damian

Zitat von: Brockmann am 24 Juni 2014, 12:32:34
Kann mir mal jemand auf die Sprünge helfen. Ich zweifel langsam an meinem Verstand (oder der Integrität meines FHEM). Ich würde dieses IF gerne nutzen, aber ich bekomme es nicht hin. Beispiel (über das Eingabefeld in FHEM eingegeben):
define test dummy
set test on
define testfun at +00:00:10 IF ([test] eq "on") (set test off)


Das sollte nach meinem Verständnis der Syntax korrekt sein, führt zu folgender Ausgabe im Logfile:
1: devspec2array ([test]: Unmatched ( in regex; marked by <-- HERE in m/^( <-- HERE ([test])$/ at fhem.pl line 1019.
3: set ([test] eq : Please define ([test] first
3: testfun: Please define ([test] first


fhem.pl sollte aktuell sein:
# $Id: fhem.pl 6080 2014-06-07 16:12:09Z rudolfkoenig $

Wo ist der Fehler? Vor oder hinter dem Bildschirm??

Die Fehlermeldungen kommen alle nicht von IF.

Hast du den Befehl überhaupt? Das kannst du erst mal testen, indem du einfach IF in der Kommandozeile eingibst. Dann sollte die Syntax von IF kommen.


Gruß

Damian

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