DOIF mit Dummy funktioniert nicht

Begonnen von Helmi55, 15 Januar 2016, 10:50:47

Vorheriges Thema - Nächstes Thema

Helmi55

Hallo
ich benötige wieder eure Hilfe 8aus der commandref wurde ich nicht schlau??)
Folgendes DOIF funktioniert
define di_HeizungAbstellraum DOIF ([10:05:00] or [10:07:00] or [10:09:00] or [10:11:00]) (set Heizung on) DOELSEIF ([10:05:30] or [10:07:30] or [10:09:30] or [10:11:30]) (set Heizung off)
Nun habe ich noch einen DummySchltr erstellt
define HeizungAbstellraum_D dummy
attr HeizungAbstellraum_D webCmd on:off

Und jetzt habe ich versucht den dummy ins DOIF mit einzubauen - Somit kann ich die Heizung bei Bedarf über Nacht einschalten (soll dann immer um eine bestimmte Zeit für 15 Minuten einschalten - ja geht wahrscheinlich schöner, aber ich bin froh es so geschafft zu haben)

Hier die Kombination die nicht funktioniert:
define di_HeizungAbstellraummitD DOIF (([10:30:00] or [10:32:00] or [10:34:00]) and ([HeizungAbstellraum_D] eq "on") (set Heizung on)) DOELSEIF ([10:30:30] or [10:32:30] or [10:34:30]) and ([HeizungAbstellraum_D] eq "on") (set Heizung off)

Bitte um Hilfe
Danke und Gruß
Helmut
System1 fhem 6.1 auf RPi 4B mit 4GB, HMUSBConfig, DS9490R-1Wire, Busware USB 868, Pool-Solarsteuerung mit FHEM. System2 fhem 6.1 auf RPi 4B mit 4GB (Bullseye) mit Busware USB 868 und 433 und HMUARTLGW für Haussteuerung

https://www.flickr.com/photos/canonhelmi/

Ellert

Zitataus der commandref wurde ich nicht schlau??
Woraus genau nicht?
ZitatHier die Kombination die nicht funktioniert:
Was genau funktioniert nicht?
Erwartete Zustände, eingetretene Zustände, Fehlermeldungen?

Es wäre hilfreich, auch für Dich, wenn Du die Gerätedefinition strukturiert und mehrzeilig darstellst.

Helmi55

Hallo
wurde nicht schlau - wo der Fehler liegt
Diese Fehlermeldung habe ich nach dem Erstellen des DOIF erhalten
di_HeizungAbstellraummitD DOIF: expected DOELSEIF or DOELSE: and ([HeizungAbstellraum_D] eq "on") (set Heizung off)

Der Hintergedanke ist:
Ein Dummy Schalter mit dem ich das DOIF scharf stellen kann.
Dann soll zu bestimmten Zeiten eine Heizung für z.B. 15 Minuten eingeschaltet werden.
Hier in dem Beispiel habe ich zum Prüfen nur 30 Sek. eingetragen.

Das DOIF ohne dem Dummy funktioniert - nur ich werde aus der Fehlermeldung nicht schlau ?

Gruß
Helmut
System1 fhem 6.1 auf RPi 4B mit 4GB, HMUSBConfig, DS9490R-1Wire, Busware USB 868, Pool-Solarsteuerung mit FHEM. System2 fhem 6.1 auf RPi 4B mit 4GB (Bullseye) mit Busware USB 868 und 433 und HMUARTLGW für Haussteuerung

https://www.flickr.com/photos/canonhelmi/

Ellert

Das sieht nach einem Klammerproblem aus.

Benutzt Du den DEF-Editor? Dafür gibt es eine Klammerprüfung, s. http://forum.fhem.de/index.php/topic,45373.msg371668.html#msg371668

Helmi55

Servus
habe mir jetzt das attr für Klammerprüfung gesetzt.
Dann wie beschrieben auch nur das DOIF erstellt
define di_HeizungAbstellraummitD DOIF ([HeizungAbstellraum_D] eq "on")
Danach im editor weiter bearbeitet (siehe Screenshot)

Aber bei der Eingabe kommt leider wieder eine Fehlermeldung mit DOELSEIF or DOELSE (hab diese irrtümlich weggeklickt - sorry)

System1 fhem 6.1 auf RPi 4B mit 4GB, HMUSBConfig, DS9490R-1Wire, Busware USB 868, Pool-Solarsteuerung mit FHEM. System2 fhem 6.1 auf RPi 4B mit 4GB (Bullseye) mit Busware USB 868 und 433 und HMUARTLGW für Haussteuerung

https://www.flickr.com/photos/canonhelmi/

kumue

#5
define di_HeizungAbstellraummitD DOIF (([10:30:00] or [10:32:00] or [10:34:00]) and ([HeizungAbstellraum_D] eq "on") (set Heizung on)) DOELSEIF ([10:30:30] or [10:32:30] or [10:34:30]) and ([HeizungAbstellraum_D] eq "on") (set Heizung off)

ich denke, eine ( ist zu viel... die vor  ([HeizungAbstellraum_D] eq "on")

EDIT:
und die nach (set Heizung on)) ist zu viel

