Hallo zusammen,
ich habe ein kleines Problem mit meiner Lichtsteuerung (außen), die nicht richtig funktioniert.
Folgendes soll passieren:
Sonnenuntergang -> Licht EIN
0:00 Uhr -> Licht AUS
5:00 Uhr -> Licht EIN, aber nur, wenn die Sonne noch nicht aufgegangen ist (im Juli ist Sonnenaufgang vor 5:00 Uhr)
Sonnenaufgang -> Licht AUS
Das habe ich so programmiert:
Pünktlich zum Sonnenuntergang geht das Licht an, aber 0:00 Uhr leider nicht aus.
Kann mir jemand sagen, wo das Problem liegt?
Logik funktioniert - ich versteh' sie nur nicht richtig
Moderator: Co-Administratoren
-
- Beiträge: 29
- Registriert: 25.04.2018, 14:40
Logik funktioniert - ich versteh' sie nur nicht richtig
Zuletzt geändert von Standarduser am 21.12.2018, 15:11, insgesamt 1-mal geändert.
- Sammy
- Beiträge: 9172
- Registriert: 09.09.2008, 20:47
- Hat sich bedankt: 15 Mal
- Danksagung erhalten: 174 Mal
Re: Logik funktioniert nicht richtig
Weil es um 0:00 Uhr Nacht ist!
Lies bitte die Links zur Zentralenlogik (Tipps für Anfänger)!
Hier die kurze Lösung: viewtopic.php?f=26&t=47469&p=475126#p475126
Gruß Sammy
Lies bitte die Links zur Zentralenlogik (Tipps für Anfänger)!
Hier die kurze Lösung: viewtopic.php?f=26&t=47469&p=475126#p475126
Gruß Sammy
Links: CCU-Logik, Tipps für Anfänger, WebUI-Doku, Expertenparameter, virtuelle Aktorkanäle
Inventur vom 22.01.14: 516 Kanäle in 165 Geräten, 132 Programme, 270 Direkte Verknüpfungen
Ich übernehme für alle von mir gegebenen Hinweise, Tipps und Links keine Haftung! Das Befolgen meiner Tipps ist nur für Fachkundige gedacht und erfolgt auf eigene Gefahr!
Inventur vom 22.01.14: 516 Kanäle in 165 Geräten, 132 Programme, 270 Direkte Verknüpfungen
Ich übernehme für alle von mir gegebenen Hinweise, Tipps und Links keine Haftung! Das Befolgen meiner Tipps ist nur für Fachkundige gedacht und erfolgt auf eigene Gefahr!
-
- Beiträge: 4155
- Registriert: 09.09.2012, 10:41
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 78 Mal
- Danksagung erhalten: 301 Mal
Re: Logik funktioniert nicht richtig
Der Titel ist echt witzig - in zweifachem Sinn:
Erstens funktioniert eine Logik per Definition immer richtig.
Zweitens funktioniert das von dir erstellte Programm durchaus richtig - gemäß Logik. Es macht nämlich um 0 Uhr folgendes:
- Das Programm wird durch die Zeile "Täglich um 0:00 Uhr..." ausgelöst. Nichts anderes sagt der Zusatz "zu Zeitpunkten auslösen".
- Das Programm wird dann einmalig von oben nach unten durchlaufen.
- Es findet schon im WENN eine erfüllte Bedingung "Täglich nachts..." und führt das darunter stehende DANN aus. Die bereits eingeschalteten Lampen werden nochmals eingeschaltet.
- Danach beendet es sich sofort und schläft bis zum nächsten auslösen.
Ergo: Titel ändern in "Logik funktioniert - ich versteh' sie nur nicht richtig".
Erstens funktioniert eine Logik per Definition immer richtig.
Zweitens funktioniert das von dir erstellte Programm durchaus richtig - gemäß Logik. Es macht nämlich um 0 Uhr folgendes:
- Das Programm wird durch die Zeile "Täglich um 0:00 Uhr..." ausgelöst. Nichts anderes sagt der Zusatz "zu Zeitpunkten auslösen".
- Das Programm wird dann einmalig von oben nach unten durchlaufen.
- Es findet schon im WENN eine erfüllte Bedingung "Täglich nachts..." und führt das darunter stehende DANN aus. Die bereits eingeschalteten Lampen werden nochmals eingeschaltet.
- Danach beendet es sich sofort und schläft bis zum nächsten auslösen.
Ergo: Titel ändern in "Logik funktioniert - ich versteh' sie nur nicht richtig".
Es gibt 10 Arten von Menschen: solche die Binärcode verstehen und solche, die ihn nicht verstehen.
-
- Beiträge: 29
- Registriert: 25.04.2018, 14:40
Re: Logik funktioniert nicht richtig
Du hast vollkommen Recht, daher gestehe ich das ein und hab den Titel mal angepasst.
Obwohl vorher schon klar war, dass die Logik der CCU sicher richtig funktioniert und ich lediglich eine gewisse Asynchronität zur meines Gehirns festgestellt habe. Aber auch das hätte ich irgendwie in den Titel integrieren können
Danke für Deine Hinweise. So müsste es doch dann aber laufen, oder?Sammy hat geschrieben: ↑21.12.2018, 14:45Weil es um 0:00 Uhr Nacht ist!
Lies bitte die Links zur Zentralenlogik (Tipps für Anfänger)!
Hier die kurze Lösung: viewtopic.php?f=26&t=47469&p=475126#p475126
Gruß Sammy
- Sammy
- Beiträge: 9172
- Registriert: 09.09.2008, 20:47
- Hat sich bedankt: 15 Mal
- Danksagung erhalten: 174 Mal
Re: Logik funktioniert - ich versteh' sie nur nicht richtig
Ja
Links: CCU-Logik, Tipps für Anfänger, WebUI-Doku, Expertenparameter, virtuelle Aktorkanäle
Inventur vom 22.01.14: 516 Kanäle in 165 Geräten, 132 Programme, 270 Direkte Verknüpfungen
Ich übernehme für alle von mir gegebenen Hinweise, Tipps und Links keine Haftung! Das Befolgen meiner Tipps ist nur für Fachkundige gedacht und erfolgt auf eigene Gefahr!
Inventur vom 22.01.14: 516 Kanäle in 165 Geräten, 132 Programme, 270 Direkte Verknüpfungen
Ich übernehme für alle von mir gegebenen Hinweise, Tipps und Links keine Haftung! Das Befolgen meiner Tipps ist nur für Fachkundige gedacht und erfolgt auf eigene Gefahr!
-
- Beiträge: 29
- Registriert: 25.04.2018, 14:40
-
- Beiträge: 14169
- Registriert: 08.05.2013, 23:33
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Nordwürttemberg
- Hat sich bedankt: 586 Mal
- Danksagung erhalten: 1501 Mal
Re: Logik funktioniert - ich versteh' sie nur nicht richtig
Ich würde es so umsetzen.
Zwei Dinge sind hierzu zu sagen. Zuerst würde die Lampen mit einem gewissen Zeitversatz einschalten (meinetwegen 10 Minuten und 601 Sekunden). Bei gleichzeitigen Befehlen könnte es Kommunikationsstörungen geben. Die WENN-Abfrage besteht aus zwei verUNDeten Blöcken. Einer enthält die Astro-Abfrage und der zweite die verODERten Zeitmodule mit den Freigabe- bzw. Triggerzeiten.
Die zweite Bemerkung: Dieser Lösungsansatz hat einen kleinen Nachteil. Er produziert unnötige Ausschaltbefehle durch die Verwendung des SONST. Dieses wird immer dann ausgeführt, wenn die Bedingungsprüfung im WENN ein FALSCH ergibt. Ist es 16:00 Uhr und noch nicht Nacht, dann wird ein Ausschaltbefehl generiert und dann aber korrekt zur Astrozeit eingeschaltet. Um 23:59 Uhr ergibt die Anfrage wieder ein FALSCH und es wird berechtigt ausgeschaltet.
Um 05:00 Uhr wird dann wieder eingeschaltet, wenn es noch Nacht ist, bzw. im Sommer ein dann unnötiger Ausschaltbefehl (wie auch beim Sonnenaufgang vor 05:00 Uhr) generiert, genau wie um 08:00 Uhr nochmal. Der Wechsel von Nacht auf Tag generiert auch einen weiteren Ausschaltbefehl. Diese unnützen Ausschaltbefehle kann man auch als Feature betrachten, denn sie verhindern ja, dass das Licht unnötig leuchtet.
Einfache Schaltbefehle belasten den Duty Cycle nicht übermäßig. Man könnte sie aber durch ein SONST WENN mit der Abfrage "Lampen eingeschaltet" (hier würde es genügen, eine der Lampen abzufragen, man kann sie auch verUNDen) nur prüfen(!). Das "nur prüfen" ist wichtig, damit ein Einschalten das Programm nicht fehlerhaft triggert. Und im dazugehörigen DANN werden dann die Lampen abgeschaltet. Das SONST WENN wird nur erreicht, wenn der WENN-Block ein FALSCH ergibt, triggert das Programm aber durch das "nur prüfen" nicht selbst. Die Aktion wird aber nur ausgeführt, wenn die Lampen eingeschaltet sind. Es werden also keine unnötigen Befehle gesendet. Das SONST muss natürlich leer bleiben. Zugegeben, ein wenig "von hinten durch die Brust ins Auge"-Lösung und nicht unbedingt notwendig und unnötig kompliziert. Die Uhrzeiten 08:00 Uhr und 16:00 Uhr sind willkürlich gewählt und müssen natürlich je nach Örtlichkeit (frühester Sonnenunter- bzw. spätester Sonnenaufgang) angepasst werden.
Viel Text für wenig Arbeit. Darum hier noch mal obiges Beispiel mit den vorgeschlagenen Änderungen zur Verhinderung unnötigen Ausschaltbefehlen.
Muss dazu schreiben. Ich habe solche Lösung nicht (mehr), weil ich mit den zusätzlichen Ausschaltbefehlen leben konnte. Die Außenlampen, die ich mal so gesteuert hatte, sind durch Hue-Lampen ersetzt und werden über die Bridge gesteuert.
Gruß Xel66
Code: Alles auswählen
WENN täglich nachts bei Änderung auslösen
UND
Zeitmodul täglich von 16:00 Uhr bis 23:59 Uhr zu Zeitpunkten auslösen
ODER Zeitmodul täglich von 05:00 Uhr bis 08:00 Uhr zu Zeitpunkten auslösen
DANN Lampen einschalten
SONST Lampen ausschalten
Die zweite Bemerkung: Dieser Lösungsansatz hat einen kleinen Nachteil. Er produziert unnötige Ausschaltbefehle durch die Verwendung des SONST. Dieses wird immer dann ausgeführt, wenn die Bedingungsprüfung im WENN ein FALSCH ergibt. Ist es 16:00 Uhr und noch nicht Nacht, dann wird ein Ausschaltbefehl generiert und dann aber korrekt zur Astrozeit eingeschaltet. Um 23:59 Uhr ergibt die Anfrage wieder ein FALSCH und es wird berechtigt ausgeschaltet.
Um 05:00 Uhr wird dann wieder eingeschaltet, wenn es noch Nacht ist, bzw. im Sommer ein dann unnötiger Ausschaltbefehl (wie auch beim Sonnenaufgang vor 05:00 Uhr) generiert, genau wie um 08:00 Uhr nochmal. Der Wechsel von Nacht auf Tag generiert auch einen weiteren Ausschaltbefehl. Diese unnützen Ausschaltbefehle kann man auch als Feature betrachten, denn sie verhindern ja, dass das Licht unnötig leuchtet.
Einfache Schaltbefehle belasten den Duty Cycle nicht übermäßig. Man könnte sie aber durch ein SONST WENN mit der Abfrage "Lampen eingeschaltet" (hier würde es genügen, eine der Lampen abzufragen, man kann sie auch verUNDen) nur prüfen(!). Das "nur prüfen" ist wichtig, damit ein Einschalten das Programm nicht fehlerhaft triggert. Und im dazugehörigen DANN werden dann die Lampen abgeschaltet. Das SONST WENN wird nur erreicht, wenn der WENN-Block ein FALSCH ergibt, triggert das Programm aber durch das "nur prüfen" nicht selbst. Die Aktion wird aber nur ausgeführt, wenn die Lampen eingeschaltet sind. Es werden also keine unnötigen Befehle gesendet. Das SONST muss natürlich leer bleiben. Zugegeben, ein wenig "von hinten durch die Brust ins Auge"-Lösung und nicht unbedingt notwendig und unnötig kompliziert. Die Uhrzeiten 08:00 Uhr und 16:00 Uhr sind willkürlich gewählt und müssen natürlich je nach Örtlichkeit (frühester Sonnenunter- bzw. spätester Sonnenaufgang) angepasst werden.
Viel Text für wenig Arbeit. Darum hier noch mal obiges Beispiel mit den vorgeschlagenen Änderungen zur Verhinderung unnötigen Ausschaltbefehlen.
Code: Alles auswählen
WENN täglich nachts bei Änderung auslösen
UND
Zeitmodul täglich von 16:00 Uhr bis 23:59 Uhr zu Zeitpunkten auslösen
ODER Zeitmodul täglich von 05:00 Uhr bis 08:00 Uhr zu Zeitpunkten auslösen
DANN Lampen einschalten
SONST WENN Lampen eingeschaltet nur prüfen
DANN Lampen ausschalten
Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch