Hauptmenü

DOIF Rolladen

Begonnen von no_Legend, 01 Juni 2015, 15:03:10

Vorheriges Thema - Nächstes Thema

no_Legend

Hallo Leute,

ich will mir gerade eine kleine Steuerung für die Rolladen basteln, klappt aber irgendwie nicht richtig

Was ich will:
1. Schalter um das automatische hochfahren auszusetzen (habe einen Dummy mit on and off definiert
2. Zwei Zeiten mit Sunrise abhängig vom Wochentag zum Hochfahren. Sa + So später unter der Woche früher.

So sieht mein do if aus:
([1OG.Rolladen.Automatik] eq "on" and ($wday == 0 || $wday == 6) and [{sunrise("REAL",0,"09:00","10:30")}]) (set 1OG.*.Rolladen on) DOELSEIF ([1OG.Rolladen.Automatik] eq "on" and [{sunrise("REAL",0,"07:15","08:30")}]) (set 1OG.*.Rolladen on)

Problem:
Kann mir einer sagen ob das so richtig ist was ich getippt hab?
Oder hat jemand eine Möglichkeit die einfacher ist?

Danke und Gruß Robert
IntelNUC mit Ubuntu mit FHEM immer aktuell,2x HMLAN, CUL443, CUL868 -homekit/siri -tablet ui -homebridge
Device, diverse:
HM-SEC-KEY,HM-LC-BL1-FM,HM-SEC-SD,HM-Sen-DB-PCB,HM-Sec-RHS,HM-Sec-SC-2,HM-WDS10-TH-O,Harmony,Netamo, 433MHz Steckdosen uvm.

no_Legend

Hab glaub ich hin bekommen.
Wochenende sehe ich dann ob das andere sunrise funktioniert

([1OG.Rolladen.Automatik] eq "on" and ([{sunrise("REAL",0,"09:00","10:30")}|06])) (set 1OG.*.Rolladen on) DOELSEIF ([1OG.Rolladen.Automatik] eq "on" and ([{sunrise("REAL",0,"07:00","08:00")}])) (set 1OG.*.Rolladen on)
IntelNUC mit Ubuntu mit FHEM immer aktuell,2x HMLAN, CUL443, CUL868 -homekit/siri -tablet ui -homebridge
Device, diverse:
HM-SEC-KEY,HM-LC-BL1-FM,HM-SEC-SD,HM-Sen-DB-PCB,HM-Sec-RHS,HM-Sec-SC-2,HM-WDS10-TH-O,Harmony,Netamo, 433MHz Steckdosen uvm.

flurin

#2
Oder ein Tick einfacher:

|06 = |7


([?1OG.Rolladen.Automatik:on] and ([{sunrise("REAL",0,"09:00","10:30")}|7]))
  (set 1OG.*.Rolladen on)
DOELSEIF ([?1OG.Rolladen.Automatik:on] and ([{sunrise("REAL",0,"07:00","08:00")}|8]))
  (set 1OG.*.Rolladen on)


Edit: und noch kürzer ...


([?1OG.Rolladen.Automatik:on] and ([{sunrise("REAL",0,"09:00","10:30")}|7] or [{sunrise("REAL",0,"07:00","08:00")}|8]))
  (set 1OG.*.Rolladen on)


Ralli

... und das

attr ... do always

nicht vergessen ;). Oder stattdessen direkt auch mit einem

DOELSEIF ([?1OG.Rolladen.Automatik:on] and ([{sunset("REAL",0,"20:00","22:30")}|7] or [{sunset("REAL",0,"18:00","22:00")}|8])) (set 1OG.*.Rolladen off)

für einen zweiten Status im DOIF sorgen.
Gruß,
Ralli

Proxmox 8.1 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.3 dev, virtualisierte RaspberryMatic (3.75.6.20240316) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.1.5) und HMW-GW, FRITZBOX 7490 (07.57), FBDECT, Siri und Alexa

no_Legend

hi Flurin,

an das or hab ich garnicht gedacht: Shame on me.
Das mit 06=7 versteh ich nicht ganz. Besonders weil das andere ja 12345 also Mo-Fr ist.

Auch das ? vor dem Dummy versteh ich auch nicht ganz?

@Ralli danke für den Tip ein DOIF weniger.

Gruß Robert
IntelNUC mit Ubuntu mit FHEM immer aktuell,2x HMLAN, CUL443, CUL868 -homekit/siri -tablet ui -homebridge
Device, diverse:
HM-SEC-KEY,HM-LC-BL1-FM,HM-SEC-SD,HM-Sen-DB-PCB,HM-Sec-RHS,HM-Sec-SC-2,HM-WDS10-TH-O,Harmony,Netamo, 433MHz Steckdosen uvm.

flurin

Zitat von: no_Legend am 02 Juni 2015, 14:14:05
Das mit 06=7 versteh ich nicht ganz. Besonders weil das andere ja 12345 also Mo-Fr ist.

Auch das ? vor dem Dummy versteh ich auch nicht ganz?

Commandref-Auszug:

Zitat
Wochentagsteuerung

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 Wochende und Feiertage (entspricht $we) und 8 für Arbeitstage (entspricht !$we)

Anwendungsbeispiel: Radio soll am Wochenende und an Feiertagen um 08:30 Uhr eingeschaltet und um 09:30 Uhr ausgeschaltet werden. An Arbeitstagen soll das Radio um 06:30 Uhr eingeschaltet und um 07:30 Uhr ausgeschaltet werden.

define di_radio DOIF ([06:30|8] or [08:30|7]) (set radio on) DOELSEIF ([07:30|8] or [09:30|7]) (set radio off)

und

Zitat
Zeitintervalle, Readings und Stati ohne Trigger

Angaben in eckigen Klammern, die mit einem Fragezeichen beginnen, führen zu keiner Triggerung des Moduls, sie dienen lediglich der Abfrage.

Gruss
flurin

no_Legend

Ich hab das ganze gestern mal folgender Maßen eingepflegt:

define Rolladen.Automatik.Alle DOIF
([?1OG.Rolladen.Automatik:on] and ([{sunrise("REAL",0,"09:00","10:30")}|7] or [{sunrise("REAL",0,"07:00","08:00")}|8]))
  (set 1OG.*.Rolladen on)
DOELSEIF
([?1OG.Rolladen.Automatik:on] and ([{sunset("REAL",0,"20:00","22:30")}|7] or [{sunset("REAL",0,"18:00","22:00")}|8])) (set 1OG.*.Rolladen off)


