Programm bei Änderung einer Systemvariablen starten

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

DrTob
Beiträge: 3426
Registriert: 29.10.2010, 08:24
Danksagung erhalten: 5 Mal

Re: Programm bei Änderung einer Systemvariablen starten

Beitrag von DrTob » 09.06.2015, 18:41

EDIT: Beitrag gelöscht, Tipp war falsch :roll:

ursprünglicher Text:
Wenn man als Bedingung >= "" verwendet, kann man sich das "sonst" sparen, weil so die Bedingung immer Wahr ist und das Dann ausgeführt wird.
Zuletzt geändert von DrTob am 09.06.2015, 19:30, insgesamt 2-mal geändert.

buempi
Ehrenmitglied
Beiträge: 12194
Registriert: 29.07.2006, 15:58
Wohnort: Schweiz
Danksagung erhalten: 5 Mal

Re: Programm bei Änderung einer Systemvariablen starten

Beitrag von buempi » 09.06.2015, 18:47

DrTob hat geschrieben:Wenn man als Bedingung >= "" verwendet, kann man sich das "sonst" sparen, weil so die Bedingung immer Wahr ist und das Dann ausgeführt wird.
... wie kann man das bei einer Variable vom Typ Zeichenkette auswählen?

Viele Grüsse
Bümpi

DrTob
Beiträge: 3426
Registriert: 29.10.2010, 08:24
Danksagung erhalten: 5 Mal

Re: Programm bei Änderung einer Systemvariablen starten

Beitrag von DrTob » 09.06.2015, 19:25

buempi hat geschrieben: ... wie kann man das bei einer Variable vom Typ Zeichenkette auswählen?
gar nicht :( --> Ich hatte dieses Vorgehen bei der Reaktion auf einen DP der eine Zeichenkette entählt im Kopf, dort geht es. Bei Systemvariablen tatsächlich nicht.

vepman
Beiträge: 164
Registriert: 12.09.2013, 13:52
System: CCU
Hat sich bedankt: 5 Mal

Re: Programm bei Änderung einer Systemvariablen starten

Beitrag von vepman » 12.11.2015, 15:32

Durch den Lösungsansatz von ap_ habe ich folgende Lösung gefunden, um mit einer Zeichenkette etwas
zu triggern.
Das heißt z.B.: wenn ich mit der Sytemvariable MeineStringVariable = Alarm (Triggerwort) ein Skript auslösen will, geht das mit folgendem Code durch ein CCU-GUI Programm.
Ein anderes Wort als Alarm bewirkt keine Aktivität. (Warum so funktioniert, weiß ich allerdings auch nicht)
Eine eventuelle Auslösung bei Neustart o. ä. habe jetzt mal nicht berücksichtigt.
Ergänzung nachträglich: Das Triggerwort muß nach der Aktivität wieder geändert oder gelöscht werden.

Code: Alles auswählen

Bedingung: Wenn...
[ Systemzustand ] [ MeineStringVariable ] bei [ leer lassen ]  [ nur prüfen ]

Aktivität: Dann...     [ leer lassen ]

Aktivität: Sonst, wenn
[ Systemzustand ] [ MeineStringVariable ] bei [ Alarm ]  [ bei Änderung auslösen ]
Aktivität: Dann...     
[ Skript ] [ MeinSelbsterstelltesScript ]  [ sofort ]
[ Systemzustand ] [ MeineStringVariable ] [ verzögert um ]  [ 10 ]  [ Sekunden ]   [ leer lassen ]

kw123
Beiträge: 60
Registriert: 29.06.2023, 22:02
System: Alternative CCU (auf Basis OCCU)
Danksagung erhalten: 3 Mal

Re: Programm bei Änderung einer Systemvariablen starten

Beitrag von kw123 » 11.03.2024, 22:39

Die Logik ist ja von hinten durch die Brust..

habe 1 stunde lang probiert ein script laufen zu lassen wenn sich eine Variable aendert, bis ich diesen post gefunden habe

Also "Bedingung wenn Änderung", "dann nichts", "sonst execute script".

Dann wird das script ausgeführt. Das ist doch unlogisch

Karl

Benutzeravatar
Henke
Beiträge: 1526
Registriert: 27.06.2022, 20:51
System: CCU
Hat sich bedankt: 141 Mal
Danksagung erhalten: 306 Mal

Re: Programm bei Änderung einer Systemvariablen starten

Beitrag von Henke » 11.03.2024, 23:23

Systemvariablen, CCU-Programme und Scripte sind vollkommen veraltet und fehlerhaft.
Da habe ich leider auch zu viel Zeit rein gesteckt, aber das Wissen brauchte ich später.
Selbst Jens empfiehlt die WebUI nur zur Konfiguration zu verwenden.

Daher, siehe Signatur oder alternativ IO-Broker/HomeAssistant auf einem Rechner mit mehr Power.

Xel66
Beiträge: 14169
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 587 Mal
Danksagung erhalten: 1501 Mal

Re: Programm bei Änderung einer Systemvariablen starten

Beitrag von Xel66 » 11.03.2024, 23:58

kw123 hat geschrieben:
11.03.2024, 22:39
Dann wird das script ausgeführt. Das ist doch unlogisch
Nein, das Triggern auf Systemvariableninhalte einer Stringvariable ist nun mal extrem tricky, denn "Sytsemvariableninhalt" ist bei einer Prüfung nun mal nicht gleich "Systemvariableninhalt ". Du siehst den kleinen, aber prüfungsrelevanten Unterschied? Daher wird eben bei Aktualisierung der Systemvariable auf einen Inhalt geprüft, der mit hoher Wahrscheinlichkeit nicht verwendet werden soll und dann eben bei negativem Ergebnis das Script ausgeführt. Ist das Gleiche als würde man auf "nicht bei" prüfen (geht nur bei Raspberrymatic, aber nicht bei der orignalen CCU3-Firmware!).

Warum der vorgestellte Lösungsansatz so "unlogisch" ist liegt an der selbst dokumentierten Ursache...
vepman hat geschrieben:
12.11.2015, 15:32
(Warum so funktioniert, weiß ich allerdings auch nicht)
Der Anwender hat den Lösungsansatz eben mangels Kenntnis der Arbeitsweise der CCU-Firmware nicht durchgehend verstanden. Die Firmware arbeitet etwas eigen, aber strikt logisch. Meine Trigger für den Push- oder Mailversand bzw. zum Triggern von TTS-Ansagen (Alexa) sehen ganz einfach aus.

Code: Alles auswählen

WENN Systemzustand "Systemvariablenname" bei "leer" (das Wort "leer") bei Aktualisierung
DANN Script sofort (hier steht das gleiche Script wie im SONST drin, damit der manuelle Test des Programms per WebUI auch funktioniert, kann man auch leer lassen)
SONST Script sofort
Ist auch umgekehrte Logik, aber viel einfacher. Das Wort "leer" werde ich nicht versenden/ansagen lassen, darum funktioniert das Programm und auch das Script, sowie die Systemvariable mit einem beliebigen Text beschrieben wird. Und nein, ein Löschen des Variableninhaltes ist in diesem Lösungsansatz ebenfalls nicht notwendig.

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

kw123
Beiträge: 60
Registriert: 29.06.2023, 22:02
System: Alternative CCU (auf Basis OCCU)
Danksagung erhalten: 3 Mal

Re: Programm bei Änderung einer Systemvariablen starten

Beitrag von kw123 » 12.03.2024, 00:15

Mein Hauptsystem zu Hause ist INDIGO ( forums.indigodomo.com ). Es laueft auf dem MAC; user Programme (plugins) sind python.
Dort habe ich einige plugins geschrieben. Mein letztes ist the Homematic <-> indigo Integration. Homematic benutze ich hauptsächlich wegen der Heizungsgeraete (Ventile , Thermostate) , habe aber fast alle Homematic Geraete mir einmal angeschaut (bin jetzt bei 85) und in indigo ueber CCU-jack integriert. Kann in beide Richtungen Befehle geben und lesen. Ist halt mein hobby.

Karl

alchy
Beiträge: 10754
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 673 Mal

Re: Programm bei Änderung einer Systemvariablen starten

Beitrag von alchy » 12.03.2024, 07:59

Gilt vielleicht immer noch?
viewtopic.php?f=26&t=58150

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

Antworten

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