[WeekdayTimer] Wie kann ich eine Bedingung hinzufügen? Helligkeit!

Begonnen von HoTi, 14 Juni 2016, 13:18:22

Vorheriges Thema - Nächstes Thema

HoTi

Hallo zusammen,

ich beschäftige mich gerade mit dem Weekdytimer, da es dafür ein schönes Widget für TableUI gibt.
Allerdings komme ich mit meiner Anforderungen nicht klar. Vielleicht hat jemand schon so etwas gemacht und kann mir helfen dieses umzusetzen.
Grundlegend habe ich es gerade so gelöst:

define di_EG_ez_RO_mi DOIF ([EG_ez_RO_mi_dummy] eq "open" and [du_Rollo_Master] eq "an" and ([EG_ez_TK_mi] eq "closed" or [EG_ez_TK_mi] eq "tilted") and ([GT_ga_BM:brightness] < [du_Rollo_Luminosity_ru] and [{ReadingsVal("du_Rollo_Zeit_ru_start", "state", "22:00:00")}-{ReadingsVal("du_Rollo_Zeit_ru_ende", "state", "22:00:00")}]) or ([EG_ez_RO_mi_dummy] eq "an" and [du_Rollo_Master] eq "an" and [EG_ez_TK_mi] eq "closed" and [{ReadingsVal("du_Rollo_Zeit_ru_ende", "state", "22:00:00")}])) (define at_EG_ez_RO_mi at +00:00:20 set EG_ez_RO_mi_dummy closed) DOELSEIF ([du_Rollo_Master] eq "an" and ([{ReadingsVal("du_Rollo_Zeit_ho", "state", "10:00:00")}|8] or [{ReadingsVal("du_Rollo_Zeit_ho_WE", "state", "10:00:00")}|7])) (define at_EG_ez_RO_mi at +00:00:20 set EG_ez_RO_mi_dummy open)
attr di_EG_ez_RO_mi room Rollos


Heißt also fahre die Rolles wenn:
-   Sie noch offen sind
-   ,,du_Rollo_Master" auf an steht
-   ,,EG_ez_TK_mi" auf closed ode tilted steht
-   wenn eine Helligkeit  < ,,du_Rollo_Luminosity_ru" gegeben ist
-   Spätestens aber um ,,du_Rollo_Zeit_ru_ende"

Und fahren die Rollos hoch:
-   ,,du_Rollo_Master" auf an steht
-   Frühstens ,,du_Rollo_Zeit_ho" in der Woche
Oder WE
-    Frühstens ,,du_Rollo_Zeit_ho_WE" am Wochenende

Ich möchte jetzt die Festen Zeiten über WeekdayTimer Steuern. Der Master Schalter ist nicht das Problem, wenn der auf ,,Aus" ist deaktiviere ich das Modul einfach mit dem Set Befehl. Das gleiche kann ich doch auch für den Türkontakt machen, oder?
Aber wie bekomme ich die Bedingungen der Helligkeit mit rein. Wenn es schon um 18Uhr dunkel ist sollen die Rollos runter fahren und nicht erst um die eingestellte Zeit. Außerdem soll es zur eingestellten Zeit nicht noch ein zweites Mal runtergefahren werden.

Ich hoffe das ich euch jetzt nicht mit meiner Frage und Zusammenfassung erschlagen habe und würde mich freuen wenn mir jemand helfen könnte.
Viele Grüße aus  Oberbayern
Tim (RettungsTim)

HoTi

Kann mir den niemend wenigsten den richtigen Denkanstoß geben?
Viele Grüße aus  Oberbayern
Tim (RettungsTim)

igami

Formatierung hilft den Überblick zu behalten. Wahrscheinlich schreckt die lange Zeile viele ab bei der Lösung zu helfen.


define di_EG_ez_RO_mi DOIF
([EG_ez_RO_mi_dummy] eq "open" and
[du_Rollo_Master] eq "an" and
([EG_ez_TK_mi] eq "closed" or
  [EG_ez_TK_mi] eq "tilted"
) and
([GT_ga_BM:brightness] < [du_Rollo_Luminosity_ru] and
  [{ReadingsVal("du_Rollo_Zeit_ru_start", "state", "22:00:00")}-{ReadingsVal("du_Rollo_Zeit_ru_ende", "state", "22:00:00")}]
) or
([EG_ez_RO_mi_dummy] eq "an" and
  [du_Rollo_Master] eq "an" and
  [EG_ez_TK_mi] eq "closed" and
  [{ReadingsVal("du_Rollo_Zeit_ru_ende", "state", "22:00:00")}]
)
)(
  define at_EG_ez_RO_mi at +00:00:20
    set EG_ez_RO_mi_dummy closed
)
DOELSEIF
([du_Rollo_Master] eq "an" and
([{ReadingsVal("du_Rollo_Zeit_ho", "state", "10:00:00")}|8] or
  [{ReadingsVal("du_Rollo_Zeit_ho_WE", "state", "10:00:00")}|7]
)
)(
  define at_EG_ez_RO_mi at +00:00:20
    set EG_ez_RO_mi_dummy open
)