Leider hat es heute morgen nicht funktioniert.
Hab ich irgendwo etwas falsch gemacht?

Gruß Robert
IntelNUC mit Ubuntu mit FHEM immer aktuell,2x HMLAN, CUL443, CUL868 -homekit/siri -tablet ui -homebridge
Device, diverse:
HM-SEC-KEY,HM-LC-BL1-FM,HM-SEC-SD,HM-Sen-DB-PCB,HM-Sec-RHS,HM-Sec-SC-2,HM-WDS10-TH-O,Harmony,Netamo, 433MHz Steckdosen uvm.

flurin

#7
Zitat von: no_Legend am 03 Juni 2015, 08:00:30
Leider hat es heute morgen nicht funktioniert.
Hab ich irgendwo etwas falsch gemacht?

Mein Fehler, so sollte es klappen:

define Rolladen.Automatik.Alle DOIF
([?1OG.Rolladen.Automatik] eq "on" and ([{sunrise("REAL",0,"09:00","10:30")}|7] or [{sunrise("REAL",0,"07:00","08:00")}|8]))
  (set 1OG.*.Rolladen on)
DOELSEIF
([?1OG.Rolladen.Automatik] eq "on" and ([{sunset("REAL",0,"20:00","22:30")}|7] or [{sunset("REAL",0,"18:00","22:00")}|8]))
  (set 1OG.*.Rolladen off)


no_Legend

Hab schon gedacht ich hab was falsche eingetippt.
Ich werd mal schauen ob das Script heute Abend funktioniert.
IntelNUC mit Ubuntu mit FHEM immer aktuell,2x HMLAN, CUL443, CUL868 -homekit/siri -tablet ui -homebridge
Device, diverse:
HM-SEC-KEY,HM-LC-BL1-FM,HM-SEC-SD,HM-Sen-DB-PCB,HM-Sec-RHS,HM-Sec-SC-2,HM-WDS10-TH-O,Harmony,Netamo, 433MHz Steckdosen uvm.

no_Legend

Mir ist gerade aufgefallen das es wohl besser wäre die Wochenenden Variable zu benutzten.
Somit hätte ich auch gleich die Feiertage mit abgefangen.

Da kümmere ich mich Sonntag drum.

Gruß Robert
IntelNUC mit Ubuntu mit FHEM immer aktuell,2x HMLAN, CUL443, CUL868 -homekit/siri -tablet ui -homebridge
Device, diverse:
HM-SEC-KEY,HM-LC-BL1-FM,HM-SEC-SD,HM-Sen-DB-PCB,HM-Sec-RHS,HM-Sec-SC-2,HM-WDS10-TH-O,Harmony,Netamo, 433MHz Steckdosen uvm.

Damian

Zitat von: no_Legend am 04 Juni 2015, 12:07:43
Mir ist gerade aufgefallen das es wohl besser wäre die Wochenenden Variable zu benutzten.
Somit hätte ich auch gleich die Feiertage mit abgefangen.

Da kümmere ich mich Sonntag drum.

Gruß Robert

7 entspricht $we inklusive Feiertage.

Auszug aus der Commandref zu DOIF

Zitat[<time>|012345678] 0-8 entspricht: 0-Sonntag, 1-Montag, ... bis 6-Samstag sowie 7 für Wochende und Feiertage (entspricht $we) und 8 für Arbeitstage (entspricht !$we)


Gruß

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

flurin

#11
@no_Legend

Zitat von: no_Legend am 04 Juni 2015, 12:07:43
Mir ist gerade aufgefallen das es wohl besser wäre die Wochenenden Variable zu benutzten.
Somit hätte ich auch gleich die Feiertage mit abgefangen.

Schade! hättest du Antwort Nr. 5 gelesen, wäre deine "Überlegung" überflüssig.  ;)

no_Legend

Zitat von: flurin am 04 Juni 2015, 13:42:29
@no_Legend

Schade! hättest du Antwort Nr. 5 gelesen, wäre deine "Überlegung" überflüssig.  ;)

Sorry flurin,

lass es mich in den Worten meines Ausbildungsmeisters sagen:
Wer lesen kann ist klar im Vorteil!!!!!!

Danke noch mal fürs hinweisen.
IntelNUC mit Ubuntu mit FHEM immer aktuell,2x HMLAN, CUL443, CUL868 -homekit/siri -tablet ui -homebridge
Device, diverse:
HM-SEC-KEY,HM-LC-BL1-FM,HM-SEC-SD,HM-Sen-DB-PCB,HM-Sec-RHS,HM-Sec-SC-2,HM-WDS10-TH-O,Harmony,Netamo, 433MHz Steckdosen uvm.

kvo1

Hallo Zusammen,

ich habe ein ähnliches Problemchen .... bisher läuft meinr Rolllandensteuerung tadellos.
Habe 3 MODI (HAND/ASTRO/FHEM).
HAND   fährt nur manuel
ASTRO  fährt nach Sonnenauf- und Untergang
FHEM    fährt nach per dummy festgelegten Zeiten (WT und WE unterschiedlich hoch / runter immer gleich)

Hier ein Bsp:

# Dummys fuer Modus definieren
define RolloModusBZ dummy
attr RolloModusBZ alias Rollläden BZ - Modus
attr RolloModusBZ devStateIcon FHEM:fts_shutter_automatic@green ASTRO:fts_shutter_updown@blue HAND:fts_shutter_manual@red
attr RolloModusBZ group Jalousie
attr RolloModusBZ icon signal_Fenster_Offen.off
attr RolloModusBZ room Automation
attr RolloModusBZ setList state:FHEM,ASTRO,HAND
attr RolloModusBZ sortby 20
attr RolloModusBZ webCmd state

# Dummys fuer Zeit Hoch Woche
define du_RolloZeitBZ_hoch_WT dummy
attr du_RolloZeitBZ_hoch_WT alias Rollläden BZ - Zeit öffnen WT
attr du_RolloZeitBZ_hoch_WT devStateIcon .*:rc_BLANK
attr du_RolloZeitBZ_hoch_WT group Jalousie
attr du_RolloZeitBZ_hoch_WT icon icoUhr
attr du_RolloZeitBZ_hoch_WT room Automation
attr du_RolloZeitBZ_hoch_WT setList state:time
attr du_RolloZeitBZ_hoch_WT sortby 21
attr du_RolloZeitBZ_hoch_WT webCmd state

