Systemvariable periodisch setzen

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

Antworten
homepixel5000
Beiträge: 8
Registriert: 07.08.2019, 18:48
Hat sich bedankt: 1 Mal

Systemvariable periodisch setzen

Beitrag von homepixel5000 » 01.09.2023, 19:44

Hallo,
ich arbeite seit vielen Jahren mit homematic und wollte jetzt alte Sachen aufarbeiten ;-).
Ich kenne ein paar Bugs und habe jetzt 2 Tage gesucht, getestet und gelesen.

Aber ich glaube ich sehe einfach den Fehler nicht.

Ziel: einen Wert eines Gerätes in eine Systemvariable schreiben, wenn sie sich ändert.
Resultat: meine Skript läuft beim Testen, wenn ich das Programm ausführe bei Ausführen (Nur 1.DANN),
aber dann nie wieder - es wird also nicht getriggert - Was übersehe ich?

Die Unterschiede zwischen prüfen/bei Aktualisierung/bei Änderuung kenn ich.
Um all diesen Problemen aus dem Weg zu gehen, habe ich eine periodische Skriptausführung in Betracht gezogen (alle 3 Minuten).

Das Programm läuft periodisch solange ich nur eine Standard Mail verschicke

Code: Alles auswählen

! Einfach ein Testmail raus ob das Programm korrekt periodisch ausgeführt wird

string stdout;
string stderr;
system.Exec("/etc/config/addons/email/email 50", &stdout, &stderr);
sobald ich folgenden Teil hinzufüge - passiert nichts mehr - ausser bei Auslösung über die GUI:

Code: Alles auswählen

! Solar_Druck auslesen und setzen

var srcobj = dom.GetObject("BidCos-Wired.IEQ0024089:26.VALUE");
var dstobj = dom.GetObject("Solar_Druck");
var srcval = srcobj.Value()/100;
if (srcval != dstobj.Value()) {
  dstobj.State(srcval);
}

! -----------------

! Boiler_Temperatur auslesen und setzen

var srcobj2 = dom.GetObject("BidCos-Wired.IEQ0024089:25.VALUE");
var dstobj2 = dom.GetObject("Boiler_Temperatur");
var srcval2 = srcobj2.Value()/10;
if (srcval2 != dstobj2.Value()) {
  dstobj2.State(srcval2);
}
Ich hoffe der Fehler ist nicht zu peinlich :mrgreen:
Vielen Dank!
Antonio
Dateianhänge
Periodische_Ausführuung_2023-09.png

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

Re: Systemvariable periodisch setzen

Beitrag von Baxxy » 01.09.2023, 19:52

homepixel5000 hat geschrieben:
01.09.2023, 19:44
Ich kenne ein paar Bugs
Kennen die auch andere?
Wenn nicht dann verrate sie doch mal und wir verraten Dir wie es richtig geht*. :wink:

(*: muss erstmal essen)

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

Re: Systemvariable periodisch setzen

Beitrag von MichaelN » 01.09.2023, 20:19

homepixel5000 hat geschrieben:
01.09.2023, 19:44
sobald ich folgenden Teil hinzufüge - passiert nichts mehr - ausser bei Auslösung über die GUI:
Was steht denn im Fehlerprotokoll?

Debugging Tips siehe Signatur
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 +++

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

Re: Systemvariable periodisch setzen

Beitrag von Baxxy » 01.09.2023, 20:35

Also:
homepixel5000 hat geschrieben:
01.09.2023, 19:44
Ziel: einen Wert eines Gerätes in eine Systemvariable schreiben, wenn sie sich ändert.
Ich würde ja den Wert des Gerätes in die SysVar schreiben wenn dieser sich ändert.

Da es hier um unbekannte Werte geht würde ich pauschal auf >0.0 bei Aktualisierung triggern.
MichaelN hat geschrieben:
01.09.2023, 20:19
Was steht denn im Fehlerprotokoll?
Das siehst du doch auch ohne geputzte Brille. 8)
homepixel5000 hat geschrieben:
01.09.2023, 19:44
var srcobj = dom.GetObject("BidCos-Wired.IEQ0024089:26.VALUE");
Es gibt meines Wissens keinen Datenpunkt der "VALUE" heißt.
Beispielhaft (richtig):

Code: Alles auswählen

object srcobj = dom.GetObject("BidCos-Wired.IEQ0024089:26.TEMPERATURE");
homepixel5000 hat geschrieben:
01.09.2023, 19:44
var dstobj = dom.GetObject("Solar_Druck");
Schönheitsfehler, der aber wohl "funktioniert". Du adressierst ein Objekt aber deklarierst eine Variable.
Besser:

Code: Alles auswählen