attr di_EG_ez_RO_mi room Rollos


Ich habe es bei mir mit drei Geräten pro Automatik gelöst:
ein Dummy in dem ich die Werte einstelle, unter anderem ein Reading program welches durch das uzsu widget gefüllt wird
ein weekdaytimer der das Reading program vom dummy auswertet und damit den dummy auf enabled oder disabled setzt
ein DOIF was dann den Rest auswertet und schaltet, die Auswertung des Zeitraum steht ja im state des Dummy
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

HoTi

Danke dir, ich befürche das auch das der Text zu lang ist.

Noch habe ich nicht verstanden wie du das machst, aber ich lese deine Zeilen noch ein paar mal, hoffe das ich dis dann verstehe  ;D ;D

Ich habe aber auch gerade Kopfschmerzen, weil soviel anliegt...
Viele Grüße aus  Oberbayern
Tim (RettungsTim)

derHeimwerker

Zitat von: igami am 15 Juni 2016, 12:39:29
Ich habe es bei mir mit drei Geräten pro Automatik gelöst:
ein Dummy in dem ich die Werte einstelle, unter anderem ein Reading program welches durch das uzsu widget gefüllt wird
ein weekdaytimer der das Reading program vom dummy auswertet und damit den dummy auf enabled oder disabled setzt
ein DOIF was dann den Rest auswertet und schaltet, die Auswertung des Zeitraum steht ja im state des Dummy

Hallo igami,

der Eintrag ist schon etwas älter, aber könntest du mir das mal an Hand deines codes näher erläutern ?
Danke
Gruß
Thomas

igami

ich kann dir ein Beispiel geben

defmod condition dummy
attr condition setList state:uzsu

defmod condition_DOIF DOIF ([condition:state] eq "enabled" and\
"andere Bedingung" eq "true"\
)(\
  ##enabled\
)\
DOELSEIF\
([condition:state] eq "disabled" and\
"andere Bedingung" eq "true"\
)(\
  ##disabled\
)

defmod condition_WeekdayTimer WeekdayTimer condition Mo,Di,Mi,Do,Fr|08:00|enabled Mo,Di,Mi,Do,Fr|10:00|disabled

defmod profile2WeekdayTimer notify .*(Mo|Di|Mi|Do|Fr|Sa|So)\|\d\d:\d\d\|(enabled|disabled).* {\
  my $profile = (split(": ", $EVENT, 2))[1];;\
  return if(!$profile or $profile =~ /,\|/);;\
  my @WeekdayTimer = devspec2array("TYPE=WeekdayTimer:FILTER=DEVICE=$NAME");;\
  fhem("modify $_ $NAME $profile", 1) for(@WeekdayTimer);;\
  fhem("save", 1) if(int(@structChangeHist) == int(@WeekdayTimer));;\
  return;;\
}
attr profile2WeekdayTimer devStateIcon {ReadingsVal($name, "state", "inactive") eq "active" ? ".*:ios-on-blue:inactive" : ".*:ios-off:active"}
attr profile2WeekdayTimer group WeekdayTimer
attr profile2WeekdayTimer icon audio_mic
attr profile2WeekdayTimer room helper

setstate condition Mo,Di,Mi,Do,Fr|08:00|enabled Mo,Di,Mi,Do,Fr|10:00|disabled
setstate condition 2017-01-08 10:58:28 state Mo,Di,Mi,Do,Fr|08:00|enabled Mo,Di,Mi,Do,Fr|10:00|disabled

setstate condition_DOIF initialized
setstate condition_DOIF 2017-01-08 11:01:06 cmd 0
setstate condition_DOIF 2017-01-08 11:01:06 state initialized

setstate condition_WeekdayTimer inactive
setstate condition_WeekdayTimer 2017-01-08 10:59:05 currValue disabled
setstate condition_WeekdayTimer 2017-01-08 10:59:05 nextUpdate 2017-01-09 08:00:00
setstate condition_WeekdayTimer 2017-01-08 10:59:05 nextValue enabled
setstate condition_WeekdayTimer 2017-01-08 10:59:05 state inactive

setstate profile2WeekdayTimer 2017-01-08 10:58:28
setstate profile2WeekdayTimer 2017-01-03 08:01:47 state active
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED