Systemvariablenwert in neue Systemvariable schreiben?

Homematic-, TCL- und Shell-Script, Toolchain, C, etc.

Moderator: Co-Administratoren

mr-spooner
Beiträge: 19
Registriert: 18.07.2016, 14:26

Systemvariablenwert in neue Systemvariable schreiben?

Beitrag von mr-spooner » 18.02.2018, 17:15

Hallo Community,

ich habe folgende Herausforderung: Ich habe mir vor einiger Zeit einen Arduino nebst diversen i/o Shields gekauft und die Homeduino Version von Eugen installiert.

Kommunikation zwischen Arduino und Pi (Raspberrymatic) funktioniert super - Sensorwerte werden brav in die definierten Systemvariablen geschrieben.

Nun ist es jedoch so, dass Systemvariablen leider keinen Gewerken oder Räumen zugeordnet werden können (schonmal doof) und ich neben den reinen Automatisierungsaufgaben natürlich primär die Werte prüfen möchte (Vor- / Rücklauftemperaturen, Abgaswerte Holzvergaser & BHKW, Temperaturen der Pufferspeicher usw.).

Ich habe eigentlich vor, von den aktuell eingesetzten Differenztemperatursensoren von EQ3 wegzukommen, da zu batterieintensiv (4 Geräte allein im Heizungsraum verbaut) und die Abgastemperaturen damit ohnehin nicht überwacht werden können.

Beim Homeduino kann ich zwar 50 Sensoren anschließen (somit auch Überwachung der Abgastemperatur möglich), aber die entsprechenden Sensorausgänge werden in vordefinierte Systemvariablen (z.B. homeduino_1_D69) geschrieben. Da ich die ganzen Temperaturwerte nun aber weder einzelnen Räumen zuordnen, noch die Bezeichnung der Systemvariablen ändern kann, stehe ich vor einem Problem. :(

Nun meine Frage:

Ist es irgendwie möglich, die in den bestehenden Systemvariablen befindlichen Temperaturen

a) in ein virtuelles Gerät (CUxD) zu übertragen

oder

b) die Werte aus der vordefinierten Systemvariable (homeduine_1_D69) in eine weitere Systemvariable zu schreiben, die ich dann zumindest frei benennen kann?

Irgendwie komme ich hier nicht weiter und da ich skripttechnisch absoluter DAU bin, hoffe ich auf Eure Hilfe.

Besten Dank & viele Grüße
Denis

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

Re: Systemvariablenwert in neue Systemvariable schreiben?

Beitrag von alchy » 18.02.2018, 19:02

Code: Alles auswählen

dom.GetObject(ID_SYSTEM_VARIABLES).Get("Name deiner Speichervariable").State(dom.GetObject(ID_SYSTEM_VARIABLES).Get("homeduine_1_D69").Value());
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.

mr-spooner
Beiträge: 19
Registriert: 18.07.2016, 14:26

Re: Systemvariablenwert in neue Systemvariable schreiben?

Beitrag von mr-spooner » 18.02.2018, 19:20

Hallo Alchy,

erst einmal vielen Dank für Deinen Input.

Ich habe nun eine Systemvariable "Holzvergaser Vorlauf" als Zahlenwert definiert und in einem neuen Programm Dein Skript eingefügt.

Funktioniert aber nicht, die neue Systemvariable bleibt leer.
Programm.JPG

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

Re: Systemvariablenwert in neue Systemvariable schreiben?

Beitrag von alchy » 18.02.2018, 19:31

Da verzichtet man auf Fehlerhandling und dann geht es nicht.

Das Script:

Code: Alles auswählen

dom.GetObject(ID_SYSTEM_VARIABLES).Get("Holzvergaser Vorlauf").State(dom.GetObject(ID_SYSTEM_VARIABLES).Get("homeduine_1_D69").Value());
liest den Wert der Systemvariable: homeduine_1_D69 und schreibt ihn in die Systemvariable: Holzvergaser Vorlauf und das zu seiner Laufzeit.
Auch ausgeführt unter Skript testen.

ABER:

