Einfaches Programm verhält sich nicht wie erwartet

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

Samuel
Beiträge: 60
Registriert: 18.12.2015, 12:42
Hat sich bedankt: 8 Mal

Einfaches Programm verhält sich nicht wie erwartet

Beitrag von Samuel » 26.03.2019, 19:16

Hallo,

Homematic erwischt mich immer wieder :lol:

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:
ifelse.PNG
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.

Benutzeravatar
JRiemann
Beiträge: 3903
Registriert: 12.11.2015, 21:05
Wohnort: Aurich
Danksagung erhalten: 3 Mal

Re: Einfaches Skript verhält sich nicht wie erwartet

Beitrag von JRiemann » 26.03.2019, 19:21

Anfängerfehler der top 10...
Ein händisch ausgeführtes Programm prüft keine Bedingungen und führt IMMER das 1. DANN aus.
Viele Grüße!
Jörg

Benutzeravatar
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

Beitrag von Black » 26.03.2019, 19:27

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
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

Samuel
Beiträge: 60
Registriert: 18.12.2015, 12:42
Hat sich bedankt: 8 Mal

Re: Einfaches Skript verhält sich nicht wie erwartet

Beitrag von Samuel » 26.03.2019, 19:42

Ha! Ein klassischer Homematic Klassiker, würde ich sagen :mrgreen:

Danke für die Hilfe! Dann muss ich mir wohl eine andere Lösung suchen.

Benutzeravatar
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

Beitrag von robbi77 » 26.03.2019, 19:45

Und die Überschrift ändern, da es sich hier um ein Programm und kein Script handelt!!
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 ...

Samuel
Beiträge: 60
Registriert: 18.12.2015, 12:42
Hat sich bedankt: 8 Mal

Re: Einfaches Skript verhält sich nicht wie erwartet

Beitrag von Samuel » 26.03.2019, 19:45

robbi77 hat geschrieben:
26.03.2019, 19:45
Und die Überschrift ändern, da es sich hier um ein Programm und kein Script handelt!!
Erledigt.

Benutzeravatar
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

Beitrag von robbi77 » 26.03.2019, 19:46

👍
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 ...

manfredh
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

Beitrag von manfredh » 27.03.2019, 08:50

Samuel hat geschrieben:
26.03.2019, 19:42
Ha! Ein klassischer Homematic Klassiker, würde ich sagen :mrgreen:

Danke für die Hilfe! Dann muss ich mir wohl eine andere Lösung suchen.
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.

Xel66
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

Beitrag von Xel66 » 27.03.2019, 09:23

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
-------------------------------------------------------------------------------------------
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

Samuel
Beiträge: 60
Registriert: 18.12.2015, 12:42
Hat sich bedankt: 8 Mal

Re: Einfaches Programm verhält sich nicht wie erwartet

Beitrag von Samuel » 27.03.2019, 19:23

@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 :D

Antworten

Zurück zu „HomeMatic allgemein“