FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: Tabularasa am 06 Januar 2018, 12:11:52

Titel: [GELÖST]Fenster offen -> Heizung schalten
Beitrag von: Tabularasa am 06 Januar 2018, 12:11:52
Hallo. Habe folgendes DOIF
Internals:
   CFGFN     
   DEF        ([Fenster_EG_Bad] eq "open") (set HZG_EG_Bad_Clima:FILTER=desired-temp!=5.0 desired-temp 5) DOELSEIF
([Fenster_EG_Kueche] eq "open") (set HZG_EG_EZ_Clima:FILTER=desired-temp!=5.0 desired-temp 5) DOELSEIF
([Fenster_OG_Bad] eq "open") (set HZG_OG_Bad_Clima:FILTER=desired-temp!=5.0 desired-temp 5) DOELSEIF
([Fenster_OG_Nora] eq "open") (set HZG_OG_Nora_Clima:FILTER=desired-temp!=5.0 desired-temp 5) DOELSEIF
([Fenster_OG_SZ_r] eq "open") (set HZG_OG_SZ_r_Clima:FILTER=desired-temp!=5.0 desired-temp 5)
DOELSE (set li_HZG scene [li_HZG])
   NAME       di_Fensteroffen_HZG
   NR         10648
   NTFY_ORDER 50-di_test
   STATE      disabled
   TYPE       DOIF
   READINGS:
     2018-01-06 11:24:08   Device          Fenster_EG_Bad
     2018-01-06 11:23:12   cmd             6
     2018-01-06 11:23:12   cmd_event       Fenster_EG_Kueche
     2018-01-06 11:23:12   cmd_nr          6
     2018-01-06 11:24:08   e_Fenster_EG_Bad_STATE closed
     2018-01-06 11:23:12   e_Fenster_EG_Kueche_STATE closed
     2018-01-06 11:26:12   last_cmd        cmd_6
     2018-01-06 11:26:12   mode            disabled
     2018-01-06 11:26:12   state           disabled
     2018-01-06 11:20:07   wait_timer      no timer
   Regex:
   condition:
     0          InternalDoIf($hash,'Fenster_EG_Bad','STATE') eq "open"
     1          InternalDoIf($hash,'Fenster_EG_Kueche','STATE') eq "open"
     2          InternalDoIf($hash,'Fenster_OG_Bad','STATE') eq "open"
     3          InternalDoIf($hash,'Fenster_OG_Nora','STATE') eq "open"
     4          InternalDoIf($hash,'Fenster_OG_SZ_r','STATE') eq "open"
   devices:
     0           Fenster_EG_Bad
     1           Fenster_EG_Kueche
     2           Fenster_OG_Bad
     3           Fenster_OG_Nora
     4           Fenster_OG_SZ_r
     all         Fenster_EG_Bad Fenster_EG_Kueche Fenster_OG_Bad Fenster_OG_Nora Fenster_OG_SZ_r
   do:
     0:
       0          set HZG_EG_Bad_Clima:FILTER=desired-temp!=5.0 desired-temp 5
     1:
       0          set HZG_EG_EZ_Clima:FILTER=desired-temp!=5.0 desired-temp 5
     2:
       0          set HZG_OG_Bad_Clima:FILTER=desired-temp!=5.0 desired-temp 5
     3:
       0          set HZG_OG_Nora_Clima:FILTER=desired-temp!=5.0 desired-temp 5
     4:
       0          set HZG_OG_SZ_r_Clima:FILTER=desired-temp!=5.0 desired-temp 5
     5:
       0          set li_HZG scene [li_HZG]
   helper:
     DOIF_Readings_events
     DOIF_eventas
     event      closed
     globalinit 1
     last_timer 0
     sleepdevice Fenster_EG_Bad
     sleepsubtimer -1
     sleeptimer -1
     timerdev   Fenster_EG_Bad
     timerevent closed
     triggerDev Fenster_EG_Bad
     timerevents:
       closed
     timereventsState:
       state: closed
     triggerEvents:
       closed
     triggerEventsState:
       state: closed
   internals:
     0           Fenster_EG_Bad:STATE
     1           Fenster_EG_Kueche:STATE
     2           Fenster_OG_Bad:STATE
     3           Fenster_OG_Nora:STATE
     4           Fenster_OG_SZ_r:STATE
     all         Fenster_EG_Bad:STATE Fenster_EG_Kueche:STATE Fenster_OG_Bad:STATE Fenster_OG_Nora:STATE Fenster_OG_SZ_r:STATE
   itimer:
   readings:
   trigger:
   uiState:
   uiTable:
