[at] Befehl - Steckdosen schalten mit sunset und sunrise an verschiedenen Tagen

Begonnen von Esteban, 16 Februar 2016, 13:08:05

Vorheriges Thema - Nächstes Thema

Damian

Zitat von: Esteban am 24 Februar 2016, 01:08:13
::) ::) ::) ::) ::)  8)

besser so...?

define LichtMorgens DOIF (([05:50-08:30|1235]) or ([07:30-08:30|4]) or ([08:00-09:00|60]) and ([Helligkeit:twilight_weather] < 70)) (set grp_Lampen_Morgens on) DOELSE (set grp_Lampen_Morgens off)

Nach einigem Lesen war mir klar, dass ich DOIF grundlegend anders verstehen muss.

Twilight lässt sich nicht so einbinden wie erhofft - zu viele Parameter und zu kompliziert. Dann hab ich http://forum.fhem.de/index.php?topic=35191.0 diesen Beitrag hier gelesen.

Logisch, dass Twilight am besten als AND benutzt werden sollte um mit einem bestimmten Helligkeitswert dann das ELSE zu erzwingen... also hab ich in mein Log geschaut und den Wert 70 für mich ausfindig gemacht - mal sehen, was morgen so passiert!!!

Bin ich auf dem richtigen Weg? :)

ja, wenn die Helligkeit für alle Tage gelten soll, dann musst du wegen der Priorität der Operatoren die Sache anders klammern (and bindet stärker als or) und die anderen Klammern kannst du weglassen:

define LichtMorgens DOIF (([05:50-08:30|1235] or [07:30-08:30|4] or [08:00-09:00|60]) and [Helligkeit:twilight_weather] < 70) (set grp_Lampen_Morgens on) DOELSE (set grp_Lampen_Morgens off)


Gruß

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

Esteban

Hi Damian,

na da hab ich ja den richtigen an der Strippe :)

Vielen Dank!

Ich hab deinen Ratschlag jetzt berücksichtigt, aber hier mal der Code der Lampen für morgens - T ist "Helligkeit" geworden, also Twilight und ich hab die Struktur der Lampen durch die einzelnen Elemente ersetzt weil ich es dann einfacher handhaben kann.


define LichtMorgens DOIF (([05:50|1235] or [07:30|4] or [08:00|60]) and [Helligkeit:twilight_weather] < 70)\
(set fl_LED on)\
(set wz_LED_Balkon on)\
DOELSEIF  ([[Helligkeit:sr_weather]])\
(set fl_LED off)\
(set wz_LED_Balkon off)
attr LichtMorgens room Flur


und hier für abends:


define LichtAbends DOIF (([{twilight("Helligkeit","ss_indoor","15:00","23:00")}]) and ([Helligkeit:twilight_weather] < 50))\
(set fl_LED on)\
(set wz_LED_Balkon on)\
(set wz_DekoLED on)\
(set wz_Highboard on)\
(set gal_LED_Lese on)\
DOELSEIF ([00:30|12345])\
(set fl_LED off)\
(set wz_DekoLED off)\
(set wz_Highboard off)\
(set gal_LED_Lese off)\
DOELSEIF ([01:30|12345])\
(set wz_LED_Balkon off)\
DOELSEIF ([01:30|60])\
(set fl_LED off)\
(set wz_DekoLED off)\
(set wz_Highboard off)\
(set gal_LED_Lese off)\
DOELSEIF ([02:00|60])\
(set wz_LED_Balkon off)\

attr LichtAbends room Flur


Jetzt komme ich mit den STATE noch durcheinander. Abends steht jetzt auf "initialized", morgens steht auf "cmd_2". Das hab ich noch nicht so ganz durchblickt. Ich dachte STATE wird nur geändert, wenn es einen DOELSE gibt. Ich hatte zuerst bei morgens einen DOELSE aber dann hab ich das Problem, dass z.B. auch das Licht ausgeschaltet wird wenn ich es Nachts mal manuell anmachen will.

Schöner Einstieg, macht mir Spaß und ich finde das super, dass einem hier geholfen wird! :)

Edit: ich hab jetzt ein Attribut do always hinzugefügt. Leuchtet mir ein. Was die states aber sollen - da hab ich nach gesucht aber dabei leider nix Gescheites gefunden...
FHEM v5.9 auf RPi 3B+ Raspbian Stretch | Busware CUL 433 MHz | 20x IT-1500 | HMUSB2 mit diversen HM Komponenten

Esteban

und noch was zum twilight_weather:

Hier mal der Log aus twilight, wie der wert twilight_weather war:

