Variablenabfrage in Programm funktioniert nicht

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

burninhell
Beiträge: 28
Registriert: 25.06.2013, 20:57

Variablenabfrage in Programm funktioniert nicht

Beitrag von burninhell » 25.10.2020, 09:59

Hallo zusammen,
ich habe zig funktionierende Programme/Skripte in der Homematic Zentrale aber dieses eine will einfach nicht:
2020-10-25 09_42_59-HomeMatic WebUI.jpg
Ich prüfe die Variable GarageLastToggleClose (die true ist, wenn die Garage bei der letzten Aktion geschlossen worden ist) und "wenn" sie false ist, "dann" schließe ich die Garage und setze die Variable auf true, "sonst wenn" sie true ist, "dann" öffne ich die Garage und setze die Variable auf false.
Das Problem ist: Das Programm geht IMMER durch den oberen Zweig (sehe ich im Protokoll der Aktoren), egal wie der Status der Variablen ist (sehe ich in Status und Bedienung -> Systemvariable.
Hier mal so eine Art Beweis: Screenshot aus dem Protokoll bei 2x ausführen nacheinander:
2020-10-25 10_04_20-HomeMatic WebUI.jpg
Ich kann nur einen erfolgreichen Durchlauf machen: er geht durch den "Wenn"-Zweig, schließt die Garage, setzt die Variable richtig, alles gut. Obwohl er laut Variablenzustand durch den "sonst wenn" Zweig gehen müsste, geht er aber immer nur durch den "wenn" Zweig und führt immer die Aktionen aus. Ich hab die CCU2 einmal stromlos gemacht und neugestartet, aber das hat nicht geholfen.
Ich habe die beiden Programmteile in "wenn" und "sonst wenn" getauscht und dann führt er auch immer den "wenn" Zweig aus und nie den "sonst wenn".
Übrigens: die reboot Variable ist immer (außer kurz nach dem CCU reboot) auf false und das scheint er richtig auszulesen, sonst würde er nie etwas machen.

Benutzeravatar
Black
Beiträge: 5480
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 424 Mal
Danksagung erhalten: 1074 Mal
Kontaktdaten:

Re: Variablenabfrage in Programm funktioniert nicht

Beitrag von Black » 25.10.2020, 10:14

Wie startest du denn dieses Programm? So mal als Frage

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

Benutzeravatar
Baxxy
Beiträge: 10826
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 607 Mal
Danksagung erhalten: 2225 Mal

Re: Variablenabfrage in Programm funktioniert nicht

Beitrag von Baxxy » 25.10.2020, 10:16

burninhell hat geschrieben:
25.10.2020, 09:59
Das Problem ist: Das Programm geht IMMER durch den oberen Zweig (sehe ich im Protokoll der Aktoren), egal wie der Status der Variablen ist (sehe ich in Status und Bedienung -> Systemvariable.
Interessant das dein Programm überhaupt irgendeinen Zweig durchläuft. Das kann nur sein wenn du das Programm über die WebUI manuell startest oder per Script z.B..

Da alle deine Bedingungen auf "nur prüfen" stehen wird das Programm niemals durch eine der Bedingungen getriggert.

Benutzeravatar
Black
Beiträge: 5480
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 424 Mal
Danksagung erhalten: 1074 Mal
Kontaktdaten:

Re: Variablenabfrage in Programm funktioniert nicht

Beitrag von Black » 25.10.2020, 10:23

Darauf wollte ich mit meiner fragestellung ja hinaus....
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

burninhell
Beiträge: 28
Registriert: 25.06.2013, 20:57

Re: Variablenabfrage in Programm funktioniert nicht

Beitrag von burninhell » 25.10.2020, 10:28

Technisch über einen http get Request auf die ccu:8181. Da klebt ein NFC Sticker an der Garage, der den Request auf dem Handy auslöst.

Benutzeravatar
Black
Beiträge: 5480
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 424 Mal
Danksagung erhalten: 1074 Mal
Kontaktdaten:

Re: Variablenabfrage in Programm funktioniert nicht

Beitrag von Black » 25.10.2020, 10:35

das beantwortet die frage aber noch nicht.

was macht dieser http request ? ein .State auf eine Variable ? ein .ProgramExecute () auf ein programm ?
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

burninhell
Beiträge: 28
Registriert: 25.06.2013, 20:57

Re: Variablenabfrage in Programm funktioniert nicht

Beitrag von burninhell » 25.10.2020, 10:59

Über ProgramExecute() wird das oben abgebildete Programm aufgerufen.

Ich habe gerade mal versucht die Variable durch eine nagelneu angelegte auszutauschen: hat nichts gebracht.

Dann habe ich versucht die Variable über ein Script auf false zu setzen, auszulesen, auf true zu setzen, auszulesen:

string val;
dom.GetObject(8345).State(0);
val=dom.GetObject(8345).Value();
WriteLine(val);
dom.GetObject(8345).State(1);
val=dom.GetObject(8345).Value();
WriteLine(val);

Das funktioniert und ändert auch die Variable so, dass ich im nachhinein in der Systemvariablenübersicht den geänderten Wert sehe.
Wäre das ein Weg das Programm von Klickibunti auf Script umzuschreiben?

Benutzeravatar
Black
Beiträge: 5480
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 424 Mal
Danksagung erhalten: 1074 Mal
Kontaktdaten:

Re: Variablenabfrage in Programm funktioniert nicht

Beitrag von Black » 25.10.2020, 11:07

ProgramExeceute() bewirkt genau wie ein manueller Programmstart IMMER das unbedingte Ausführen des ersten Dann Teiles, er wird IMMER ausgeführt, egal ob irgendwelche Bedingungen erfüllt sind oder nicht.

Das ist schon mal der Grund, warum es bei dir nicht geht.
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

burninhell
Beiträge: 28
Registriert: 25.06.2013, 20:57

Re: Variablenabfrage in Programm funktioniert nicht

Beitrag von burninhell » 25.10.2020, 11:52

Ok, das ist schonmal ein Superwertvoller Hinweis.
Mir fallen folgende Lösungsvarianten ein:
1)Wie mein letzter Vorschlag, meine Ganze Logik als Script umbauen und abspeichern.
2) Stattdessen über http eine Systemvariable call_garage.toggle auf true setzen und in einem Programm auf das Ändern dieser Variable reagieren.

Ist eine der beiden besser oder vielleicht gibt es eine bessere dritte Lösung?

MichaelN
Beiträge: 9678
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 700 Mal
Danksagung erhalten: 1626 Mal

Re: Variablenabfrage in Programm funktioniert nicht

Beitrag von MichaelN » 25.10.2020, 11:55

2)
Warum was neues erfinden?
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

Antworten

Zurück zu „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“