Attributes:
   room       DOIF
   wait       70:70:70:70:70:0


Eigentlich soll beim Fenster öffnen einfach nur die jeweilige Heizung um 70 Sekunden verzögert auf 5°C eingestellt werden und beim Fenster schließen der aktuelle Status der Lightscene der Thermostate wieder hergestellt werden. Durch das wait kann ich aber nicht 2 Fenster innerhalb unter 70 Sekunden öffnen, da ja sonst der nächste Zweig war wird. Habe auch schon laut commandref versucht die "Verzögerte "Fenster offen"-Meldung" mit der "Rollladen auf Lüften stellen" Anleitung zu kombinieren(kopieren), was aber auch keinen Erfolg gebracht hat(was vielleicht daran liegt, dass ich es einfach nicht kapiere  :-\). Sieht im Moment so aus
Internals:
   CFGFN     
   DEF        (["^Fenster_:open"]) (defmod at_$DEVICE at +00:60 set {("$DEVICE"=~/^Fenster_(.*)/;"HZG_$1")} desired-temp 5) DOELSEIF (["^Fenster_:closed"]) (delete at_$DEVICE)
   NAME       di_window_open
   NR         11364
   NTFY_ORDER 50-di_window_open
   STATE      initialized
   TYPE       DOIF
   READINGS:
     2018-01-06 11:51:20   cmd             0
     2018-01-06 11:51:20   mode            enabled
     2018-01-06 11:51:20   state           initialized
     2018-01-06 11:51:27   warning         condition c02: Use of uninitialized value $dev in pattern match (m//) at ./FHEM/98_DOIF.pm line 885.

   Regex:
     cond:
       :
         0:
           "^Fenster_:open" ^Fenster_:open
         1:
           "^Fenster_:closed" ^Fenster_:closed
   condition:
     0          EventDoIf('^Fenster_',$hash,'open',0)
     1          EventDoIf('^Fenster_',$hash,'closed',0)
   devices:
   do:
     0:
       0          defmod at_$DEVICE at +00:60 set {("$DEVICE"=~/^Fenster_(.*)/;"HZG_$1")} desired-temp 5
     1:
       0          delete at_$DEVICE
     2:
   helper:
     DOIF_Readings_events
     DOIF_eventas
     globalinit 1
     last_timer 0
     sleeptimer -1
   internals:
   itimer:
   readings:
   uiState:
   uiTable:
Attributes:


Also eigentlich soll nur funktionieren:
Fenster auf-> die entsprechende Heizung auf 5°, Fenster zu -> die entsprechende Heizung auf den gerade aktuellen State der Lightscene.

Ich hoffe ich konnte es einigermaßen beschreiben, danke
Titel: Antw:Fenster offen -> Heizung schalten
Beitrag von: guhu am 06 Januar 2018, 13:02:53
Hallo, überblick das jetzt nicht im Detail, aber der natürliche Weg wäre doch für jedes Fenster/Heizungspaar ein eigenes DOIF zu spendieren.

Bzw. die intrinsischen Funktionen des Thermostats zu nutzen, so habe ich es. Funktioniert dann auch ohne FHEM.
Titel: Antw:Fenster offen -> Heizung schalten
Beitrag von: Tabularasa am 06 Januar 2018, 19:00:34
Ja das wäre mir aber wahrscheinlich zu unübersichtlich wenn ich dann soviele einzelne Doifs hätte. Am liebsten wäre mir es nach der 2. Variante die ich gepostet hatte, dann brauche ich bei neuen Komponenten nichts warten. Aber da sind mir, um es allein zu schaffen, zu viele Unklarheiten. Ich verwende eigentlich nur Doifs, weil mir das als Anfänger leichter vorkommt. Schon das bisschen Perl wie das im Doif bringt mich zum verzweifeln ::) {("$DEVICE"=~/^Fenster_(.*)/;"HZG_$1")}