# Dummys fuer Zeit Hoch Wochenende
define du_RolloZeitBZ_hoch_WE dummy
attr du_RolloZeitBZ_hoch_WE alias Rollläden BZ - Zeit öffnen WE
attr du_RolloZeitBZ_hoch_WE devStateIcon .*:rc_BLANK
attr du_RolloZeitBZ_hoch_WE group Jalousie
attr du_RolloZeitBZ_hoch_WE icon icoUhr
attr du_RolloZeitBZ_hoch_WE room Automation
attr du_RolloZeitBZ_hoch_WE setList state:time
attr du_RolloZeitBZ_hoch_WE sortby 22
attr du_RolloZeitBZ_hoch_WE webCmd state

# Dummys fuer Zeit runter (Woche und Wochenende ggf. erweitern)
define du_RolloZeitBZ_runter dummy
attr du_RolloZeitBZ_runter alias Rollläden BZ - Zeit schliessen
attr du_RolloZeitBZ_runter devStateIcon *:rc_BLANK
attr du_RolloZeitBZ_runter group Jalousie
attr du_RolloZeitBZ_runter icon icoUhr
attr du_RolloZeitBZ_runter room Automation
attr du_RolloZeitBZ_runter setList state:time
attr du_RolloZeitBZ_runter sortby 23
attr du_RolloZeitBZ_runter webCmd state

########### Dummy Rollo
define DU_BZ_Rollladen dummy
attr DU_BZ_Rollladen devStateIcon auf:roll_oben zu:roll_unten halb:roll_50
attr DU_BZ_Rollladen eventMap on:auf off:zu 50\x20%:halb
attr DU_BZ_Rollladen group Fenster_Dummy
attr DU_BZ_Rollladen room Automation
attr DU_BZ_Rollladen sortby 20
attr DU_BZ_Rollladen webCmd stop:auf:zu

#########################################################################
##### Steuerung Automatik (FHEM=Zeit / ASTRO=sun(set/rise) oder HAND ####
#########################################################################
define Rollo_AutomatikBZ DOIF ([RolloModusBZ] eq "FHEM" and ([[du_RolloZeitBZ_hoch_WT]|8] or [[du_RolloZeitBZ_hoch_WE]|7]) or [RolloModusBZ] eq "ASTRO" and [Tageslicht] eq "hell") (set BZ_Rollladen auf, set DU_BZ_Rollladen auf) DOELSEIF ([RolloModusBZ] eq "FHEM" and ([[du_RolloZeitBZ_runter]|8] or [[du_RolloZeitBZ_runter]|7]) or [RolloModusBZ] eq "ASTRO" and [Tageslicht] eq "dunkel") (set BZ_Rollladen zu, set DU_BZ_Rollladen zu)
attr Rollo_AutomatikBZ group doif
attr Rollo_AutomatikBZ room Automation
attr Rollo_AutomatikBZ sortby 12


DU_BZ_Rollladen ist nur noch zu Testzwecken eingebau !

Jetzt möchte ich aber, das sich der Rolllanden an Feiertagen / Ferien wie am WE verhält , also genau
an den eingestellten WE-Zeiten hochfährt.

Dazu habe ich einen "Ferien/FeiertagsKalender"  , diesen lese ich zyklisch aus und wenn der nächste
Tag ein Ferien oder Feiertag ist dann wird ein Dummy "BLN_Ferientag" auf 1 gesetzt.

leider gelingt es mir bisher nicht das DOIF so zu erweitern! Irgendwie dreh ich mich gerade im Kreis,
hab schon alles (vermutlich nicht sonst würde es ja klappen) versucht

Hat irgendwer einen TIP !

Danke vorab
Klaus

RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

no_Legend

@Kvo1

Benutzt du nicht den Holiday Kalender in FHEM für die Feiertage?
Also holiday2we?

Gruß Robert
IntelNUC mit Ubuntu mit FHEM immer aktuell,2x HMLAN, CUL443, CUL868 -homekit/siri -tablet ui -homebridge
Device, diverse:
HM-SEC-KEY,HM-LC-BL1-FM,HM-SEC-SD,HM-Sen-DB-PCB,HM-Sec-RHS,HM-Sec-SC-2,HM-WDS10-TH-O,Harmony,Netamo, 433MHz Steckdosen uvm.

kvo1

Zitat von: no_Legend am 09 Juni 2015, 10:37:44
@Kvo1

Benutzt du nicht den Holiday Kalender in FHEM für die Feiertage?
Also holiday2we?

Gruß Robert
Hallo Robert,

NEIN, dann müßte ich ja auch eine Holiday Datei pflegen (wenn ich das richtig verstanden habe ) ?!
und dort immer alle Feiertage und Ferientage eintragen ...

klaus
RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

Virsacer

ZitatDazu habe ich einen "Ferien/FeiertagsKalender"  , diesen lese ich zyklisch aus und wenn der nächste
Tag ein Ferien oder Feiertag ist dann wird ein Dummy "BLN_Ferientag" auf 1 gesetzt.
Also ich schaue beim Schalten, ob der aktuelle Tag ein Feiertag ist...

kvo1


ZitatAlso ich schaue beim Schalten, ob der aktuelle Tag ein Feiertag ist...

und wie genau machst Du das ?




RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

Virsacer

Naja, ich schaue in der DOIF Bedingung einfach, ob was in [Calendar_Holiday:modeStart] steht ;)

kvo1

Zitat von: Virsacer am 09 Juni 2015, 13:19:59
Naja, ich schaue in der DOIF Bedingung einfach, ob was in [Calendar_Holiday:modeStart] steht ;)

Letztlich möchte ich ja mit meinen Owncloud-Kalender und dem dummy nichts anderes erreichen , mir fehlt nur die Erweiterung des
bereits vorhandenen DOIF........ da breche ich mir gerade einen ab , bekomme es nícht hin  ::)

so sieht das DOIF bisher aus

define Rollo_AutomatikBZ DOIF ([RolloModusBZ] eq "FHEM" and ([[du_RolloZeitBZ_hoch_WT]|8] or [[du_RolloZeitBZ_hoch_WE]|7]) or [RolloModusBZ] eq "ASTRO" and [Tageslicht] eq "hell") (set BZ_Rollladen auf, set DU_BZ_Rollladen auf) DOELSEIF ([RolloModusBZ] eq "FHEM" and ([[du_RolloZeitBZ_runter]|8] or [[du_RolloZeitBZ_runter]|7]) or [RolloModusBZ] eq "ASTRO" and [Tageslicht] eq "dunkel") (set BZ_Rollladen zu, set DU_BZ_Rollladen zu)
RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