2016-02-24_07:22:31 Helligkeit twilight_weather: 48.8
2016-02-24_07:25:33 Helligkeit nextEvent: sr_indoor
2016-02-24_07:25:33 Helligkeit nextEventTime: 07:32:32
2016-02-24_07:27:31 Helligkeit twilight_weather: 52.8
2016-02-24_07:32:31 Helligkeit twilight_weather: 56.8
2016-02-24_07:32:32 Helligkeit nextEvent: sr_weather
2016-02-24_07:37:31 Helligkeit twilight_weather: 60.7
2016-02-24_07:42:32 Helligkeit twilight_weather: 64.7
2016-02-24_07:47:32 Helligkeit twilight_weather: 68.6
2016-02-24_07:49:32 Helligkeit aktEvent: sr_weather
2016-02-24_07:49:32 Helligkeit nextEvent: ss_weather
2016-02-24_07:49:32 Helligkeit nextEventTime: 17:18:45
2016-02-24_07:52:32 Helligkeit twilight_weather: 72.5
2016-02-24_07:57:38 Helligkeit twilight_weather: 76.4


das bedeutet, dass der Wert 70 irgendwann zwischen 07:47 und 07:52 überschritten wurde.

Allerdings sagt mir das Logfile:

Zitat
2016.02.24 05:50:09 2: IT set fl_LED on
2016.02.24 05:50:10 2: IT set wz_LED_Balkon on

2016.02.24 07:32:32 2: IT set fl_LED off
2016.02.24 07:32:32 2: IT set wz_LED_Balkon off

Erklären kann ich mir das jetzt nicht :) Anscheinend hat das was mit dem Wechsel auf sr_indoor zu tun?
FHEM v5.9 auf RPi 3B+ Raspbian Stretch | Busware CUL 433 MHz | 20x IT-1500 | HMUSB2 mit diversen HM Komponenten

Esteban

Sooo es funktioniert soweit alles  ;D Danke!

Hier der funktionierende Code aus der fhem.cfg:


define LichtMorgens DOIF (([05:50|1235] or [07:30|4] or [08:00|60]) and [Helligkeit:twilight_weather] < 70)\
(set fl_LED on)\
(set wz_LED_Balkon on)\
DOELSEIF  ([[Helligkeit:sr_weather]])\
(set fl_LED off)\
(set wz_LED_Balkon off)
attr LichtMorgens do always
attr LichtMorgens room Flur

define LichtAbends DOIF (([{twilight("Helligkeit","ss_indoor","15:00","23:00")}]) and ([Helligkeit:twilight_weather] < 50))\
(set fl_LED on)\
(set wz_LED_Balkon on)\
(set wz_DekoLED on)\
(set wz_Highboard on)\
(set gal_LED_Lese on)\
DOELSEIF ([00:30|12345])\
(set fl_LED off)\
(set wz_DekoLED off)\
(set wz_Highboard off)\
(set gal_LED_Lese off)\
DOELSEIF ([01:30|12345])\
(set wz_LED_Balkon off)\
DOELSEIF ([01:30|60])\
(set fl_LED off)\
(set wz_DekoLED off)\
(set wz_Highboard off)\
(set gal_LED_Lese off)\
DOELSEIF ([02:00|60])\
(set wz_LED_Balkon off)\

attr LichtAbends do always
attr LichtAbends room Flur


...mit dem Wert STATE hab ich aber immer noch ein Problem. Bei morgens steht nun cmd_2 und bei Abends cmd_3 - hat jemand da mal ein schönes Anwendungsbeispiel um es zu verstehen? Und muss ich noch was tun oder reicht ein do always??? Besten Dank!
FHEM v5.9 auf RPi 3B+ Raspbian Stretch | Busware CUL 433 MHz | 20x IT-1500 | HMUSB2 mit diversen HM Komponenten

Esteban