Gepeert habe ich allerdings nichts bei mir, läuft alles über FHEM
Titel: Antw:Fenster offen -> Heizung schalten
Beitrag von: Per am 06 Januar 2018, 19:33:54
Du kannst entweder pro Device ein DOIF nehmen, mit automatisch erstellten at arbeiten oder, wenn die Geräte es können, sowas wie on-for-timer nehmen.
Titel: Antw:Fenster offen -> Heizung schalten
Beitrag von: Damian am 06 Januar 2018, 19:43:32
Du musst dich an die Probleme herantasten.

Was passiert z. B. beim Fenster öffnen? Wird at gesetzt? Wenn nicht, gibt es eine Fehlermeldung? usw.

Ohne genaue Angaben wird dir hier keiner helfen können.

Edit: Beim generalisierten DOIF musst du zumindest das Attribut do always setzen
Titel: Antw:Fenster offen -> Heizung schalten
Beitrag von: Tabularasa am 06 Januar 2018, 22:43:38
@Per: Ich würde es gern mal mit einem generalisiertem Doif probieren.

Zitat von: Damian am 06 Januar 2018, 19:43:32
Du musst dich an die Probleme herantasten.

Was passiert z. B. beim Fenster öffnen? Wird at gesetzt? Wenn nicht, gibt es eine Fehlermeldung? usw.

So habe jetzt zum testen mal 2 dummys erstellt. Hoffe es ist die richtige Herangehensweise um mich an die Probleme heranzutasten.
Internals:
   CFGFN     
   NAME       DU_Fenster
   NR         3023
   STATE      open
   TYPE       dummy
   READINGS:
     2018-01-06 22:34:08   state           open
Attributes:
   webCmd     open:closed

Internals:
   CFGFN     
   NAME       DU_HZG_Clima
   NR         3057
   STATE      desired-temp 2
   TYPE       dummy
   READINGS:
     2018-01-06 22:25:31   state           desired-temp 2
Attributes:
   webCmd     desired-temp 1:desired-temp 2

so sieht das doif aus mit tatsächlich einem Fehler und at wird anscheinend nicht gesetzt...
Internals:
   DEF        (["^DU_Fenster:open"]) (defmod at_$DEVICE at +00:60 set {("$DEVICE"=~/^DU_Fenster(.*)/;"DU_HZG$1")} desired-temp 1) DOELSEIF (["^DU_Fenster_:closed"]) (delete at_$DEVICE)
   NAME       di_window_open
   NR         222
   NTFY_ORDER 50-di_window_open
   STATE      cmd_1
   TYPE       DOIF
   READINGS:
     2018-01-06 22:34:08   Device          DU_Fenster
     2018-01-06 22:34:08   cmd             1
     2018-01-06 22:34:08   cmd_event       DU_Fenster
     2018-01-06 22:34:08   cmd_nr          1
     2018-01-06 22:34:08   error           defmod at_DU_Fenster at +00:60 set DU_HZG desired-temp 1: Wrong timespec 00:60: either HH:MM:SS or {perlcode}
     2018-01-06 22:25:17   mode            enabled
     2018-01-06 22:34:08   state           cmd_1
   Regex:
     cond:
       :
         0:
           "^DU_Fenster:open" ^DU_Fenster:open
         1:
           "^DU_Fenster_:closed" ^DU_Fenster_:closed
   condition:
     0          EventDoIf('^DU_Fenster',$hash,'open',0)
     1          EventDoIf('^DU_Fenster_',$hash,'closed',0)
   devices:
   do:
     0:
       0          defmod at_$DEVICE at +00:60 set {("$DEVICE"=~/^DU_Fenster(.*)/;"DU_HZG$1")} desired-temp 1
     1:
       0          delete at_$DEVICE
     2:
   helper:
     DOIF_Readings_events
     event      open
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   DU_Fenster
     timerevent open
     triggerDev DU_Fenster
     DOIF_eventas:
       cmd_nr: 1
       cmd: 1
       cmd_event: DU_Fenster
       error: defmod at_DU_Fenster at +00:60 set DU_HZG desired-temp 1: Wrong timespec 00:60: either HH:MM:SS or {perlcode}
       state: cmd_1
     timerevents:
       open
     timereventsState:
       state: open
     triggerEvents:
       open
     triggerEventsState:
       state: open
   internals:
   itimer:
   readings:
   trigger:
   uiState:
   uiTable:
Attributes:
   do         always
Titel: Antw:Fenster offen -> Heizung schalten
Beitrag von: Damian am 06 Januar 2018, 22:58:59
Das ist die richtige Vorgehensweise, jetzt weißt du wenigsten, wo der Fehler ist - 60 Minuten wirst du auf keiner digitalen Uhr zu sehen bekommen ;)
Titel: Antw:Fenster offen -> Heizung schalten
Beitrag von: Tabularasa am 06 Januar 2018, 23:35:37
oh neiiin ;D

Schalten tut der HZG dummy leider nicht. Wie muss ich denn den Part
set {("$DEVICE"=~/^DU_Fenster(.*)/;"DU_HZG$1")} desired-temp 1)ändern, damit sich das passende Thermostat ändert?

Zur Info wie meine Devices heißen bitte nochmal im ersten Post gucken.

Wenn ich das laut commandref richtig verstehe, müsste ich ja die gleiche Endung an den Devices der Heizung haben
ZitatRollladen auf Lüften stellen

define di_air DOIF (["^window_contact_:open|tilted"]) (set {("$DEVICE"=~/^window_contact_(.*)/;"shutters_$1")} 10)

attr di_air do always

Hier werden alle Fensterkontakte, die mit dem Device-Namen "window_contact_" beginnen auf "open" oder "tilted" im Event überwacht und der entsprechende Rollladen mit der gleichen Endung auf Lüften per set shutters_<postfix> 10 gestellt.

Titel: Antw:Fenster offen -> Heizung schalten
Beitrag von: Damian am 06 Januar 2018, 23:42:03
Wie der Schaltbefehl lautet sieht du hier:

defmod at_DU_Fenster at +00:60 set DU_HZG desired-temp 1: Wrong timespec 00:60: either HH:MM:SS or {perlcode}

da das Fenster

     2018-01-06 22:34:08   Device          DU_Fenster

im Test keine Endung hat, gibt es keine Endung hinter DU_HZG.

Es funktioniert alles wie definiert. Wie die korrekte Syntax für deine Thermostate ist, kann ich dir nicht sagen.


Titel: Antw:Fenster offen -> Heizung schalten
Beitrag von: Tabularasa am 06 Januar 2018, 23:53:53
Also die normalen Fenster und Thermostate heißen:
Fenster_EG_Bad           HZG_EG_Bad_Clima
Fenster_OG_Bad           HZG_OG_Bad_Clima
Fenster_OG_Nora         HZG_OG_Nora_Clima
Fenster_OG_SZ_r         HZG_OG_SZ_r_Clima

Kann man denn den Code so ändern, dass nach dem Mittelteil gesucht wird und nicht nach der Endung?

Titel: Antw:Fenster offen -> Heizung schalten
Beitrag von: Damian am 06 Januar 2018, 23:59:05
Zitat von: Tabularasa am 06 Januar 2018, 23:53:53
Also die normalen Fenster und Thermostate heißen:
Fenster_EG_Bad           HZG_EG_Bad_Clima
Fenster_OG_Bad           HZG_OG_Bad_Clima
Fenster_OG_Nora         HZG_OG_Nora_Clima
Fenster_OG_SZ_r         HZG_OG_SZ_r_Clima

Kann man denn den Code so ändern, dass nach dem Mittelteil gesucht wird und nicht nach der Endung?

ja, dann musst du noch _Clima dran hängen {("$DEVICE"=~/^Fenster_(.*)/;"HZG_$1_Clima")}

dass $1 die Endung des triggernden Devices ist, hast du dir bestimmt schon gedacht ;)
Titel: Antw:Fenster offen -> Heizung schalten
Beitrag von: Tabularasa am 07 Januar 2018, 00:55:15
Zitat von: Damian am 06 Januar 2018, 23:59:05
dass $1 die Endung des triggernden Devices ist, hast du dir bestimmt schon gedacht ;)
Ich sag mal so, ehrlich gesagt... Nein ::) Bin jetzt seit 2 Jahren dabei und hab gedacht ich raffs irgendwann aber leider gibt viel zu viel zu lernen. Aber dank der Community und des DOIFs  ;) konnte ich schon vieles umsetzen. Danke

