[gelöst] Umzug "at" auf DOIF"

Begonnen von Thoffi1978, 19 Oktober 2015, 09:13:39

Vorheriges Thema - Nächstes Thema

Thoffi1978

Hallo,
ich habe meine "at´s" auf "DOIF" geändert.
Das hat soweit auch funktioniert, heute habe ich aber festegestellt, das fer Ferienstatus nicht berücksichtigt wird.
Könnt Ihr mir sagen wieso?
([{sunrise("CIVIL",0,"07:00","07:45")}|1235] and [?Jalo_WZ_TV_vorne] ne "SH_Ferientag" and (Value("Jalousie_Automatik") eq "Auto") and [Helligkeit:state] < 200) (set Jalo_WZ_TV_vorne 50)
DOELSEIF


Vielen Dank
Hoffi

drhirn

Fehlen da noch runde Klammern um
[?Jalo_WZ_TV_vorne] ne "SH_Ferientag"
?

moonsorrox

Zitat von: Thoffi1978 am 19 Oktober 2015, 09:13:39
Könnt Ihr mir sagen wieso?
([{sunrise("CIVIL",0,"07:00","07:45")}|1235] and [?Jalo_WZ_TV_vorne] ne "SH_Ferientag" and (Value("Jalousie_Automatik") eq "Auto") and [Helligkeit:state] < 200) (set Jalo_WZ_TV_vorne 50)
DOELSEIF


ist das der komplette Code..?

folgendes DOIF liest von links nach rechts...! bedeutet das er sobald er etwas erkennt triggert er, wenn ich mich nicht irre schaltet er schon bei dem Code "sunrise"

soll heißen ich würde erst einmal etwas "drehen" und so probieren:
([?Jalo_WZ_TV_vorne] ne "SH_Ferientag" and (Value("Jalousie_Automatik") eq "Auto") and [Helligkeit:state] < 200 and [{sunrise("CIVIL",0,"07:00","07:45")}|1235]) (set Jalo_WZ_TV_vorne 50)
DOELSEIF
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Thoffi1978

Hallo,
ich habe das einmal mit den Klammern ausprobiert und dann mit dem Hinweis von moonsorrox, mit der Reihenfolge. Beides brachte keine Erfolg.
Die Reihenfolge ist glaube ich auch nicht ganz so wichtig, denn wenn ich die Automatik
(Value("Jalousie_Automatik") eq "Auto")
auf aus habe, dann "bewegt sich nichts" (so wie es soll)

Hoffi

Amenophis86

Zitat von: Thoffi1978 am 19 Oktober 2015, 09:13:39

and [?Jalo_WZ_TV_vorne] ne "SH_Ferientag" and (Value("Jalousie_Automatik") eq "Auto")


1. Ist wirklich in Jalo_WZ_TV_vorne der Ferientag gespeichert? Kann ich mir nicht vorstellen. Glaube du hast die Syntax noch nicht ganz verstanden.
2. (Value("Jalousie_Automatik") eq "Auto") ist möglich, aber entspricht eigentlich nicht der DOIF Syntax. Sollte dann richtig wie folgt aussehen:

[Jalousie_Automatik] eq "Auto"

Ich denke du solltest dir nochmal genau das Wiki oder die Commandref zu DOIF durchlesen, weil ich denke, dass du es leider glaube noch nicht ganz verstanden hast. Und das ist nicht böse gemeint ;)

Edit:
Mit der Reihenfolge hat das nichts zu tun. Es ist vollkommen egal, was vorne oder hinten steht, da ja jede Bedingung erfüllt sein muss, oder der Befehl nicht ausgeführt wird.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

moonsorrox

Zitat von: Amenophis86 am 19 Oktober 2015, 13:51:33
Edit:
Mit der Reihenfolge hat das nichts zu tun. Es ist vollkommen egal, was vorne oder hinten steht, da ja jede Bedingung erfüllt sein muss, oder der Befehl nicht ausgeführt wird.
die Reihenfolge ist denke schon wichtig, aber hier wohl nicht  ;) hatte ich falsch dargstellt..! Also hast du natürlich Recht mit den Bedingungen.

Was ist denn "Jalousie_Automatik" ein Reading ein Dummy..?
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Thoffi1978

Hallo,
Jalousie_Automatik ist ein Dummy.