Heute gingen die Lampen nicht an :(

(([{twilight("Helligkeit","ss_indoor","15:00","23:00")}]) and ([Helligkeit:twilight_weather] < 50))
(set fl_LED on)
(set wz_LED_Balkon on)
(set wz_DekoLED on)
(set wz_Highboard on)
(set gal_LED_Lese on)
DOELSEIF ([00:30|12345])
(set fl_LED off)
(set wz_DekoLED off)
(set wz_Highboard off)
(set gal_LED_Lese off)
DOELSEIF ([01:30|12345])
(set wz_LED_Balkon off)
DOELSEIF ([01:30|60])
(set fl_LED off)
(set wz_DekoLED off)
(set wz_Highboard off)
(set gal_LED_Lese off)
DOELSEIF ([02:00|60])
(set wz_LED_Balkon off)


Readings
state cmd_5
timer_1_c1  28.02.2016 17:41:39
timer_2_c2 28.02.2016 00:30:00|12345
timer_3_c3 28.02.2016 01:30:00|12345
timer_4_c4 28.02.2016 01:30:00|60
timer_5_c5 28.02.2016 02:00:00|60


Letztendlich war es um 17:41:39 Uhr noch hell, weil die Sonne schien. Also war twilight_weather < 50 aber danach ist nichts mehr passiert. Kleiner 50 traf um 17:48 ein laut Logfile...

2016-02-27_17:30:50 Helligkeit azimuth: 253.14
2016-02-27_17:30:50 Helligkeit elevation: 3
2016-02-27_17:30:50 Helligkeit twilight: 83.3
2016-02-27_17:30:50 Helligkeit twilight_weather: 64.4
2016-02-27_17:30:50 Helligkeit compasspoint: west-southwest
2016-02-27_17:35:50 Helligkeit azimuth: 254.15
2016-02-27_17:35:50 Helligkeit elevation: 2.28
2016-02-27_17:35:50 Helligkeit twilight: 79.3
2016-02-27_17:35:50 Helligkeit twilight_weather: 60.4
2016-02-27_17:35:50 Helligkeit compasspoint: west-southwest
2016-02-27_17:40:50 Helligkeit azimuth: 255.16
2016-02-27_17:40:50 Helligkeit elevation: 1.56
2016-02-27_17:40:50 Helligkeit twilight: 75.3
2016-02-27_17:40:50 Helligkeit twilight_weather: 56.4
2016-02-27_17:40:50 Helligkeit compasspoint: west-southwest
2016-02-27_17:41:39 Helligkeit 8
2016-02-27_17:41:39 Helligkeit light: 4
2016-02-27_17:41:39 Helligkeit horizon: 1
2016-02-27_17:41:39 Helligkeit aktEvent: ss_indoor
2016-02-27_17:41:39 Helligkeit nextEvent: ss
2016-02-27_17:41:39 Helligkeit nextEventTime: 17:48:34
2016-02-27_17:45:50 Helligkeit azimuth: 256.17
2016-02-27_17:45:50 Helligkeit elevation: 0.84
2016-02-27_17:45:50 Helligkeit twilight: 71.3
2016-02-27_17:45:50 Helligkeit twilight_weather: 52.4
2016-02-27_17:45:50 Helligkeit compasspoint: west-southwest
2016-02-27_17:48:34 Helligkeit 9
2016-02-27_17:48:34 Helligkeit light: 3
2016-02-27_17:48:34 Helligkeit horizon: 0
2016-02-27_17:48:34 Helligkeit aktEvent: ss
2016-02-27_17:48:34 Helligkeit nextEvent: ss_civil
2016-02-27_17:48:34 Helligkeit nextEventTime: 18:29:26
2016-02-27_17:50:51 Helligkeit azimuth: 257.18
2016-02-27_17:50:51 Helligkeit elevation: 0.11
2016-02-27_17:50:51 Helligkeit twilight: 67.3
2016-02-27_17:50:51 Helligkeit twilight_weather: 48.4
2016-02-27_17:50:51 Helligkeit compasspoint: west-southwest
2016-02-27_17:55:51 Helligkeit azimuth: 258.18
2016-02-27_17:55:51 Helligkeit elevation: -0.61
2016-02-27_17:55:51 Helligkeit twilight: 63.2
2016-02-27_17:55:51 Helligkeit twilight_weather: 44.3
2016-02-27_17:55:51 Helligkeit compasspoint: west-southwest


Irgendeine Idee?
FHEM v5.9 auf RPi 3B+ Raspbian Stretch | Busware CUL 433 MHz | 20x IT-1500 | HMUSB2 mit diversen HM Komponenten

Esteban

ich könnte ja auch einfach nur nach twilight_weather fragen, ist ja eigentlich sinnvoll??? Denn wenns zu dunkel wird soll es halt an gehen. Auch wenn keiner da ist.

habs mal umgedreht:

(([Helligkeit:twilight_weather] < 50) or ([{twilight("Helligkeit","ss_indoor","15:00","23:00")}]))
FHEM v5.9 auf RPi 3B+ Raspbian Stretch | Busware CUL 433 MHz | 20x IT-1500 | HMUSB2 mit diversen HM Komponenten

Esteban

Ok ich muss noch eine zweite Bedingung nehmen sonst geht das Licht gleich wieder an  :P
FHEM v5.9 auf RPi 3B+ Raspbian Stretch | Busware CUL 433 MHz | 20x IT-1500 | HMUSB2 mit diversen HM Komponenten

Esteban

so, ich habe fertig und verstanden...

Auszug aus fhem.cfg:

define LichtMorgens DOIF (([05:50|1235] or [07:30|4] or [08:00|60]) and [Helligkeit:twilight_weather] < 70)\
(set fl_LED on)\
(set wz_LED_Balkon on)\
DOELSEIF  ([[Helligkeit:sr_weather]])\
(set fl_LED off)\
(set wz_LED_Balkon off)
attr LichtMorgens cmdState an|aus
attr LichtMorgens room AutoFunc
define LichtAbends DOIF
([15:00-23:00] and [Helligkeit:twilight_weather] < 65)\
(set fl_LED on)\
(set wz_LED_Balkon on)\
(set wz_DekoLED on)\
(set wz_Highboard on)\
(set gal_LED_Lese on)\
DOELSEIF ([00:30|12345])\
(set fl_LED off)\
(set wz_DekoLED off)\
(set wz_Highboard off)\
(set gal_LED_Lese off)\
DOELSEIF ([01:30|12345])\
(set wz_LED_Balkon off)\
DOELSEIF ([01:30|60])\
(set fl_LED off)\
(set wz_DekoLED off)\
(set wz_Highboard off)\
(set gal_LED_Lese off)\
DOELSEIF ([02:00|60])\
(set wz_LED_Balkon off)\

attr LichtAbends cmdState alle_an|WT_aus|WT_Balkon_aus|WE_aus|WE_Balkon_aus
attr LichtAbends room AutoFunc
FHEM v5.9 auf RPi 3B+ Raspbian Stretch | Busware CUL 433 MHz | 20x IT-1500 | HMUSB2 mit diversen HM Komponenten

Damian

Zitat von: Esteban am 29 Februar 2016, 21:13:26
so, ich habe fertig und verstanden...

Auszug aus fhem.cfg:

define LichtMorgens DOIF (([05:50|1235] or [07:30|4] or [08:00|60]) and [Helligkeit:twilight_weather] < 70)\
(set fl_LED on)\
(set wz_LED_Balkon on)\
DOELSEIF  ([[Helligkeit:sr_weather]])\
(set fl_LED off)\
(set wz_LED_Balkon off)
attr LichtMorgens cmdState an|aus
attr LichtMorgens room AutoFunc
define LichtAbends DOIF
([15:00-23:00] and [Helligkeit:twilight_weather] < 65)\
(set fl_LED on)\
(set wz_LED_Balkon on)\
(set wz_DekoLED on)\
(set wz_Highboard on)\
(set gal_LED_Lese on)\
DOELSEIF ([00:30|12345])\
(set fl_LED off)\
(set wz_DekoLED off)\
(set wz_Highboard off)\
(set gal_LED_Lese off)\
DOELSEIF ([01:30|12345])\
(set wz_LED_Balkon off)\
DOELSEIF ([01:30|60])\
(set fl_LED off)\
(set wz_DekoLED off)\
(set wz_Highboard off)\
(set gal_LED_Lese off)\
DOELSEIF ([02:00|60])\
(set wz_LED_Balkon off)\

attr LichtAbends cmdState alle_an|WT_aus|WT_Balkon_aus|WE_aus|WE_Balkon_aus
attr LichtAbends room AutoFunc


Hat wohl mehrere Posts gebraucht, bis du meinen Vorschlag hier umgesetzt hast ;)
Ich würde dir empfehlen die Befehlsabfolgen jeweils in eine Sequenz zu packen. Da du keine Verzögerungen zwischen den Befehlen brauchst, brauchst du auch keine Zwischenzustände, die Events erzeugen und dein System unnötig belasten, also z. B.:

statt

(set fl_LED on)\
(set wz_LED_Balkon on)\
(set wz_DekoLED on)\
(set wz_Highboard on)\
(set gal_LED_Lese on)\


definieren:

(set fl_LED on,\
set wz_LED_Balkon on,\
set wz_DekoLED on,\
set wz_Highboard on,\
set gal_LED_Lese on)\


Gruß

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

Esteban

Hi Damian,

erst einmal DANKE! :)

Kurzum: ich bin eigentlich nicht so der RTFM-Typ  8) Aber das Schweigen im Forum zwang mich dazu, dann doch mal die Komplette CommandREF vom DOIF zu lesen :)

Ich dachte, dass die Befehle hintereinander erfolgen müssen damit es sauber funktioniert. Wieder was dazugelernt. :)

Gruß

Stefan
FHEM v5.9 auf RPi 3B+ Raspbian Stretch | Busware CUL 433 MHz | 20x IT-1500 | HMUSB2 mit diversen HM Komponenten