also
define di_HeizungAbstellraummitD DOIF (([10:30:00] or [10:32:00] or [10:34:00]) and [HeizungAbstellraum_D] eq "on") (set Heizung on) DOELSEIF ([10:30:30] or [10:32:30] or [10:34:30]) and ([HeizungAbstellraum_D] eq "on") (set Heizung off)

kumue

nee, ging auch nicht... jetzt aber...
define di_HeizungAbstellraummitD DOIF (([10:30:00] or [10:32:00] or [10:34:00]) and [HeizungAbstellraum_D] eq "on") (set Heizung on) DOELSEIF (([10:30:30] or [10:32:30] or [10:34:30]) and [HeizungAbstellraum_D] eq "on") (set Heizung off)

Helmi55

Danke kumue
das habe ich nun berichtigt. Jetzt kam diese Fehlermeldung

Für das DOIF muss ich noch viel Zeit investieren - damit stehe ich auf Kriegsfuß
System1 fhem 6.1 auf RPi 4B mit 4GB, HMUSBConfig, DS9490R-1Wire, Busware USB 868, Pool-Solarsteuerung mit FHEM. System2 fhem 6.1 auf RPi 4B mit 4GB (Bullseye) mit Busware USB 868 und 433 und HMUARTLGW für Haussteuerung

https://www.flickr.com/photos/canonhelmi/

Helmi55

sorry hab deinen 2ten Post nicht mehr gelesen - war zu schnell
Ich muss jetzt leider aufhören und komme wahrscheinlich erst wieder am Sonntag dazu
Melde mich wieder - hoffe mit einer Erfolgsmeldung bis dahin nice w/e
Helmut
System1 fhem 6.1 auf RPi 4B mit 4GB, HMUSBConfig, DS9490R-1Wire, Busware USB 868, Pool-Solarsteuerung mit FHEM. System2 fhem 6.1 auf RPi 4B mit 4GB (Bullseye) mit Busware USB 868 und 433 und HMUARTLGW für Haussteuerung

https://www.flickr.com/photos/canonhelmi/

Ellert

ZitatAber bei der Eingabe kommt leider wieder eine Fehlermeldung mit DOELSEIF or DOELSE (hab diese irrtümlich weggeklickt - sorry)

Die Klammerprüfung korrigiert nicht, sie zeigt Dir zugehörige Klammerpaare, wenn Du mit dem Cursor über eine Klammer fährst, erzeugt bei der Eingabe einer linken Klammer eine Rechte, usw.

Um den Fehler zu finden, könntest Du folgende Checkliste zu Hilfe nehmen:

Fehlersuche im DOIF
FHEM sollte aktuell sein, das schliesst mögliche Fehler eines alten Softwarestandes aus.
update check sollte "nothing to do" liefern, sonst update durchführen und danach FHEM neu starten mitshutdown restart.
Fehlermeldung beim Abschliessen der Bearbeitung im DEF-Editor
Fehlermeldung lesen und deren Bedeutung erarbeiten, danach Korrekturmaßnahmen durchführen.
Einhaltung der DOIF Syntax solange überprüfen und ändern, bis die Fehlermeldung nicht wieder erscheint
Ist die formale Struktur des DOIF eingehalten, Fehlerbeispiel: DOELSEIF ohne Bedingung, DOELSE mit Bedingung
Ist die Schreibweise der Schlüsselwörter korrekt?
Sind die Klammerregeln eingehalten?
Überschneiden sich eingeklammerte Bereiche unterschiedlicher Klammertypen, Fehlerbeispiel: ([ ... )]?
Ist die Zahl der geöffneten und der geschlossenen Klammern je Klammertyp gleich?
Ist jeder Befehl, der Kommas enthält von einer runden Klammer eingeschlossen?
Sind alle Steuerzeichen, ihrer Bedeutung entsprechend, maskiert?
Ist die Zahl der Anführungszeichen je Typ gerade?
Überscheiden sich Anführungszeichen unterschiedlicher Typen, Fehlerbeispiel: '"'"?
Sind besonderen DOIF-Klammerregeln eingehalten? Extra Klammer für Berechnungen, bei Befehl enthält Komma, usw.
Ist die besondere DOIF Zeichensetzung eingehalten? Koma als Befehlstrenner.
Ist die Rangfolge der Perloperatoren beachtet? Beispiel A and B or C oder A and (B orC), A and B !(A and B) statt !A and B



Helmi55

So vorerst mal DANKE es funktioniert nun
@ Ellert - mein System ist immer auf dem neuesten Stand (max. 1 Woche alt)
und danke für die Tips ich werde sie beherzigen werde aber sicher auch in Zukunft nicht ohne eure Hilfe weiterkommen
Schönes Wochenende
Liebe Grüße
Helmut
System1 fhem 6.1 auf RPi 4B mit 4GB, HMUSBConfig, DS9490R-1Wire, Busware USB 868, Pool-Solarsteuerung mit FHEM. System2 fhem 6.1 auf RPi 4B mit 4GB (Bullseye) mit Busware USB 868 und 433 und HMUARTLGW für Haussteuerung

https://www.flickr.com/photos/canonhelmi/