BEIDE Variablen müssen genau so geschrieben vorhanden sein und der Typ der Variablen sollte kompatibel sein.
Bitte Bildschirmcopy der Systemvariablen

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.

mr-spooner
Beiträge: 19
Registriert: 18.07.2016, 14:26

Re: Systemvariablenwert in neue Systemvariable schreiben?

Beitrag von mr-spooner » 18.02.2018, 20:03

Oh man, bin ich blöd. Habe den Fehler selber produziert: In meinem Beitrag habe ich die Variable homeduine_1_D69 angegeben.

Richtig heißt sie aber homeduino_1_D69. Tja, was soll ich sagen - wer zu blöd zum Schreiben ist, braucht sich auch nicht wundern, wenn es nicht funktioniert. Da bringt auch die beste Hilfe von Experten nix... :mrgreen:

Ich danke Dir, Alchi - klasse Forum!

Viele Grüße
Denis

PS: Option b) funktioniert ja schonmal. Ist Option a), also der Umweg über ein virtuelles Device, grundsätzlich auch realisierbar? Das wäre die komfortabelste Lösung, da hier ganz normal mit Gewerken und Räumen gearbeitet werden kann.

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

Re: Systemvariablenwert in neue Systemvariable schreiben?

Beitrag von alchy » 18.02.2018, 20:42

mr-spooner hat geschrieben:Oh man, bin ich blöd.
Nur für das Protokoll, hab ich nicht behauptet, nicht das wieder Gerede aufkommt.
Allerdings war mir klar, das ein Name wahrscheinlich nicht 100%tig richtig war.
mr-spooner hat geschrieben:Ich danke Dir, Alchi - klasse Forum!
bitte, aber das Forum hat da wenig Anteil dran. :P
mr-spooner hat geschrieben:Ist Option a), also der Umweg über ein virtuelles Device, grundsätzlich auch realisierbar?
Klar. Der Möglichkeiten gibt es viele.
CUxD bietet solche Geräte, welche man mit Werten füttern kann. Vorteil gleich noch zusätzliche Datenpunkteusw. Dazu einfach mal das Handbuch von CUxD lesen und eventuelle Fragen dazu im CUxD Unterforum stellen.
Auch könnten die virtuellen Kanäle zweckentfremdet werden, in dem man diesen die Systemvariablen zuordnet.

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.

mr-spooner
Beiträge: 19
Registriert: 18.07.2016, 14:26

Re: Systemvariablenwert in neue Systemvariable schreiben?

Beitrag von mr-spooner » 18.02.2018, 20:58

Keine Sorge, ich wollte Dir nichts unterstellen - das war reine Selbstkritik von mir. :mrgreen:

Klar gebührt Dir der Dank für den schnellen Support. Aber ohne entsprechendes Forum als Plattform hätte ich mein Problem gar nicht schildern können. :wink:

Aber bevor es zu haarspalterisch wird: Danke nochmal für Deine Unterstützung und den Hinweis auf das CUxD Forum. Hatte auch schon die virtuellen Kanäle bemüht, brachte aber nicht das gewünschte Ergebnis. Da werden ja primär nur Schalter dargestellt, die zwar auf der homematic Seite im Rechner mit zusätzlichen Temperaturen gefüttert werden, aber nicht mit TiniMatic funktionieren.

Beste Grüße
Denis

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

Re: Systemvariablenwert in neue Systemvariable schreiben?

Beitrag von alchy » 18.02.2018, 21:21

Ich sorge mich nicht um mich und unterstellen lass ich mir wenig. :wink:
Schildern kannst du dein Problem immer irgendwo (dem Frisör, dem Busfahrer, dem Hersteller, dem Homematic-forum...), nur wird es jemanden interessieren?

Da jetzt Tinimatic mit in das Spiel gebracht wird, wirst du wahrscheinlich auch noch andere Punkte auf der Agenda haben welche am Anfang noch unbekannt waren.


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.

mr-spooner
Beiträge: 19
Registriert: 18.07.2016, 14:26

Re: Systemvariablenwert in neue Systemvariable schreiben?

Beitrag von mr-spooner » 18.02.2018, 22:06