bei meinen at´s sah der Code ähnlich so aus:
*06:50 { if ( !($we) && !(Value("SH_Ferientag")) && (Value("Jalousie_Automatik") eq "Auto")) { fhem("set Jalo_WZ_Seite 65") }}
Wegen der Helligkeit wurde das dann ein DOIF
Ich glaube ich habe beim Ferientag ein Fehler gemacht.
DAs müßte dann so aussehen?
(Value("SH_Ferientag") eq "0" and (Value("Jalousie_Automatik") eq "Auto") and [Helligkeit:state] < 200 and [{sunrise("CIVIL",0,"13:46","13:50")}|1235]) (set Jalo_WZ_TV_vorne 50)
DOELSEIF

Bei der Einrichtung des Ferientages bin ich nach diesem Artikel vorgegangen:
http://www.fhemwiki.de/wiki/Wochenende,_Feiertage_und_Schulferien

Amenophis86

#7
Mal zur Erklärung generell, bei DOIF musst du nicht mit Value() arbeiten. Du setzt den Namen des Device oder was auch immer es sein soll in []. Dann bezieht es sich auf das Statereading. Willst du ein anderes Reading dann schreibst du [Namedevice:Namereading].

Jetzt musst du nur noch schauen, dass du für jede Bedingung, die du wahrhaben willst auch das richte Device bzw das Reading des Devices (wie oben beschrieben) genommen hast und dahinter dann die Abfrage, wie zb ne oder eq. Das verbindest du dann mit and oder or. Wie gesagt, lies dir nochmal die komplette Commandref zu DOIF durch und schau dir dann nochmal deine Definition an.

Edit:
Und wegen des Feiertags, wenn das Reading bei keinem Feiertag 0 hat und bei einem Feiertag einen anderen Wert, dann wäre dein Lösung richtig. Nur die Syntax solltest du ändern, wie oben geschrieben. Deine ist halt nicht falsch, aber eigentlich sollte sie so nicht geschrieben werden, denn genau darum geht es bei DOIF diese zu vereinfachen ;)
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

moonsorrox

also ich würde das auf jeden Fall so schreiben, vom Ausgangscode ausgegangen:
([?Jalo_WZ_TV_vorne] ne "SH_Ferientag" and [Jalousie_Automatik] eq "Auto" and [Helligkeit:state] < 200 and [{sunrise("CIVIL",0,"07:00","07:45")}|1235]) (set Jalo_WZ_TV_vorne 50)
DOELSEIF


du könntest ja bei den Tagen mit dem Feiertag arbeiten, also einen weiteren DOELSEIF Zweig mit "7"
Hinter der Zeitangabe kann ein oder mehrere Wochentage als Ziffer getrennt mit einem Pipezeichen | angegeben werden. Die Syntax lautet:

[<time>|012345678] 0-8 entspricht: 0-Sonntag, 1-Montag, ... bis 6-Samstag sowie 7 für Wochenende und Feiertage (entspricht $we) und 8 für Arbeitstage (entspricht !$we)
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Thoffi1978

Nun ist die Sonne erstmal weg. ich schaue morgen noch mal. Vielen Dank.
Ich habe nun aber noch eine Frage.
Wenn ich
[SH_Ferientag] eq "0" and [Jalousie_Automatik] eq "Auto" and [Helligkeit:state] < 200 and [{sunrise("CIVIL",0,"08:46","09:50")}|1235]) (set Jalo_WZ_TV_vorne 50)
DOELSEIF

eingebe kommt eine Fehlermeldung.
Gebe ich
(Value("SH_Ferientag") eq "0" and [Jalousie_Automatik] eq "Auto" and [Helligkeit:state] < 200 and [{sunrise("CIVIL",0,"08:46","09:50")}|1235]) (set Jalo_WZ_TV_vorne 50)
DOELSEIF

ein, gibt es kein Fehlermeldung.
Zitatvorne_hoch DOIF: no left bracket of condition: [SH_Ferientag] eq "0" and [Jalousie_Automatik] eq "Auto" and [Helligkeit:state] < 200 and [{sunrise("CIVIL",0,"08:46","09:50")}|1235]) (set Jalo_WZ_TV_vorne 50)

Fehlermeldung:


moonsorrox

Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Amenophis86

genau genommen die erste Klammer. So müsste deine Definition aussehen:
define NAME DOIF ([SH_Ferientag] eq "0" and [Jalousie_Automatik] eq "Auto" and [Helligkeit:state] < 200 and [{sunrise("CIVIL",0,"08:46","09:50")}|1235]) (set Jalo_WZ_TV_vorne 50)

und so, wenn du es direkt ins def schreibst:
([SH_Ferientag] eq "0" and [Jalousie_Automatik] eq "Auto" and [Helligkeit:state] < 200 and [{sunrise("CIVIL",0,"08:46","09:50")}|1235]) (set Jalo_WZ_TV_vorne 50)
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

Thoffi1978

Vielen Dank. :)

Diese Klammern... ::)

Danke.