flurin

#20
Zitat von: kvo1 am 09 Juni 2015, 16:55:01
so sieht das DOIF bisher aus

define Rollo_AutomatikBZ DOIF ([RolloModusBZ] eq "FHEM" and ([[du_RolloZeitBZ_hoch_WT]|8] or [[du_RolloZeitBZ_hoch_WE]|7]) or [RolloModusBZ] eq "ASTRO" and [Tageslicht] eq "hell") (set BZ_Rollladen auf, set DU_BZ_Rollladen auf) DOELSEIF ([RolloModusBZ] eq "FHEM" and ([[du_RolloZeitBZ_runter]|8] or [[du_RolloZeitBZ_runter]|7]) or [RolloModusBZ] eq "ASTRO" and [Tageslicht] eq "dunkel") (set BZ_Rollladen zu, set DU_BZ_Rollladen zu)

Es ist vermutlich ein Problem mit den Klammern:

define Rollo_AutomatikBZ DOIF ([RolloModusBZ] eq "FHEM" and ([[du_RolloZeitBZ_hoch_WT]|8] or [[du_RolloZeitBZ_hoch_WE]|7])
or ([RolloModusBZ] eq "ASTRO" and [Tageslicht] eq "hell"))
   (set BZ_Rollladen auf, set DU_BZ_Rollladen auf)
DOELSEIF ([RolloModusBZ] eq "FHEM" and ([[du_RolloZeitBZ_runter]|8] or [[du_RolloZeitBZ_runter]|7])
or ([RolloModusBZ] eq "ASTRO" and [Tageslicht] eq "dunkel"))
   (set BZ_Rollladen zu, set DU_BZ_Rollladen zu)


Edit: Evt. noch feiner unterteilen:
define Rollo_AutomatikBZ DOIF (([RolloModusBZ] eq "FHEM" and ([[du_RolloZeitBZ_hoch_WT]|8] or [[du_RolloZeitBZ_hoch_WE]|7]))
or ([RolloModusBZ] eq "ASTRO" and [Tageslicht] eq "hell"))
   (set BZ_Rollladen auf, set DU_BZ_Rollladen auf)
DOELSEIF (([RolloModusBZ] eq "FHEM" and ([[du_RolloZeitBZ_runter]|8] or [[du_RolloZeitBZ_runter]|7]))
or ([RolloModusBZ] eq "ASTRO" and [Tageslicht] eq "dunkel"))
   (set BZ_Rollladen zu, set DU_BZ_Rollladen zu)




kvo1

Hallo flurin,

ich glaube , ich habe mich da vermutlich etwas ungeschickt ausgedrückt.

So wie in meinem Beitrag von "am: Heute um 00:03:57 " dargestellt läuft das alles wunderbar.

Ich möchte das jetzt nur noch dahin gehend erweitern , das sich die Rollladen auch unter der Woche wenn ein Feiertag ist oder Ferien sind
(also wenn das dummy "BLN_Ferientag" auf 1 gesetzt ist so verhalten wie am Wochenenden (also später öffnen).

LG
Klaus
RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

flurin

Zitat von: kvo1 am 09 Juni 2015, 20:32:27
Hallo flurin,

ich glaube , ich habe mich da vermutlich etwas ungeschickt ausgedrückt.

So wie in meinem Beitrag von "am: Heute um 00:03:57 " dargestellt läuft das alles wunderbar.

Ich möchte das jetzt nur noch dahin gehend erweitern , das sich die Rollladen auch unter der Woche wenn ein Feiertag ist oder Ferien sind
(also wenn das dummy "BLN_Ferientag" auf 1 gesetzt ist so verhalten wie am Wochenenden (also später öffnen).

LG
Klaus

Okey, ich hab's übersehen, sorry.

Wobei 7 der $we Variable entspricht, d.h. Wochenende und Feiertage.
Siehe auch global holiday2we.


kvo1

ZitatWobei 7 der $we Variable entspricht, d.h. Wochenende und Feiertage.
Siehe auch global holiday2we.

aber "holiday2we" wird ja in meiner Variante m.E. überhaupt nicht genutzt !
und was mache ich mit den Ferien ?

Vielleicht hat ja Damian noch eine IDEE wenn er das hier liest  :-[

klaus
RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

Damian

Zitat von: kvo1 am 09 Juni 2015, 21:57:56
aber "holiday2we" wird ja in meiner Variante m.E. überhaupt nicht genutzt !
und was mache ich mit den Ferien ?

Vielleicht hat ja Damian noch eine IDEE wenn er das hier liest  :-[

klaus


Dann musst du einfach

...([[du_RolloZeitBZ_hoch_WT]|8] or [[du_RolloZeitBZ_hoch_WE]|7])...

erweitern auf

...([[du_RolloZeitBZ_hoch_WT]|8] or [[du_RolloZeitBZ_hoch_WE]|7] or [[du_RolloZeitBZ_hoch_WE]] and [BLN_Ferientag] == 1)...

Das Runterfahren schaffst du dann alleine.

Gruß

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

no_Legend

Das mit den Feiertagen mit Holiday2we ist kein pflege Aufwand.
Wir einmal definiert.

Die Variablen Feiertage werden per Formel errechnet.
Sonst hätte ich ihn auch nicht genutzt keine Lust jedes Jahr das Teil anzupassen.
IntelNUC mit Ubuntu mit FHEM immer aktuell,2x HMLAN, CUL443, CUL868 -homekit/siri -tablet ui -homebridge
Device, diverse:
HM-SEC-KEY,HM-LC-BL1-FM,HM-SEC-SD,HM-Sen-DB-PCB,HM-Sec-RHS,HM-Sec-SC-2,HM-WDS10-TH-O,Harmony,Netamo, 433MHz Steckdosen uvm.

kvo1

Hallo Damian,

habe ich getestet, geht so leider nicht (oder falsch verstanden).

Der Rolllanden fuhr ganz normal hoch weil schon ....[[du_RolloZeitBZ_hoch_WT]|8]..... erfüllt war .
ABER: im Kalender ist für heute ein Feiertag (testweise) und BLN_Ferientag ist somit 1 , d.h. der
Rolllanden hätte erst später (wenn du_RolloZeitBZ_hoch_WE  eintritt) hochfahren dürfen.
RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

flurin

#27
Zitat von: kvo1 am 10 Juni 2015, 08:12:43
Hallo Damian,

habe ich getestet, geht so leider nicht (oder falsch verstanden).

Der Rolllanden fuhr ganz normal hoch weil schon ....[[du_RolloZeitBZ_hoch_WT]|8]..... erfüllt war .
ABER: im Kalender ist für heute ein Feiertag (testweise) und BLN_Ferientag ist somit 1 , d.h. der
Rolllanden hätte erst später (wenn du_RolloZeitBZ_hoch_WE  eintritt) hochfahren dürfen.

Das ist das Problem bei solchen DOIF Einzeilern, sie sind schwer zu warten.
Du müsstest zusätzlich noch [BLN_Ferientag] == 0 einbauen.
IMHO ist es besser das DOIF aufzuteilen. Einige Beispiele findest du hier im Forum.

Gruss
flurin

en-trust

Wenn ich neben dem Modus FHEM noch einen weiteren Modus für eine manuelle Zeiteingabe einrichten möchte, muss ich dann weitere Dummys analog zu du_RolloZeitBZ_hoch_WE einrichten ?

Fhem...
# Dummys fuer Zeit Hoch Woche
define du_RolloZeitBZ_hoch_WT dummy
attr du_RolloZeitBZ_hoch_WT alias Rollläden BZ - Zeit öffnen WT
attr du_RolloZeitBZ_hoch_WT devStateIcon .*:rc_BLANK
attr du_RolloZeitBZ_hoch_WT group Jalousie
attr du_RolloZeitBZ_hoch_WT icon icoUhr
attr du_RolloZeitBZ_hoch_WT room Automation
attr du_RolloZeitBZ_hoch_WT setList state:time
attr du_RolloZeitBZ_hoch_WT sortby 21
attr du_RolloZeitBZ_hoch_WT webCmd state


Events, um Rolladen später runter zu fahren...
# Dummys fuer Zeit Hoch Woche
define du_RolloEventBZ_hoch_WT dummy
attr du_RolloEventBZ_hoch_WT alias Rollläden BZ - Zeit öffnen WT
attr du_RolloEventBZ_hoch_WT devStateIcon .*:rc_BLANK
attr du_RolloEventBZ_hoch_WT group Jalousie
attr du_RolloEventBZ_hoch_WT icon icoUhr
attr du_RolloEventBZ_hoch_WT room Automation
attr du_RolloEventBZ_hoch_WT setList state:time
attr du_RolloEventBZ_hoch_WT sortby 21
attr du_RolloEventBZ_hoch_WT webCmd state

Per

Zitat von: kvo1 am 09 Juni 2015, 21:57:56
aber "holiday2we" wird ja in meiner Variante m.E. überhaupt nicht genutzt !
und was mache ich mit den Ferien ?
Ich finde es einfacher, die Feiertagsdatei einmal zu pflegen als jeden Ferien-/Feiertag manuell in das DOIF :o einzutragen.

Nebenbei: lasst doch bitte die für die Funktion völlig unwichtigen Attribute wie group, icon oder room weg! Das erhöht den Überblick ungemein! Bei drei Einträgen fängt man nämlich schon an zu scrollen und sieht nicht mehr alles auf einmal.

en-trust

Kaum habe ich einen neuen Modus (XMas) aufgenommen, fährt die Jalousie gar nicht mehr hoch/runter.


#
# Jalousienregelung (FHZ)
#
define Modus_RL dummy
attr Modus_RL alias Jalousienmodus
attr Modus_RL devStateIcon devStateIcon Auto:fts_shutter_automatic URLAUB:fts_shutter ASTRO:fts_shutter_updown HAND:fts_shutter_manual XMas:fts_shutter_automatic
attr Modus_RL eventMap Auto URLAUB ASTRO HAND XMas
attr Modus_RL setList state:Auto,URLAUB,ASTRO,HAND,XMas
attr Modus_RL webCmd state

#
# Definition Jalousien-Aktoren (WZ.Rechts)
#
define WZ.Jalousie.Rechts ...attr WZ.Jalousie.Rechts userattr room_map structexclude

# Dummy fürs zeitliches Hochfahren (Werktags)
define du_WZ.Jalousie.Rechts.Up_WT dummy
attr du_WZ.Jalousie.Rechts.Up_WT alias Jalousien WZ (Rechts) - zeitliches Hochfahren (Werktags)
attr du_WZ.Jalousie.Rechts.Up_WT devStateIcon .*:rc_BLANK
attr du_WZ.Jalousie.Rechts.Up_WT setList state:time
attr du_WZ.Jalousie.Rechts.Up_WT webCmd state

# Dummy fürs zeitliches Hochfahren (Wochenende)
define du_WZ.Jalousie.Rechts.Up_WE dummy
attr du_WZ.Jalousie.Rechts.Up_WE alias Jalousien WZ (Rechts) - zeitliches Hochfahren (Wochenende)
attr du_WZ.Jalousie.Rechts.Up_WE devStateIcon .*:rc_BLANK
attr du_WZ.Jalousie.Rechts.Up_WE setList state:time
attr du_WZ.Jalousie.Rechts.Up_WE webCmd state

# Dummy fürs zeitliches Herunterfahren (Werktags und Wochenende)
define du_WZ.Jalousie.Rechts.Down dummy
attr du_WZ.Jalousie.Rechts.Down alias Jalousien WZ (Rechts) - zeitliches Herunterfahren
attr du_WZ.Jalousie.Rechts.Down devStateIcon *:rc_BLANK
attr du_WZ.Jalousie.Rechts.Down setList state:time
attr du_WZ.Jalousie.Rechts.Down webCmd state


Der eigentliche Knackpunkt liegt wohl hier...

#
# Steuerung Automatik (Auto -> Zeit / ASTRO -> sun(-set/-rise) / HAND oder XMas)
#
define WZ.Jalousie.Rechts.Auto DOIF ([Modus_RL] eq "Auto" and ([[du_WZ.Jalousie.Rechts.Up_WT]|8] or [[du_WZ.Jalousie.Rechts.Up_WE]|7])) (set WZ.Jalousie.Rechts 100) \
DOELSEIF ([Modus_RL] eq "Auto" and ([[du_WZ.Jalousie.Rechts.Down]|8] or [[du_WZ.Jalousie.Rechts.Down]|7])) (set WZ.Jalousie.Rechts 0) \
DOELSEIF ([Modus_RL] eq "Urlaub" and ([[du_WZ.Jalousie.Rechts.Up_WT]|8] or [[du_WZ.Jalousie.Rechts.Up_WE]|7])) (set WZ.Jalousie.Rechts 100) \
DOELSEIF ([Modus_RL] eq "Urlaub" and [10:25]) (set WZ.Jalousie.Rechts 40) \
DOELSEIF ([Modus_RL] eq "Urlaub" and [22:00]) (set WZ.Jalousie.Rechts 0)
DOELSEIF ([Modus_RL] eq "ASTRO" and [Tageslicht] eq "hell") (set WZ.Jalousie.Rechts 100) \
DOELSEIF ([Modus_RL] eq "ASTRO" and [Tageslicht] eq "dunkel") (set WZ.Jalousie.Rechts 0) \
DOELSEIF ([Modus_RL] eq "XMas" and ([[du_WZ.Jalousie.Rechts.Up_WT]|8] or [[du_WZ.Jalousie.Rechts.Up_WE]|7])) (set WZ.Jalousie.Rechts 100) \
DOELSEIF ([Modus_RL] eq "XMas" and [22:00]) (set WZ.Jalousie.Rechts 0)
attr WZ.Jalousie.Rechts.Auto group Jalousien-Zeitgeber
attr WZ.Jalousie.Rechts.Auto room Automation


Vielleicht kann ja mal jemand einen Blick drauf werfen.

automatisierer

wenn du ein list vom DOIF (am besten direkt nachdem es nicht funktioniert hat) posten würdest, statt der definition, könnte man evtl. eher sehen woran es liegt... die definition sieht mMn zumindest mal plausibel aus.

en-trust

Habe testweise die Zeit von XMas auf 17:30 gesetzt und es tat sich nichts. Hier nun das list vom WZ.Jalousie.Rechts.Auto

Internals:
   CFGFN      ./FHEM/fhem_activeactors.cfg
   DEF        ([Modus_RL] eq "Auto" and ([[du_WZ.Jalousie.Rechts.Up_WT]|8] or [[du_WZ.Jalousie.Rechts.Up_WE]|7])) (set WZ.Jalousie.Rechts 100)
DOELSEIF ([Modus_RL] eq "Auto" and ([[du_WZ.Jalousie.Rechts.Down]|8] or [[du_WZ.Jalousie.Rechts.Down]|7])) (set WZ.Jalousie.Rechts 0)
DOELSEIF ([Modus_RL] eq "Urlaub" and ([[du_WZ.Jalousie.Rechts.Up_WT]|8] or [[du_WZ.Jalousie.Rechts.Up_WE]|7])) (set WZ.Jalousie.Rechts 100)
DOELSEIF ([Modus_RL] eq "Urlaub" and [10:25]) (set WZ.Jalousie.Rechts 40)
DOELSEIF ([Modus_RL] eq "Urlaub" and [17:30]) (set WZ.Jalousie.Rechts 0)
   NAME       WZ.Jalousie.Rechts.Auto
   NR         160
   NTFY_ORDER 50-WZ.Jalousie.Rechts.Auto
   STATE      initialized
   TYPE       DOIF
   READINGS:
     2017-12-01 17:20:15   cmd             0
     2017-12-01 17:20:15   state           initialized
     2017-12-01 17:21:28   timer_01_c01    02.12.2017 08:00:00|8
     2017-12-01 17:21:28   timer_02_c01    02.12.2017 08:20:00|7
     2017-12-01 17:21:28   timer_03_c02    01.12.2017 22:00:00|8
     2017-12-01 17:21:28   timer_04_c02    01.12.2017 22:00:00|7
     2017-12-01 17:21:28   timer_05_c03    02.12.2017 08:00:00|8
     2017-12-01 17:21:28   timer_06_c03    02.12.2017 08:20:00|7
     2017-12-01 17:21:28   timer_07_c04    02.12.2017 10:25:00
     2017-12-01 17:30:00   timer_08_c05    02.12.2017 17:30:00
   condition:
     0          InternalDoIf($hash,'Modus_RL','STATE') eq "Auto" and (DOIF_time_once($hash,0,$wday,"8") or DOIF_time_once($hash,1,$wday,"7"))
     1          InternalDoIf($hash,'Modus_RL','STATE') eq "Auto" and (DOIF_time_once($hash,2,$wday,"8") or DOIF_time_once($hash,3,$wday,"7"))
     2          InternalDoIf($hash,'Modus_RL','STATE') eq "Urlaub" and (DOIF_time_once($hash,4,$wday,"8") or DOIF_time_once($hash,5,$wday,"7"))
     3          InternalDoIf($hash,'Modus_RL','STATE') eq "Urlaub" and DOIF_time_once($hash,6,$wday)
     4          InternalDoIf($hash,'Modus_RL','STATE') eq "Urlaub" and DOIF_time_once($hash,7,$wday)
   days:
     0          8
     1          7
     2          8
     3          7
     4          8
     5          7
   devices:
     0           Modus_RL
     1           Modus_RL
     2           Modus_RL
     3           Modus_RL
     4           Modus_RL
     all         Modus_RL
   do:
     0:
       0          set WZ.Jalousie.Rechts 100
     1:
       0          set WZ.Jalousie.Rechts 0
     2:
       0          set WZ.Jalousie.Rechts 100
     3:
       0          set WZ.Jalousie.Rechts 40
     4:
       0          set WZ.Jalousie.Rechts 0
     5:
   helper:
     event      timer_8
     globalinit 1
     last_timer 8
     sleeptimer -1
     triggerDev
     triggerEvents:
       timer_8
   internals:
     0           Modus_RL:STATE
     1           Modus_RL:STATE
     2           Modus_RL:STATE
     3           Modus_RL:STATE
     4           Modus_RL:STATE
     all         Modus_RL:STATE
   interval:
   itimer:
     all         du_WZ.Jalousie.Rechts.Up_WT du_WZ.Jalousie.Rechts.Up_WE du_WZ.Jalousie.Rechts.Down
   localtime:
     0          1512198000
     1          1512199200
     2          1512162000
     3          1512162000
     4          1512198000
     5          1512199200
     6          1512206700
     7          1512232200
   readings:
   realtime:
     0          08:00:00
     1          08:20:00
     2          22:00:00
     3          22:00:00
     4          08:00:00
     5          08:20:00
     6          10:25:00
     7          17:30:00
   regexp:
     all:
   state:
     STATE:
   time:
     0          [du_WZ.Jalousie.Rechts.Up_WT]
     1          [du_WZ.Jalousie.Rechts.Up_WE]
     2          [du_WZ.Jalousie.Rechts.Down]
     3          [du_WZ.Jalousie.Rechts.Down]
     4          [du_WZ.Jalousie.Rechts.Up_WT]
     5          [du_WZ.Jalousie.Rechts.Up_WE]
     6          10:25:00
     7          17:30:00
   timeCond:
     0          0
     1          0
     2          1
     3          1
     4          2
     5          2
     6          3
     7          4
   timer:
     0          0
     1          0
     2          0
     3          0
     4          0
     5          0
     6          0
     7          0
   timers:
     0           0  1
     1           2  3
     2           4  5
     3           6
     4           7
   triggertime:
     1512162000:
       localtime  1512162000
       hash:
     1512198000:
       localtime  1512198000
       hash:
     1512199200:
       localtime  1512199200
       hash:
     1512206700:
       localtime  1512206700
       hash:
     1512232200:
       localtime  1512232200
       hash:
Attributes:
   group      Jalousien-Zeitgeber
   room       Automation

automatisierer

#33
ich sehe keine Bedingungen mit XMas, da gibts nur Auto und Urlaub

sieht mir fast so aus, als hättest du die .cfg editiert und nicht neu geladen...

en-trust

Jetzt klappt es. Vermutlich nimmt dem das rereadcfg nicht richtig an. Im list steht jedenfalls jetzt auch Xmas.

buchner51

Hallo,

ich bräuchte etwas Hilfe. Ich versuche gerade auf Sonnenaufgang umzusteigen mit einen DOIF aber leider ohne Erfolg.

defmod Rollo_Wohnen_Sonne DOIF ([{sunset(-1500, "16:00", "22:00")}]-[{sunrise(+1800, "07:00", "9:00")}])    (set wz_Rollo_Hof 100) DOELSE (set wz_Rollo_Hof 0)
attr Rollo_Wohnen_Sonne room Schaltuhr

setstate Rollo_Wohnen_Sonne cmd_2
setstate Rollo_Wohnen_Sonne 2018-01-20 08:36:13 cmd 2
setstate Rollo_Wohnen_Sonne 2018-01-20 08:36:13 cmd_event Rollo_Wohnen_Sonne
setstate Rollo_Wohnen_Sonne 2018-01-20 08:36:13 cmd_nr 2
setstate Rollo_Wohnen_Sonne 2018-01-20 08:36:13 error set wz_Rollo_Hof 0: Unknown argument 0, choose one of value:slider,0,1,100 string on-for-timer raw off rgb:colorpicker on on-until off-till-overnight blink on-till toggle off-for-timer on-till-overnight off-till intervals
setstate Rollo_Wohnen_Sonne 2018-01-20 08:36:09 mode enabled
setstate Rollo_Wohnen_Sonne 2018-01-20 08:36:13 state cmd_2
setstate Rollo_Wohnen_Sonne 2018-01-20 08:36:09 timer_01_c01 20.01.2018 17:11:22
setstate Rollo_Wohnen_Sonne 2018-01-20 08:36:09 timer_02_c01 21.01.2018 08:10:19


wenn ich das richtig sehe stimmt zwar die Zeit wo die Rollos fahren sollen aber die Prozentangabe ist unbekannt.

Was mache ich falsch??
Raspberry pi 3+
KNX mit TUL, FHEM mit SMARTVISU 2.9

Ellert

#36
Sieht so aus, wie ein Problem des Moduls, das den set-Befehl verarbeiten soll.

Außerdem, solltest Du Dir die Angabe der Zeitspanne genauer ansehen, in der deutschsprachigen Befehlsreferenz gibt es Beispiele, zum Abgleichen.

buchner51

Hallo,

habs gelöst:Bei KNX ist der set Befehl:

set group=Rollo_Wohnraum value 100

Manchmal verrennt man sich einfach.
Raspberry pi 3+
KNX mit TUL, FHEM mit SMARTVISU 2.9

tweety-rt

Hallo,

bin FHEM-Frischling und lebe aktuell von Lösungen, die man in diesem grandiosen Forum findet.
Aktuell fahre ich meine Dachfenster-Rollos mit diesem at erfolgreich abends runter
*{twilight("LichtWetter","ss_indoor","16:00","22:00")} set SZ_Rollo zu
jetzt wollte ich mich am ersten DOIF versuchen mit dem Ziel, dass der Rollo nur runter fährt, wenn es kälter als 18 Grad ist und ansonsten hoch fährt. Morgens das ganze dann umgekehrt. Ist es draussen warm, lasse ich tagsüber zu und mache abends zum lüften auf. Ist es draussen kalt, mache ich abends zu. Aber nur zwischen 16:00 und 21:00 Uhr. Habe leider kein passendes Beispiel gefunden. Habe folgendes definiert:
([{twilight("LichtWetter","ss_indoor","16:00","21:00")}] and [YahooWetter:temperature] < 18) (set SZ_Rollo zu) DOELSE ([{twilight("LichtWetter","ss_indoor","16:00","21:00")}] and [YahooWetter:temperature] > 18)(set SZ_Rollo offen)
Leider geht der Rollo abends nicht runter obwohl unter 18 Grad.
Im DOIF hat fhem den richtigen Timer und die Temperatur. State ist cmd_2 ???
Kann mir bitte jemand auf die Sprünge helfen?

Ellert

Du verwendest DOELSE mit einer Bedingung, das hast Du nicht aus der Commandref.

tweety-rt

Ich hatte gehofft, das geht. Ohne die Bedingung ist der Rollo eine ganze Nacht im Abstand von genau einer Stunde hoch gefahren.

Per

Zitat von: tweety-rt am 14 März 2018, 13:14:31Ohne die Bedingung
Ohne Bedingung: DOELSE
Mit Bedingung: DOELSIF
Wie in jeder anderen Programmiersprache auch.

tweety-rt

Auch mit DOELSEIF ist der Rollo gestern Abend nicht zu gegangen.
Kann es ein Problem geben, wenn die beiden Timer die exact gleiche Zeit haben?
Hat jemand sonst eine Idee, wie ich die Aufgabe lösen könnte?

Frank_Huber

Zitat von: tweety-rt am 16 März 2018, 12:51:28
Kann es ein Problem geben, wenn die beiden Timer die exact gleiche Zeit haben?

Ja!
Es können nicht zwei Zweige zur gleichen Zeit abgearbeitet werden.

tweety-rt

und wie genau gebe ich dem zweiten ss_indoor eine Sekunde dazu?
Bei meinen Versuchen springt der timer_2 immer auf 16:00 statt timer_1 +x.
Oder gibt es einen anderen Lösungsansatz?

Ich hätte ja vermutet, so wäre es richtig.

([{twilight("LichtWetter","ss_indoor","16:00","21:00")}] and [YahooWetter:temperature] < 18) (set SZ_Rollo zu) DOELSE (set SZ_Rollo offen)


Aber da wurde der Rollo die Nacht über alle Stunde geöffnet. Bei checkall kommt als state cmd_2

Frank_Huber

ich hab meine Rollo-Steuerung so gelöst:
Ein doif welches einen Dummy füttert. Also jeder Rollo bzw Rollo-Gruppe ist als Reading im Rollo enthalten.
Dieser Dummy wird auf alle FHEM Instanzen gespiegelt.
Dort hört ein weiterer DOIF auf die Änderungen im Dummy (und den lokalen Tastern) und fährt den Rollo.

zentraler DOIF:
defmod DOIF_ROLLO_ALLGEMEIN DOIF ([{twilight("Sonnenstand","sr_civil","05:45","07:00")}])\
(set Rollo eg open) (set Rollo flur_bad_og open) (set Rollo dg open)\
DOELSEIF ([05:46|8]) (set Rollo schlaf open)\
DOELSEIF ([06:00|8]) (set Rollo kinder open)\
DOELSEIF ([08:00|7]) (set Rollo schlaf open) (set Rollo kinder open)\
DOELSEIF ([20:00|01234] or [21:00|56]) (set Rollo kinder closed)\
DOELSEIF ([{twilight("Sonnenstand","ss_astro","20:01","23:00")}]) (set Rollo og closed)\
DOELSEIF ([23:01]) (set Rollo eg closed) (set Rollo dg closed)\
DOELSEIF ([02:00]-[05:44] and [Verbrauch:Aussentemp_avg_day] >= 20 and [Aussen_Temp:temperature] < 20)\
(set Rollo eg position 80) (set Rollo og position 80)
attr DOIF_ROLLO_ALLGEMEIN do always
attr DOIF_ROLLO_ALLGEMEIN group Rollo
attr DOIF_ROLLO_ALLGEMEIN room zentrale Funktionen


Dummy:
defmod Rollo dummy
attr Rollo group Rollo
attr Rollo readingList eg og dg kinder flur_bad_og schlaf nord dach sued west
attr Rollo room zentrale Funktionen
attr Rollo setList eg og dg kinder flur_bad_og schlaf nord dach sued west
attr Rollo stateFormat EG:eg, OG:og, DG:dg, Kinder:kinder, Flur_Bad_OG:flur_bad_og, Schlaf:schlaf, Nord:nord, Dach:dach, Sűd:sued, West:west


lokaler DOIF:
defmod Rollo_Bad_EG DOIF ([GPIO_IN_06:"^on$"] and [?Rollo2_Bad_EG] ne "drive-up") (set Rollo2_Bad_EG open)\
DOELSEIF ([GPIO_IN_07:"^on$"] and [?Rollo2_Bad_EG] ne "drive-down") (set Rollo2_Bad_EG closed)\
DOELSEIF (([GPIO_IN_06:"^on$"] or [GPIO_IN_07:"^on$"]) and [?Rollo2_Bad_EG] =~ "drive-down|drive-up") (set Rollo2_Bad_EG stop)\
DOELSEIF ([Rollo:eg]) (set Rollo2_Bad_EG [Rollo:eg])\
DOELSEIF ([Rollo:west]) (set Rollo2_Bad_EG [Rollo:west])
attr Rollo_Bad_EG checkReadingEvent 1
attr Rollo_Bad_EG cmdpause 1:1:1
attr Rollo_Bad_EG do always
attr Rollo_Bad_EG group Rollo_Bad_EG
attr Rollo_Bad_EG room Rollo,_Bad EG


Wie Du siehst habe ich im zentralen DOIF alle Zeiten entkoppelt so dass niemals zwei Zweige gleichzeitig aktiv werden.
sieht vielleicht etwas komplex aus, läuft aber seit 1,5 Jahren stabil und zuverlässig.
Der PI im KG steuert dadurch drei andere PIs im EG, OG und DG.
Die spiegelung des Dummys mache ich übrigens mit RFHEM.


tweety-rt

Hallo Frank,

das sieht gut aus, aber die Komplexität habe ich gar nicht.
Wenn ich das richtig interpretiere, kann bei dir aber sehr wohl ein DOELSEIF zeitgleich mit dem DOIF zusammenkommen, wenn auch nicht sehr wahrscheinlich.

Ich will ja nicht verschiedene Rollos in eine Regel packen. Ich will einen Rollo zu einer variablen Zeit (ss_indoor) auf oder zu machen. Die Entscheidung soll die Außentemperatur sein.

Frank_Huber



Zitat von: tweety-rt am 16 März 2018, 16:05:14
Hallo Frank,

das sieht gut aus, aber die Komplexität habe ich gar nicht.
Wenn ich das richtig interpretiere, kann bei dir aber sehr wohl ein DOELSEIF zeitgleich mit dem DOIF zusammenkommen, wenn auch nicht sehr wahrscheinlich.

Jetzt wo du es schreibst seh ich es auch. *lol*
Hat früh aber noch nie Probleme gegeben.
Bevor ich den einen auf 20:01 gehoben hab gab es abends immer wieder Probleme.

Dir reicht dann natürlich ein doif.
Dachte nur zum Verständnis ist es so einfacher. ;-)

Mit dem Handy online, daher kurz gefasst...


Per

Zitat von: tweety-rt am 16 März 2018, 12:51:28Kann es ein Problem geben, wenn die beiden Timer die exact gleiche Zeit haben?
Hat jemand sonst eine Idee, wie ich die Aufgabe lösen könnte?
Wenn die restlichen Bedingungen sich ausschließen, können in den beiden Zweigen auch die gleichen Zeiten stehen.
Sonst kann man mit IF arbeiten.
DOIF [von-bis] (IF (Bed1) (Bef1),IF (Bed2) (Bef2))


Oder das neue DOIF-Perl nutzen, aber ob das jetzt schon das Richtige ist ;).