Programmauslösung durch Variable nicht korrekt

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

Antworten
Hofi90
Beiträge: 29
Registriert: 24.08.2016, 16:01
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 5 Mal
Danksagung erhalten: 1 Mal

Programmauslösung durch Variable nicht korrekt

Beitrag von Hofi90 » 25.04.2021, 21:15

Servus zusammen,

ein alter Homematic-Veteran benötigt mal wieder eure Hilfe, ich komme grad irgendwie nicht weiter.

Ich habe das Dutycycle Skript von Alchy in der Version 1.2 am Laufen, welches bei mir u.A. 4 Variablen befüllt, welche den Verbindungszustand zu meinen Langateways angeben (2 Zustände, Typ Logik, "online" oder "offline")
Die 4 Variablen lauten:
Connection-HomematicRepeaterGarageNeubau
Connection-HomematicRepeaterKeller
Connection-VordachStall
ConnectionCCU

Die ersten 3 möchte ich nun mittels einem Programm überwachen, d.h. wenn sie auf "offline" gehen, möchte ich eine Telegrammnachricht erhalten, genauso wenn sie wieder auf "online" gehen.

Dazu habe ich 2 Programme erstellt. "Gateway offline" und "Gateway online"

Wenn nun ein Gateway offline geht, werden sofort BEIDE Programme ausgeführt. Wenn ein Gateway wieder online geht, nur das "Gateway online" Programm.

Der Fehler ist repruzierbar: ich kann die Variable manuell auf "offline" setzen und es werden sofort beide Programme ausgeführt, die Variable ist aber unverändert auf "offline" und wird nicht in der Zwischenzeit von irgendeinem anderen Programm auf "online" gesetzt.

Gateway offline:
GW-offline.jpg
Skript

Code: Alles auswählen

! Gateway down Alarm per Telegram verschicken
! Systemvariablen in lokale Variablen einlesen

string VordachStall= dom.GetObject('Connection-VordachStall').Value().ToString();
string Keller= dom.GetObject('Connection-HomematicRepeaterKeller').Value().ToString();
string GarageNeubau= dom.GetObject('Connection-HomematicRepeaterGarageNeubau').Value().ToString();