Jedoch klappt das gerade noch nicht. Habe jetzt nochmal 2 dummys erstellt um die Thermostate nicht zu belasten.

Also habe jetzt:
DU_Fenster_EG_EZ       DU_HZG_EG_EZ_Clima
DU_Fenster_EG_WZ      DU_HZG_EG_WZ_Clima

und(["^DU_Fenster:open"]) (defmod at_$DEVICE at +00:00:05 set {("$DEVICE"=~/^DU_Fenster(.*)/;"DU_HZG_$1_Clima")} desired-temp 1) probiert. Da passiert leider nix. Hab zum testen einfach mal
(["^DU_Fenster:open"]) (defmod at_$DEVICE at +00:00:05 set {("$DEVICE"=~/^DU_Fenster(.*)/;"[b]DU_HZG_(.*)[/b]")} desired-temp 1) probiert. Da schalten dann beide auf desired-temp 1.
Wo habe ich den Fehler?
Titel: Antw:Fenster offen -> Heizung schalten
Beitrag von: Damian am 07 Januar 2018, 06:38:55
Zitat von: Tabularasa am 07 Januar 2018, 00:55:15
und(["^DU_Fenster:open"]) (defmod at_$DEVICE at +00:00:05 set {("$DEVICE"=~/^DU_Fenster(.*)/;"DU_HZG_$1_Clima")} desired-temp 1) probiert. Da passiert leider nix. Hab zum testen einfach mal

Auch hier wieder: Wie sieht das definierte at aus? Gibt es Fehlermeldungen im Log. Evtl. länger Zeit angeben z. B. +00:05 um genügend Zeit zum Nachschauen haben.
Titel: Antw:Fenster offen -> Heizung schalten
Beitrag von: Tabularasa am 07 Januar 2018, 11:26:24
Also hier das at. Sieht nach einem doppelten Unterstrich aus.
Internals:
   CFGFN     
   COMMAND    set DU_HZG__EG_EZ_Clima desired-temp 1
   DEF        2018-01-07T11:22:33 set DU_HZG__EG_EZ_Clima desired-temp 1
   NAME       at_DU_Fenster_EG_EZ
   NR         7030
   NTM        11:22:33
   PERIODIC   no
   RELATIVE   yes
   STATE      Next: 11:22:33
   TIMESPEC   00:02:05
   TRIGGERTIME 1515320553.43033
   TRIGGERTIME_FMT 2018-01-07 11:22:33
   TYPE       at
   VOLATILE   1
   READINGS:
     2018-01-07 11:20:28   state           Next: 11:22:33
Attributes:


Habe mal nach HZG den Unterstrich weg gemacht. Dann geht es :)
{("$DEVICE"=~/^DU_Fenster(.*)/;"DU_HZG$1_Clima")}
Danke dir!


edit: den
error delete at_DU_Fenster_EG_EZ: Please define at_DU_Fenster_EG_EZ first
werde ich immer haben wenn die Zeit um ist oder?
Titel: Antw:Fenster offen -> Heizung schalten
Beitrag von: Damian am 07 Januar 2018, 11:56:56
So langsam wird es ;)
Hättest du meinen Vorschlag komplett übernommen (Unterstrich hinter Fenster) hätte es auch funktioniert:

Zitatja, dann musst du noch _Clima dran hängen {("$DEVICE"=~/^Fenster_(.*)/;"HZG_$1_Clima")}

Ich würde persönlich statt at, benannten sleep nehmen, wie hier als Alternative zu at dargestellt https://fhem.de/commandref_DE.html#DOIF_Ereignissteuerung_ueber_Auswertung_von_Events.

Damit hättest du keine Meldungen im DOELSEIF-Fall.



Titel: Antw:Fenster offen -> Heizung schalten
Beitrag von: Tabularasa am 07 Januar 2018, 15:03:46
Zitat von: Damian am 07 Januar 2018, 11:56:56
So langsam wird es ;)
Hättest du meinen Vorschlag komplett übernommen (Unterstrich hinter Fenster) hätte es auch funktioniert:
Meine Frau guckt auch schon immer komisch wenn ich ihr sage, dass ich z.b. nur einen .(Punkt) noch setzen musste damit etwas funktioniert was vorher nicht ging :D
Also danke nochmal
Titel: Antw:[GELÖST]Fenster offen -> Heizung schalten
Beitrag von: Tabularasa am 08 Januar 2018, 13:20:45
Hallo. Ich nochmal. Das DOIF sieht fertig jetzt so aus
(["^Fenster_:open"]) (sleep 70 $DEVICE quiet;set {("$DEVICE"=~/^Fenster_(.*)/;"HZG_$1_Clima")} desired-temp 5) DOELSEIF (["^Fenster_:closed"]) (cancel $DEVICE quiet) (set li_HZG scene [li_HZG])

Das funktioniert auch gut.

Jetzt habe ich mein anderes DOIF was zur Erinnerung an die offenen Fenster auf die Sonos was ausgibt auch in dem Stil angepasst.
(["^Fenster:open"]) ((sleep 90 $DEVICE quiet;set TYPE=SONOSPLAYER:FILTER=presence=appeared Speak 50 de {(AttrVal("$DEVICE","alias", "$DEVICE"))} wurde vor 20 Minuten geöffnet. Bitte demnächst schließen weils sonst zu kalt wird)) DOELSEIF
([#"^Fenster:closed":state:"open"] == 0) (cancel $DEVICE quiet) (set TYPE=SONOSPLAYER:FILTER=presence=appeared Speak 50 de alle Fenster geschlossen)

jedes einzeln für sich funktioniert auch. Nur wenn ich beide aktiviert habe dann werde ich nicht erinnert. Kann es sein dass das mit dem sleep zusammenhängt, weil ja 2 Doifs aufs selbe Device triggern und jeder ein sleep ausführt?
Am liebsten wäre mir nur ein DOIF aus beiden kombiniert, weil sie ja eh immer zur gleichen Zeit auslösen, aber ich glaube da komme ich mit den Klammern und Semikolons nicht klar.
Also @Damian :) wäre nett wenn du dir das nochmal ansehen könntest.

Könnte es in etwa so aussehen?

(["^Fenster:open"]) ((sleep 70 $DEVICE quiet;set {("$DEVICE"=~/^Fenster_(.*)/;"HZG_$1_Clima")} desired-temp 5;sleep 90 $DEVICE quiet;set TYPE=SONOSPLAYER:FILTER=presence=appeared Speak 50 de {(AttrVal("$DEVICE","alias", "$DEVICE"))} wurde vor 20 Minuten geöffnet. Bitte demnächst schließen weils sonst zu kalt wird)) DOELSEIF
([#"^Fenster:closed":state:"open"] == 0) (cancel $DEVICE quiet) (set TYPE=SONOSPLAYER:FILTER=presence=appeared Speak 50 de alle Fenster geschlossen)(set li_HZG scene [li_HZG])


Achja und eins habe ich noch was auf Temperatur bei im gleichen Raum geöffnetem Fenster reagieren sollte, bekomme aber einen Fehler
Internals:
   CFGFN     
   DEF        (["^HZG_:measured-temp"]<21 and {("$DEVICE"=~/^HZG_(.*)/;"Fenster_$1")}eq "open") (set Sonos_Wohnzimmer Speak 30 de Das Fenster im {(AttrVal("$DEVICE","alias", "$DEVICE"))} ist auf und es sind unter 21°C. Bitte schließen)
   NAME       di_test2
   NR         10658
   NTFY_ORDER 50-di_test2
   STATE      initialized
   TYPE       DOIF
   READINGS:
     2018-01-08 12:35:20   Device          HZG_EG_WZ
     2018-01-08 12:31:49   cmd             0
     2018-01-08 12:35:20   error           condition c01: syntax error at (eval 815662) line 1, at EOF
syntax error at (eval 815662) line 1, near ""Fenster_$1")"

     2018-01-08 12:31:49   mode            enabled
     2018-01-08 12:31:49   state           initialized
   Regex:
     cond:
       :
         0:
           "^HZG_:measured-temp" ^HZG_:measured-temp
   condition:
     0          EventDoIf('^HZG_',$hash,'measured-temp',0)<21 and {("$DEVICE"=~/^HZG_(.*)/;"Fenster_$1")}eq "open"
   devices:
   do:
     0:
       0          set Sonos_Wohnzimmer Speak 30 de Das Fenster im {(AttrVal("$DEVICE","alias", "$DEVICE"))} ist auf und es sind unter 21°C. Bitte schließen
     1:
   helper:
     DOIF_Readings_events
     DOIF_eventas
     event      measured-temp: 20.0
     globalinit 1
     last_timer 0
     sleeptimer -1
     triggerDev HZG_EG_WZ
     triggerEvents:
       measured-temp: 20.0
     triggerEventsState:
       measured-temp: 20.0
   internals:
   itimer:
   readings:
   trigger:
   uiState:
   uiTable:
Attributes:
   disable    0
   do         always
   room       DOIF

Wenn ich was neues gelernt, aber wie ich sehe ja noch nicht so ganz verstanden habe, fällt einem immer mehr ein was man machen könnte ::)
Titel: Antw:[GELÖST]Fenster offen -> Heizung schalten
Beitrag von: Damian am 08 Januar 2018, 16:17:15
Du kannst ruhig zwei DOIF lassen, allerdings muss der sleep unterschiedliche Namen bekommen z. B.

sleep 90 $DEVICE_1 quiet

sleep 70 $DEVICE_2 quiet

beim cancel genauso.

Das macht so wenig Sinn:

([#"^Fenster:closed":state:"open"] == 0) (cancel $DEVICE quiet)

Da du pro Fenster ein Sleep hast, musst du auch pro Fenster die den sleep cancel. Die Aggregationsfunktion musst du davon trennen.
Titel: Antw:[GELÖST]Fenster offen -> Heizung schalten
Beitrag von: Tabularasa am 08 Januar 2018, 21:55:38
Zitat von: Damian am 08 Januar 2018, 16:17:15
Das macht so wenig Sinn:

([#"^Fenster:closed":state:"open"] == 0) (cancel $DEVICE quiet)

Da du pro Fenster ein Sleep hast, musst du auch pro Fenster die den sleep cancel. Die Aggregationsfunktion musst du davon trennen.
Das hört sich für dich bestimmt leichter an, als es für mich ist ::)

Muss ich einen neuen Zweig machen?
(["^Fenster:closed"]) (cancel $DEVICE_1 quiet) DOELSEIF
([#"^Fenster:closed":state:"open"] == 0) (set TYPE=SONOSPLAYER:FILTER=presence=appeared Speak 50 de alle Fenster geschlossen)

Geht mir nur darum, dass, wenn alle Fenster zu sind, die Sonos das sagen.

edit: kannst du auch nochmal nach dem DOIF gucken vom letzten Post wo der Fehler war? Hab ich ganz allein erstellt(paste) :D
Titel: Antw:[GELÖST]Fenster offen -> Heizung schalten
Beitrag von: Damian am 08 Januar 2018, 22:13:48
Zitat von: Tabularasa am 08 Januar 2018, 21:55:38
Das hört sich für dich bestimmt leichter an, als es für mich ist ::)

Muss ich einen neuen Zweig machen?
(["^Fenster:closed"]) (cancel $DEVICE_1 quiet) DOELSEIF
([#"^Fenster:closed":state:"open"] == 0) (set TYPE=SONOSPLAYER:FILTER=presence=appeared Speak 50 de alle Fenster geschlossen)

Geht mir nur darum, dass, wenn alle Fenster zu sind, die Sonos das sagen.

([#"^Fenster:closed":state:"open"] == 0) (set TYPE=SONOSPLAYER:FILTER=presence=appeared Speak 50 de alle Fenster geschlossen)

würde ich in ein separates DOIF packen, da die obigen beiden Bedingungen den gleichen Trigger haben, da gewinnt immer die erste.

Titel: Antw:[GELÖST]Fenster offen -> Heizung schalten
Beitrag von: Tabularasa am 12 Januar 2018, 14:39:39
Hallo Damian. Kannst du dir das letzte DOIF vom Beitrag #16 nochmal ansehen ob ich das überhaupt so machen kann und was der Fehler bedeutet? Danke
Titel: Antw:[GELÖST]Fenster offen -> Heizung schalten
Beitrag von: Damian am 12 Januar 2018, 17:35:12
Zitat von: Tabularasa am 12 Januar 2018, 14:39:39
Hallo Damian. Kannst du dir das letzte DOIF vom Beitrag #16 nochmal ansehen ob ich das überhaupt so machen kann und was der Fehler bedeutet? Danke

Nein, in der Bedingung geht das nicht.