object dstobj = dom.GetObject (ID_SYSTEM_VARIABLES).Get ("Solar_Druck");

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

Re: Systemvariable periodisch setzen

Beitrag von MichaelN » 01.09.2023, 21:43

Baxxy hat geschrieben:
01.09.2023, 20:35
Es gibt meines Wissens keinen Datenpunkt der "VALUE" heißt.
Ja, das kommt mir auch fragwürdig vor.
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 +++

homepixel5000
Beiträge: 8
Registriert: 07.08.2019, 18:48
Hat sich bedankt: 1 Mal

Re: Systemvariable periodisch setzen

Beitrag von homepixel5000 » 02.09.2023, 22:33

Vielen Dank für die vielen Rückmeldungen!

Das Gerät ist ein sehr altes 24V I/O homematic wired Produkt uund der Eingang hat ja keine direkte Zuordnung zu einer "Eigenschaft" wie Temperatur/Licht/.. daher ist denk ich Value der richtige Datenpunkt - aber ich werde das auuf jeden Fall nochmals überprüfen!

Ich wollte ja ursprünglich nur schreiben wenn sich der Wert ändert - da wurde aber nie auusgelöst.

Meine Installation hat derzeit zu viele Log-Einträge um da sinnvoll was zu finden (war meine erste Hoffnung), habe gestern ein paar Geräte umgestellt - um weniger Logs zu produzieren - werde auch mal versuchen einen SyslogSever einzusetzen um hier vielleicht der Daten Herr zu werden.

Heute ist aber etwas sehr komisches passiert. Musste bei meiner USV die Akkus tauschen und daher alles herunterfahren Server/Netzwerk/homematic
ca 1/2h wurden alle 3 Minuten das Skript ausgeführt. dann hat es plötzlich aufgehört.

Werde morgen die Logs nochmals durchforsten und weiter testen bzw. alle Vorschläge abarbeiten.

Und dann melde ich mich - hoffentlich mit einem Ergebnis :-)

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

Re: Systemvariable periodisch setzen

Beitrag von Baxxy » 02.09.2023, 22:41

homepixel5000 hat geschrieben:
02.09.2023, 22:33
aher ist denk ich Value der richtige Datenpunkt - aber ich werde das auuf jeden Fall nochmals überprüfen!
Mach das. Hier bekommst du Hilfe dazu...
viewtopic.php?f=31&t=30127&p=273730&hil ... er#p273730
homepixel5000 hat geschrieben:
02.09.2023, 22:33
Ich wollte ja ursprünglich nur schreiben wenn sich der Wert ändert - da wurde aber nie auusgelöst.
Prüfen ob der Wert "ungleich" dem letzten Wert ist geht halt nur über Script. Damit das Script aber immer ausgeführt wird brauchst du im WebUI-Programm "bei Aktualisierung".

ABE2000
Beiträge: 290
Registriert: 06.02.2019, 00:48
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 4 Mal
Danksagung erhalten: 21 Mal

Re: Systemvariable periodisch setzen

Beitrag von ABE2000 » 03.09.2023, 12:28

MichaelN hat geschrieben:
01.09.2023, 21:43
Baxxy hat geschrieben:
01.09.2023, 20:35
Es gibt meines Wissens keinen Datenpunkt der "VALUE" heißt.
Ja, das kommt mir auch fragwürdig vor.
Wenn es diesen Datenpunkt gibt, dann sollte er ja auch einen Wert unter WriteLine() ausspucken - das mache ich ja auch beim Script testen, um zu sehen, ob ich den richtigen Wert erhalte... 🤷‍♂️ 😁

MfG René
Tinkerboard S mit HM-MOD-RPI-PCB (vorher Raspberry Pi3+) RaspberryMatic
HomeMatic Gateway
HomeMatic CCU2 Gateway

80 angelernte wireless Geräte
287 Kanäle
137 Programme

--------------------------------------------
264 Kanäle in 78 Geräten
65 CUxD-Kanäle in 5 CUxD-Geräten
--------------------------------------------

Tyfys
Beiträge: 551
Registriert: 17.04.2021, 17:12
System: CCU
Hat sich bedankt: 27 Mal
Danksagung erhalten: 125 Mal

Re: Systemvariable periodisch setzen

Beitrag von Tyfys » 03.09.2023, 13:15

Baxxy hat geschrieben:
01.09.2023, 20:35
Es gibt meines Wissens keinen Datenpunkt der "VALUE" heißt.
Doch leider gibt es mindestens einen, der so heisst: https://www.eq-3.de/Downloads/eq3/downl ... punkte.pdf

Seite 367 - Gerät HMW-IO-12-Sw14-DR
Gruß
Harry


Antworten

Zurück zu „HomeMatic allgemein“