NEWS
[gelöst] Sinnvolle Logik für Beleuchtungen
-
Hallo, ich habe meine Beleuchtungssteuerung mit den enums schön sortiert.
Ich habe Funktionen wie bspw. "Beleuchtung", "Fenster", "Tür" usw.
Auch Ansteuerungen wie "Dämmerung" oder "DämmerungSommer" in der ich nur Geräte drin habe,
welche nur im Sommer angeschaltet werden sollen habe ich dort drin.Nun stellt sich mir aber die Frage, macht es Sinn eine Enum zu haben.
"Beleuchtung" und eine enum "BeleuchtungSommer", die qusie nur die Beleuchtungen im Sommer ansteuert?
Oder sollte man es eventuell nur in Grundeinheiten aufteilen wie...
enum Funktion: "Beleuchtung"
oder
enum Ansteuerart: "Dämmerung"
und dann noch eine enum Jahreszeit:
"Sommer, "Winter"?Natrürlich könnte dann etwas nicht gleichzeitig in sommer und winter sein
Dann könnte man es so direkt aufteilenWas meint ihr dazu?
-
@ben1983 schwierig zu beantworten, kommt auf deine Bedürfnisse/Gerätschaften an
andere Frage, wie wird gesteuert, scripte, Adapter?
Falls noch nicht bekannt, smart-control oder light-control, hilft möglicherweise vllt bei der Entscheidung
-
@crunchip mit Smartcontrol hatte ich mal von 1-2 Jahren getestet, aber es gab immer wieder was, was ich machen wollte und nicht ging.
Ich mache mittlerweile alles per JavaScript.
Aktuell habe ich bspw. Die enum
Daemmerung.sommer
Damit schalte ich dann alle States die dort drin liegen.
Da könnte man halt alle States unabhängig der Funktion rein legen und mit „.sommer“ wären sie auch nur für diese enum auf „Sommer“ und könnten durchaus in anderen enums anders behandelt werden. Eben schon sehr flexibel.ein Beispiel:
// Bei Abenddämerung aktivieren schedule({astro: "dusk"},()=>{ let Ausgabe = "Dämmerungsschalter mit und ohne Zeitsteuerung aufgrund von Abenddämmerung eingeschaltet"; sendTelegramMessage(Ausgabe,usernamePrivat.val); setState(idDaemmerungZeit,true); }); // Wertänderung bei Dämmerung Zeit on(idDaemmerungZeit,(dp) =>{ // Alle States des Ansteuertyps Dämmerung Zeit schalten $(`state(controlType=${enumDaemmerungZeit})`).setState(dp.state.val); // Schalten der Sommer Geräte (März - Oktober) if(isSummer()){ $(`state(controlType=${enumDaemmerungZeitSommer})`).setState(dp.state.val); } // Schalten der Winter Geräte (Dezember & Januar) if(isWinter()){ $(`state(controlType=${enumDaemmerungZeitWinter})`).setState(dp.state.val); } });
Wobei isSummer eine eigene Funktion ist.
-
@ben1983 sagte in Sinnvolle Logik für Beleuchtungen:
Damit schalte ich dann alle States die dort drin liegen
das kann der Adapter auch mittlerweile
-
@crunchip OK.
Ich nutze auch Verschiebungen usw.
Bspw.// Mit der Morgendämmerung (verspätet) deaktivieren schedule({astro: "dawn", shift: verschiebungBeleuchtungMorgensAus},()=>{ let Ausgabe = "Dämmerungsschalter für Beleuchtung aufgrund von Morgendämmerung ausgeschaltet"; sendTelegramMessage(Ausgabe,usernamePrivat.val); setState(idDaemmerungZeitBeleuchtung,false); });
-
@ben1983 wenn man scripten kann, sicherlich kein Problem, ich kanns nicht, daher eher der Adapter User
-
@crunchip klar, dafür sind Ja da.
Es ging halt damals nicht und ich konnte nicht alle meine „Bedürfnisse“ damit abdecken. -
@crunchip aber generell zu den enums (ist ja egal ob mit oder ohne Adapter)
In den einzelnen Rubriken noch ne unterrubrik Sommer und Winter ist flexibler und man braucht auch für den selector immer nur eine enum.
Oder was meinst Du?
-
@ben1983 is ja möglich mehrere Enums zu belegen bei einem Gerät
kommt halt auf den jeweiligen Fall an,
letztendlich hängt es von deiner Beleuchtung ab und vielmehr, wie du am besten zurecht kommst -
@ben1983
Verstehe "Natrürlich könnte dann etwas nicht gleichzeitig in sommer und winter sein" nicht.Leider kann ich nichts mit
controlType=
anfangen?
ich hab bei mir alles mit Funktionen gelöst und da sind mehrfach Abfragen kein Problem. Wobei mein Code dann vereinfacht so aussieht:
$('state(functions=sensor)(functions=humidity)').each((id) => {tue irgendwas mit id} $('state(functions=control)(functions=humidity)').each((id) => {tue irgendwas mit id}
sowas ähnliches hab ich in meinem Luftbefeuchtersteuerungsscript und in meiner Heizungssteuerung
-
@ticaki ja die enum controlType ist eine eigene.
Klar kannst Du die kombinieren. -
@ben1983
Ok, war verwirrt weil du oben geschrieben hast das du sie nicht kombinieren kannst, hab das aber vielleicht auch missverstandenIch würde es nach Grundeinheiten aufteilen, sonst müsstest du ja jede Kombination aus Tageszeit Jahreszeit anlegen.
-
@ticaki ja die Überlegung war da, allerdings wenn ich für eine Anstwruerart eine konkrete Zuweisung habe, dann kann ein und der selbe state in der enum …. Bspw. Außenbeleuchtung.Winter und bspw. Abendbeleuchtung.Sommer sein.
Wenn der State nun entweder in Sommer oder Winter zugewiesen wäre, wäre dies nicht ohne weiteres möglich.Oder übersehe ich was?
-
@ben1983
Dann könnte er in der Gruppe Außenbeleutung, Winter und Sommer sein. Also in 3. Gruppen und deine Abfrage müssten dann wohl sowas in der Art sein:if(isWinter()){ $(`state(controlType=${enumAußenbeleuchtung})(controlType=${enumWinter})`).setState(dp.state.val); }
nutze das ${enum} aber nicht, daher bin ich mir mit dem Syntax nicht sicher. Bei mir würde das so aussehen:
$('state(controlType=enumAußenbeleuchtung)(controlType=enumWinter)').setState(dp.state.val)
In der Übersicht wäre es dann nicht mehr ganz so schön geordnet. Müsstes halt überprüfen ob die Schnittmengen zwischen Außenbeleuchtung und Jahreszeit das sind was du möchtest.
-
@ticaki sagte in Sinnvolle Logik für Beleuchtungen:
@ben1983
Dann könnte er in der Gruppe Außenbeleutung, Winter und Sommer sein. Also in 3. Gruppen und deine Abfrage müssten dann wohl sowas in der Art sein:if(isWinter()){ $(`state(controlType=${enumAußenbeleuchtung})(controlType=${enumWinter})`).setState(dp.state.val); }
nutze das ${enum} aber nicht, daher bin ich mir mit dem Syntax nicht sicher. Bei mir würde das so aussehen:
$('state(controlType=enumAußenbeleuchtung)(controlType=enumWinter)').setState(dp.state.val)
In der Übersicht wäre es dann nicht mehr ganz so schön geordnet. Müsstes halt überprüfen ob die Schnittmengen zwischen Außenbeleuchtung und Jahreszeit das sind was du möchtest.
Eben nicht.
Ich hatte Außenbeleuchtung Winter und
Abendbeleuchtung Sommer Geschieben.
Und dann kann der State eben nicht im Sommer und Winter sein, denn dann würde der State
Ja immer an gehen.$('state(controlType=enumAußenbeleuchtung)(controlType=enumSommer)').setState(dp.state.val)
Würde auch zutreffen, obwohl es dass nicht soll.
Verstehst Du was ich meine? -
@ben1983 sagte in Sinnvolle Logik für Beleuchtungen:
Eben nicht.
Ich hatte Außenbeleuchtung Winter und
Abendbeleuchtung Sommer Geschieben.
Und dann kann der State eben nicht im Sommer und Winter sein, denn dann würde der State
Ja immer an gehen.Ich hab das 3 mal gelesen und erst beim 4. mal hab ich nicht 2. mal Außenbeleutung gelesen
Würde auch zutreffen, obwohl es dass nicht soll.
Verstehst Du was ich meine?Ja, hab deinen Satz als "Es funktioniert nicht mit Winter und Sommer gleichzeitig" gelesen.
Soviel Text für einen missverstandenen Satz, sry.
ja die Überlegung war da, allerdings wenn ich für eine Anstwruerart eine konkrete Zuweisung habe, dann kann ein und der selbe state in der enum …. Bspw. Außenbeleuchtung.Winter und bspw. Abendbeleuchtung.Sommer sein.
Wenn der State nun entweder in Sommer oder Winter zugewiesen wäre, wäre dies nicht ohne weiteres möglich.Es hat klick gemacht, ja du hast recht, das ist mit Grundeinheiten nicht möglich. Ich würde dann wohl mit Grundeinheiten + Sonderfälle oder halt nur Sonderfällen arbeiten. Fällt mir auch nichts besseres ein.
-
@ticaki ja. Ist vielleicht etwas „Overkill“ aber wenn der 1. Fall kommt, wo es nicht passt (und der wird mit Sicherheit kommen, dann ist es abweichend zum rest und das möchte ich gerne vermeiden.
-
@ben1983
Denke nicht dass es overkill ist. Ich steuere meine Beleuchtung über individuelle Skripte da ich keinen einfachen gemeinsamen Nenner gefunden habe. Wie sollte ich z.B. Es ist Nacht oder dunkel und Haustür geht auf schalte Treppenhauslicht ein da abbilden. -
@ticaki eine Frage habe ich noch. Komme einfach auf keine logische Schlussfolgerung.
Ich lasse von der Dämmerung die Beleuchtung (bspw. Eine Stehlampe hinter dem Sofa) ein schalten.
Nun wird diese aber auch aktiviert, wenn gar Niemand zu Hause ist. Ich dachte schon an eine Bewegungsreaktion gedacht, aber wenn jemand auf dem Sofa sitzt, wird auch keine erkannt.
Wollte damit irgendwelche Bedingungen finden, um die Beleuchtung nicht zu aktivieren, oder wieder zu deaktivieren. Um 23:59 schalte ich sie zusätzlich aus. -
@ben1983 sagte in Sinnvolle Logik für Beleuchtungen:
Nun wird diese aber auch aktiviert, wenn gar Niemand zu Hause ist.
Deswegen frag ich bei sowas zusätzlich noch ab, ob jemand anwesend ist.