Einfaches Programm verhält sich nicht wie erwartet
Moderator: Co-Administratoren
Einfaches Programm verhält sich nicht wie erwartet
Hallo,
Homematic erwischt mich immer wieder
Ich habe eine Variable "HEIZUNG_5_UHR_AN" und ein Programm, dass diese Variable toggeln soll. Wenn sie wahr ist, soll sie auf falsch und wenn sie falsch ist, soll sie auf wahr gesetzt werden.
Blöderweise wird bei mir niemals die "Sonst" oder "Sonst wenn" Bedingung ausgeführt, egal was ich mache. Ich sehe, dass die Variable HEIZUNG_5_UHR_AN immer, bei jedem Ausführen auf falsch gesetzt wird, auch wenn sie schon falsch ist.
Das Programm: Die Variable muss in beiden Bedingungen auf "nur Prüfen" stehen, weil ich natürlich keine automatische Auslösung haben möchte. Die Verzögerung um 1 Sekunde ist nur ein Test. Ohne Verzögerung funktioniert es auch nicht.
Verstehe ich die Intention des Ablaufs falsch? Muss ich mit zwei Programmen arbeiten?
Homematic erwischt mich immer wieder
Ich habe eine Variable "HEIZUNG_5_UHR_AN" und ein Programm, dass diese Variable toggeln soll. Wenn sie wahr ist, soll sie auf falsch und wenn sie falsch ist, soll sie auf wahr gesetzt werden.
Blöderweise wird bei mir niemals die "Sonst" oder "Sonst wenn" Bedingung ausgeführt, egal was ich mache. Ich sehe, dass die Variable HEIZUNG_5_UHR_AN immer, bei jedem Ausführen auf falsch gesetzt wird, auch wenn sie schon falsch ist.
Das Programm: Die Variable muss in beiden Bedingungen auf "nur Prüfen" stehen, weil ich natürlich keine automatische Auslösung haben möchte. Die Verzögerung um 1 Sekunde ist nur ein Test. Ohne Verzögerung funktioniert es auch nicht.
Verstehe ich die Intention des Ablaufs falsch? Muss ich mit zwei Programmen arbeiten?
Zuletzt geändert von Samuel am 26.03.2019, 19:45, insgesamt 1-mal geändert.
Re: Einfaches Skript verhält sich nicht wie erwartet
Anfängerfehler der top 10...
Ein händisch ausgeführtes Programm prüft keine Bedingungen und führt IMMER das 1. DANN aus.
Ein händisch ausgeführtes Programm prüft keine Bedingungen und führt IMMER das 1. DANN aus.
Viele Grüße!
Jörg
Jörg
- Black
- Beiträge: 5471
- Registriert: 12.09.2015, 22:31
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Wegberg
- Hat sich bedankt: 419 Mal
- Danksagung erhalten: 1071 Mal
- Kontaktdaten:
Re: Einfaches Skript verhält sich nicht wie erwartet
yap neben Sammy s Tips für Anfänger als quasi Pflichtlekture
zu Programmen auch von mir ein Blick hinter die programmkulissen: viewtopic.php?f=26&t=49806
Black
zu Programmen auch von mir ein Blick hinter die programmkulissen: viewtopic.php?f=26&t=49806
Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg
Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann
Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W
technical contribution against annoying advertising
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg
Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann
Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W
technical contribution against annoying advertising
Re: Einfaches Skript verhält sich nicht wie erwartet
Ha! Ein klassischer Homematic Klassiker, würde ich sagen
Danke für die Hilfe! Dann muss ich mir wohl eine andere Lösung suchen.
Danke für die Hilfe! Dann muss ich mir wohl eine andere Lösung suchen.
- robbi77
- Beiträge: 13847
- Registriert: 19.01.2011, 19:15
- System: CCU
- Wohnort: Landau
- Hat sich bedankt: 181 Mal
- Danksagung erhalten: 738 Mal
Re: Einfaches Programm verhält sich nicht wie erwartet
Und die Überschrift ändern, da es sich hier um ein Programm und kein Script handelt!!
Ersten Post editieren und ändern.
Ersten Post editieren und ändern.
Zuletzt geändert von robbi77 am 26.03.2019, 19:46, insgesamt 2-mal geändert.
Bei Risiken und Nebenwirkungen fragen Sie den Elektriker Ihres geringsten Mißtrauens!
http://www.eq-3.de/service/downloads.html
Tips und Tricks für Anfänger: viewtopic.php?t=22801
Programmlogik: viewtopic.php?f=31&t=4251
Webui-Handbuch: https://www.eq-3.de/downloads/download/ ... h_eQ-3.pdf
Script und Linksammlung: viewtopic.php?f=26&t=27907
Troll des Forums ...
http://www.eq-3.de/service/downloads.html
Tips und Tricks für Anfänger: viewtopic.php?t=22801
Programmlogik: viewtopic.php?f=31&t=4251
Webui-Handbuch: https://www.eq-3.de/downloads/download/ ... h_eQ-3.pdf
Script und Linksammlung: viewtopic.php?f=26&t=27907
Troll des Forums ...
- robbi77
- Beiträge: 13847
- Registriert: 19.01.2011, 19:15
- System: CCU
- Wohnort: Landau
- Hat sich bedankt: 181 Mal
- Danksagung erhalten: 738 Mal
Re: Einfaches Programm verhält sich nicht wie erwartet
Bei Risiken und Nebenwirkungen fragen Sie den Elektriker Ihres geringsten Mißtrauens!
http://www.eq-3.de/service/downloads.html
Tips und Tricks für Anfänger: viewtopic.php?t=22801
Programmlogik: viewtopic.php?f=31&t=4251
Webui-Handbuch: https://www.eq-3.de/downloads/download/ ... h_eQ-3.pdf
Script und Linksammlung: viewtopic.php?f=26&t=27907
Troll des Forums ...
http://www.eq-3.de/service/downloads.html
Tips und Tricks für Anfänger: viewtopic.php?t=22801
Programmlogik: viewtopic.php?f=31&t=4251
Webui-Handbuch: https://www.eq-3.de/downloads/download/ ... h_eQ-3.pdf
Script und Linksammlung: viewtopic.php?f=26&t=27907
Troll des Forums ...
-
- 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: Einfaches Skript verhält sich nicht wie erwartet
Dein Lösungsansatz ist ja prinzipiell okay. Du musst nur bewirken, dass das Programm von einem externen Trigger angesteuert wird. Z.B. eine freie Taste eines Sensors oder eine virtuelle Taste der CCU.
Außerdem kannst du die Bedingunsgprüfung im "Sonst,wenn" rausschmeißen und ein einfaches "Sonst" daraus machen.
Es gibt 10 Arten von Menschen: solche die Binärcode verstehen und solche, die ihn nicht verstehen.
-
- Beiträge: 14149
- Registriert: 08.05.2013, 23:33
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Nordwürttemberg
- Hat sich bedankt: 583 Mal
- Danksagung erhalten: 1497 Mal
Re: Einfaches Programm verhält sich nicht wie erwartet
Entsprechend der Benamung der Sytemvariable würde ich mal davon ausgehen, dass hiermit festgelegt werden soll, dass am Folgetag um 5:00 Uhr die Heizung gestartet werden soll. So etwas brauchen im Allgmeinen Leute, die im Wechselschichtsystem arbeiten. Für starre Schichtpläne gibt es hier im Forum schon Lösungen, die solche Dinge automatisch berechnen (mache ich seit Jahren). Für Dienstpläne, die frei festgelegt werden eignen sich solche Lösungen eher nicht. Hier wäre eine Kalenderlösung zielführend. Auf hierfür gibt es Anleitungen.
Ich würde das Problem für kurzfistig festgelegte Dienstpläne aber anders angehen. Mit dem Wechsel der Systemvariable ist es nicht getan, da Du keinerlei Rückmeldungen erhältst, wie die Systemvariable gerade steht (außer im WebUI). Insofern wäre das Setzen der Variable für den Folgetag ab Abend zielführender und mit dem Starten der Heizung um 5:00 Uhr wird die Variable zurückgesetzt. Diese Bedienung ist eindeutiger als das Toggeln des Zustandes mit einem Taster. Soll der Zustand mehrere Tage erhalten bleiben, müsste man sich was zusätzliches einfallen lassen.
Wenn Du keinen zusätzlichen Taster als Trigger installieren willst, kannst Du Dir auch andere Ereignisse heranziehen. So könntest Du Deine Heizung (Achtung Wortspiel!) "aufziehen" Der Trigger könnte sein, dass man am Abend/Vortag einmalig ein bestimmtes Thermostatventil (das Bad böte sich an) auf 30,5°C hochdreht und somit ein Programm startet, welches die Systemvariable setzt und das Thermostat wieder in den Normalzustand bringt (einfach auf Automatik per Programm setzen). Das Setzen der Normaltemperatur ist gleichzeitig die optische Rückmeldung, dass das Programm gelaufen und die Systemvariable für den Folgetag gesetzt ist. Und nein, die Boost-Taste lässt sich nicht für den Zweck benutzen. Einen kleinen Fallstrick gibt es noch. Im Normalbetrieb übermitteln die Thermostate nur alle drei Minuten ihre Werte und holen sich neue von der CCU. Für dieses Thermostat müsst dann in den Einstellungen "wake on radio" aktiviert werden, damit es kurzfristig wieder zurückgeschaltet werden kann. Ist dieses Thermostat mit einem TFK verknüpft, ist das schon automatisch gegeben.
Gruß Xel66
Ich würde das Problem für kurzfistig festgelegte Dienstpläne aber anders angehen. Mit dem Wechsel der Systemvariable ist es nicht getan, da Du keinerlei Rückmeldungen erhältst, wie die Systemvariable gerade steht (außer im WebUI). Insofern wäre das Setzen der Variable für den Folgetag ab Abend zielführender und mit dem Starten der Heizung um 5:00 Uhr wird die Variable zurückgesetzt. Diese Bedienung ist eindeutiger als das Toggeln des Zustandes mit einem Taster. Soll der Zustand mehrere Tage erhalten bleiben, müsste man sich was zusätzliches einfallen lassen.
Wenn Du keinen zusätzlichen Taster als Trigger installieren willst, kannst Du Dir auch andere Ereignisse heranziehen. So könntest Du Deine Heizung (Achtung Wortspiel!) "aufziehen" Der Trigger könnte sein, dass man am Abend/Vortag einmalig ein bestimmtes Thermostatventil (das Bad böte sich an) auf 30,5°C hochdreht und somit ein Programm startet, welches die Systemvariable setzt und das Thermostat wieder in den Normalzustand bringt (einfach auf Automatik per Programm setzen). Das Setzen der Normaltemperatur ist gleichzeitig die optische Rückmeldung, dass das Programm gelaufen und die Systemvariable für den Folgetag gesetzt ist. Und nein, die Boost-Taste lässt sich nicht für den Zweck benutzen. Einen kleinen Fallstrick gibt es noch. Im Normalbetrieb übermitteln die Thermostate nur alle drei Minuten ihre Werte und holen sich neue von der CCU. Für dieses Thermostat müsst dann in den Einstellungen "wake on radio" aktiviert werden, damit es kurzfristig wieder zurückgeschaltet werden kann. Ist dieses Thermostat mit einem TFK verknüpft, ist das schon automatisch gegeben.
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
Re: Einfaches Programm verhält sich nicht wie erwartet
@Xel66. Wow, danke dass du dir so viele Gedanken darum gemacht hast.
Ich arbeite nicht wirklich im Schichtbetrieb (und die Heizung auch nicht ), sonst hätte man dies vermutlich mit den Heizgruppen-Gruppen lösen können.
Manchmal ist es so, dass wir früher als normal aufstehen müssen. Unsere Nachtabsenkung weiß davon natürlich nichts.
Wenn es 15 Minuten vor dem normalen aufstehen ist, ist das ok, aber manchmal stehen wir eine Stunde oder früher als normal auf. Dies sind sehr seltene Fälle, dennoch sind die Räume da meistens noch kalt
Mir liegt die Art und Weise, wie Homematic programmiert werden kann irgendwie nicht und versuche daher so etwas über andere Systeme zu lösen. Was auch immer mich geritten hat, wieder ein Homematic Programm zu schreiben, kann ich nicht beurteilen
Aktuell habe ich eine eigene Haus KI, die über XML API mit Homematic redet. Der kann man problemlos "Mach Heizung im Wohnzimmer an" oder "Fahr Rollläden runter", usw sagen. Was aber noch auf der todo Liste steht, ist das Konzept von Zeit.
Damit würde ich meiner KI dann so etwas wie "Mach die Heizung morgen um vier Uhr dreißig in der Küche an" sagen können.
Weil ich aber noch nicht so weit bin und auch die Plattform wechseln möchte, werde ich vermutlich in der KI speziell abgebildete "Programme als Konfiguration" ablegen. Dann kann ich so etwas sagen wie "aktiviere Programm 'Heizung fünf Uhr'" und die KI weiß welche ISE_ID das ist setzt das "aktiv" Flag für das Programm auf true.
Theoretisch kann ich das mit einer einfachen Variable und einer boolschen Operation machen. Das Programm wäre dann aktiv, prüft aber neben "Uhrzeit = 4:30" auch Variable "Heizung 4 Uhr == true" mit ab. Das finde ich aber aus irgendwelchen Gründen nicht so gut. Es wäre dann zwar nur noch ein kleiner Toggle Button im AIO Creator und damit leicht übers Smartphone zu bedienen, aber mir gefällt die Vorstellung nicht, dass dieses Programm immer aktiv ist. Die CCU 2 ist schon gefühlt am Limit, was die Komplexität und Auslastung angeht. Daher würde ich gerne in 90% der Fälle das Programm gar nicht aktiv belassen, was nahezu nie laufen muss.
Aktoren wie ein Schalter oder Fernbedienung oder virtuelle Taster wären natürlich eine Option, aber ich hätte gerne mehr Freiheit und Status-Infos über den Zustand der Programme. Wenn es mehr Programme werden, wird es umständlicher, alle so zu verwalten.
P.S: Ich bin über deine Kreativität mit dem Thermostat Trigger sehr begeistert
Ich arbeite nicht wirklich im Schichtbetrieb (und die Heizung auch nicht ), sonst hätte man dies vermutlich mit den Heizgruppen-Gruppen lösen können.
Manchmal ist es so, dass wir früher als normal aufstehen müssen. Unsere Nachtabsenkung weiß davon natürlich nichts.
Wenn es 15 Minuten vor dem normalen aufstehen ist, ist das ok, aber manchmal stehen wir eine Stunde oder früher als normal auf. Dies sind sehr seltene Fälle, dennoch sind die Räume da meistens noch kalt
Mir liegt die Art und Weise, wie Homematic programmiert werden kann irgendwie nicht und versuche daher so etwas über andere Systeme zu lösen. Was auch immer mich geritten hat, wieder ein Homematic Programm zu schreiben, kann ich nicht beurteilen
Aktuell habe ich eine eigene Haus KI, die über XML API mit Homematic redet. Der kann man problemlos "Mach Heizung im Wohnzimmer an" oder "Fahr Rollläden runter", usw sagen. Was aber noch auf der todo Liste steht, ist das Konzept von Zeit.
Damit würde ich meiner KI dann so etwas wie "Mach die Heizung morgen um vier Uhr dreißig in der Küche an" sagen können.
Weil ich aber noch nicht so weit bin und auch die Plattform wechseln möchte, werde ich vermutlich in der KI speziell abgebildete "Programme als Konfiguration" ablegen. Dann kann ich so etwas sagen wie "aktiviere Programm 'Heizung fünf Uhr'" und die KI weiß welche ISE_ID das ist setzt das "aktiv" Flag für das Programm auf true.
Theoretisch kann ich das mit einer einfachen Variable und einer boolschen Operation machen. Das Programm wäre dann aktiv, prüft aber neben "Uhrzeit = 4:30" auch Variable "Heizung 4 Uhr == true" mit ab. Das finde ich aber aus irgendwelchen Gründen nicht so gut. Es wäre dann zwar nur noch ein kleiner Toggle Button im AIO Creator und damit leicht übers Smartphone zu bedienen, aber mir gefällt die Vorstellung nicht, dass dieses Programm immer aktiv ist. Die CCU 2 ist schon gefühlt am Limit, was die Komplexität und Auslastung angeht. Daher würde ich gerne in 90% der Fälle das Programm gar nicht aktiv belassen, was nahezu nie laufen muss.
Aktoren wie ein Schalter oder Fernbedienung oder virtuelle Taster wären natürlich eine Option, aber ich hätte gerne mehr Freiheit und Status-Infos über den Zustand der Programme. Wenn es mehr Programme werden, wird es umständlicher, alle so zu verwalten.
P.S: Ich bin über deine Kreativität mit dem Thermostat Trigger sehr begeistert