alchy hat geschrieben:Da jetzt Tinimatic mit in das Spiel gebracht wird, wirst du wahrscheinlich auch noch andere Punkte auf der Agenda haben welche am Anfang noch unbekannt waren.
Punkte (i.S.v. Wünschen) was zukünftig alles mit Homematic gemacht werden soll, habe ich viele... :D

Homeduino bietet ja genügend Gestaltungsmöglichkeiten (z.B. Ultraschallmessung für Flüssigkeitstanks, Temperatur-/Luftfeuchtigkeitssensoren, Bewegungsmelder, etc.), die EQ3 bisher noch nicht wirklich bedient.

Und alle Funktionen nicht nur auf dem Rechner, sondern auch auf dem Handy darzustellen, war für mich jetzt keine große Unbekannte.

Aber für den Moment bin ich (dank Deiner Hilfe) erst einmal einen wichtigen Schritt weiter gekommen. Alles Weitere (also die Einbindung in CUxD) ist dann Komfort.

Beste Grüße
Denis

Kelthizar
Beiträge: 43
Registriert: 16.12.2018, 10:12

Re: Systemvariablenwert in neue Systemvariable schreiben?

Beitrag von Kelthizar » 07.01.2019, 10:18

Hallo,
ich habe ein ähnliches Problem und bin auch absoluter Neuling in Sachen Scripten... :?

Vielleicht kann mir hier auch jemand helfen?

Ich bekomme folgende Werte in die Systemvariable "Smappee auslesen Test":

Code: Alles auswählen

{"totalPower":333,"totalReactivePower":647,"totalExportEnergy":0,"totalImportEnergy":83636206,"monitorStatus":0,"utcTimeStamp":1546849844934,"channelPowers":[{"ctInput":0,"power":172,"exportEnergy":0,"importEnergy":42888864,"phaseId":2,"current":15},{"ctInput":1,"power":95,"exportEnergy":0,"importEnergy":16489433,"phaseId":1,"current":7},{"ctInput":2,"power":65,"exportEnergy":0,"importEnergy":24257104,"phaseId":0,"current":9}],"voltages":[{"voltage":235,"phaseId":0}]}
Jetzt zu meinen Fragen:

Nehmen wir an "totalImportEnergy":83636206 ist der gesamte Verbrauch meines Hauses, seit dem ich die Energiemessung in meinem Haus habe (ca. 3 Jahre.
Jetzt möchte ich Werte haben für "Gesamter Verbrauch Heute"(immer aktuell 10 minütlich), "Gesamter Verbrauch Gestern", "Gesamter Verbrauch aktueller Monat", "Gesamter Verbrauch Januar", "Gesamter Verbrauch Februar", "Gesamter Verbrauch März", .......... haben, wie kann man das in einem Skript umsetzen?
Ich hoffe das ist nicht zu viel Verlangt, aber das übersteigt einfach meine bescheidene Programmierkompetenz.

1. Wie kann ich jetzt z.B. nur den Wert "83636206" von "totalImportEnergy":83636206" in eine neue Systemvariable " Gesamtverbrauch" schreiben und durch 1000 teilen?
2. Wie kann ich den Wert der Systemvariable "Gesamtverbrauch" in eine neue Variable "Gesamtverbrauch Heute" schreiben?
Dazu muss ich ja den Gesamtverbrauch vom Haus subtrahieren von dem gestrigen gesamt verbrauchten Wert. Man muss wahrscheinlich eine Systemvariable "Gesamtverbrauch Gestern Temp" anlegen?! Ich hoffe es ist verständlich, was ich hier schreibe und worauf ich hinaus möchte... :oops:
3. Wie funktioniert das ganze mit der Systemvariable "Gesamtverbrauch Gestern"?
4. Das selbe Prozedere dann für aktueller Monat, Monat Januar, Monat Februar,...

Genau wie hier:

Bild
Bild: Nutzer @prinzeisenherz1

Hoffe mir kann hier jemand weiterhelfen.

Danke schon mal im Voraus.
Zuletzt geändert von alchy am 07.01.2019, 16:20, insgesamt 1-mal geändert.
Grund: Code in Codetags posten

Antworten

Zurück zu „Softwareentwicklung für die HomeMatic CCU“