string stderr;
string stdout;
string url="\"https://api.telegram.org/botXXXXXX/sendMessage?chat_id=XXXX&text=Alarmlevel=3\n*Gateway down!*\nEines der HomematicGateways ist down!\nHier der Status der jeweiligen Gateways:\n\nVordach Stall: "#VordachStall#"\nKeller: "#Keller#"\nGarageNeubau: "#GarageNeubau#"&parse_mode=markdown\"";
system.Exec("wget --no-check-certificate -q -O - "#url, &stdout, &stderr);

Gateway online:
GW-Online.jpg
Skript

Code: Alles auswählen

! Gateway down Alarm per Telegram verschicken
! Systemvariablen in lokale Variablen einlesen

string VordachStall= dom.GetObject('Connection-VordachStall').Value().ToString();
string Keller= dom.GetObject('Connection-HomematicRepeaterKeller').Value().ToString();
string GarageNeubau= dom.GetObject('Connection-HomematicRepeaterGarageNeubau').Value().ToString();

string stderr;
string stdout;
string url="\"https://api.telegram.org/botXXXX/sendMessage?chat_id=XXXX&text=Alarmlevel=3\n*Gateway wieder online!*\nDie Gateways sind wieder online\nHier der Status der jeweiligen Gateways:\n\nVordach Stall: "#VordachStall#"\nKeller: "#Keller#"\nGarageNeubau: "#GarageNeubau#"&parse_mode=markdown\"";
system.Exec("wget --no-check-certificate -q -O - "#url, &stdout, &stderr);
Umgebung: Raspberrymatic 3.57.4.20210320

Kann mir irgendwer den entscheidenden Denkanstoß geben, wo da der Hund begraben liegt?

Dankeschön!

Grüße

Andreas

#Edit 27.04.2021: Bild direkt ins Forum hochgeladen
Zuletzt geändert von Hofi90 am 27.04.2021, 08:03, insgesamt 1-mal geändert.

MichaelN
Beiträge: 9562
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 696 Mal
Danksagung erhalten: 1608 Mal

Re: Programmauslösung durch Variable nicht korrekt

Beitrag von MichaelN » 25.04.2021, 21:51

In der oder Verknüpfung.erstell dir mal eine Wahrheitstabelle, dann wirst du es sehen.
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 +++

TomTB
Beiträge: 73
Registriert: 18.11.2018, 15:30
Danksagung erhalten: 4 Mal

Re: Programmauslösung durch Variable nicht korrekt

Beitrag von TomTB » 26.04.2021, 08:11

Das zweite Programm wird abgearbeitet, weil die beiden anderen Gateways ja noch online sind.
Tom

Hofi90
Beiträge: 29
Registriert: 24.08.2016, 16:01
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 5 Mal
Danksagung erhalten: 1 Mal

Re: Programmauslösung durch Variable nicht korrekt

Beitrag von Hofi90 » 26.04.2021, 09:02

Puh, Warhheitstabelle, da war mal was in der Berufsschule vor x Jahren :roll:

Die Wahrheitstabellen zur Auslösung meiner Programme müssten dann so aussehen:
Wahrheitstabelle_HM.JPG
Die Einstellung "bei online" & "bei Änderung auslösen" wird dann aber gar nicht betrachtet, oder wie? Sonst dürfte ja eigentlich das 2te Programm nicht laufen, weil sich ja keine Variable auf "online" geändert hat...

Grüße

Andreas

#Edit 27.04.2021: Bilder direkt ins Forum hochgeladen
Zuletzt geändert von Hofi90 am 27.04.2021, 08:04, insgesamt 1-mal geändert.

MichaelN
Beiträge: 9562
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 696 Mal
Danksagung erhalten: 1608 Mal

Re: Programmauslösung durch Variable nicht korrekt

Beitrag von MichaelN » 26.04.2021, 09:17

Trigger und Bedingung werden getrennt ausgewertet
Wenn "bei Änderung" zutrifft, egal wo im Programm es steht, wird das Programm ausgelöst.
Und ob die SV nun von wahr auf falsch wechselt oder andersrum ist egal, ist beides eine Änderung.Dann wird das Programm von oben nach unten abgearbeitet und bei der ersten Bedingung die wahr ergibt kommt es zur Ausführung.
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 +++

MichaelN
Beiträge: 9562
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 696 Mal
Danksagung erhalten: 1608 Mal

Re: Programmauslösung durch Variable nicht korrekt

Beitrag von MichaelN » 26.04.2021, 09:21

Lösung in deinen Fall für das online Programm :

Entweder in 3 Programme aufteilen
Oder die Bedingungen ver-und-den.
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 +++

Hofi90
Beiträge: 29
Registriert: 24.08.2016, 16:01
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 5 Mal
Danksagung erhalten: 1 Mal

Re: Programmauslösung durch Variable nicht korrekt

Beitrag von Hofi90 » 26.04.2021, 09:26

Danke für die schnelle Hilfe und die Erklärung, ich verstehe, wo das Problem liegt!
Werde das Online Programm nun auf 3 Programme aufteilen, das ist, denke ich, besser wartbar als das ganze zu ver-unden.

Danke nochmal!

Grüße

Andreas

Matthias K.
Beiträge: 1165
Registriert: 14.02.2016, 12:32
System: Alternative CCU (auf Basis OCCU)
Wohnort: Heidenheim
Hat sich bedankt: 57 Mal
Danksagung erhalten: 225 Mal

Re: Programmauslösung durch Variable nicht korrekt

Beitrag von Matthias K. » 26.04.2021, 19:38

Noch ein Hinweis bezüglich Bilder: Diese bitte über die Forums-eigene Funktion anfügen, nicht übnner externe Bilderhoster.
So sind sie auch später noch lesbar wenn der Bilderhoster längst dicht gemacht hat und man muss keine Daten von (dubiosen?) externen Seiten nachladen.

Hofi90
Beiträge: 29
Registriert: 24.08.2016, 16:01
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 5 Mal
Danksagung erhalten: 1 Mal

Re: Programmauslösung durch Variable nicht korrekt

Beitrag von Hofi90 » 27.04.2021, 08:05

@scorpionking
danke für den Hinweis, habe meine Beiträge entsprechend aktualisiert und die Bilder direkt ins Forum geladen!

Antworten

Zurück zu „HomeMatic allgemein“