Seite 1 von 1

Programmauslösung durch Variable nicht korrekt

Verfasst: 25.04.2021, 21:15
von Hofi90
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

Re: Programmauslösung durch Variable nicht korrekt

Verfasst: 25.04.2021, 21:51
von MichaelN
In der oder Verknüpfung.erstell dir mal eine Wahrheitstabelle, dann wirst du es sehen.

Re: Programmauslösung durch Variable nicht korrekt

Verfasst: 26.04.2021, 08:11
von TomTB
Das zweite Programm wird abgearbeitet, weil die beiden anderen Gateways ja noch online sind.
Tom

Re: Programmauslösung durch Variable nicht korrekt

Verfasst: 26.04.2021, 09:02
von Hofi90
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

Re: Programmauslösung durch Variable nicht korrekt

Verfasst: 26.04.2021, 09:17
von MichaelN
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.

Re: Programmauslösung durch Variable nicht korrekt

Verfasst: 26.04.2021, 09:21
von MichaelN
Lösung in deinen Fall für das online Programm :

Entweder in 3 Programme aufteilen
Oder die Bedingungen ver-und-den.

Re: Programmauslösung durch Variable nicht korrekt

Verfasst: 26.04.2021, 09:26
von Hofi90
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

Re: Programmauslösung durch Variable nicht korrekt

Verfasst: 26.04.2021, 19:38
von Matthias K.
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.

Re: Programmauslösung durch Variable nicht korrekt

Verfasst: 27.04.2021, 08:05
von Hofi90
@scorpionking
danke für den Hinweis, habe meine Beiträge entsprechend aktualisiert und die Bilder direkt ins Forum geladen!