[gelöst]Systemvariable per Skript in eine Favoritenliste - möglich?

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

Antworten
66er
Beiträge: 3083
Registriert: 23.08.2015, 11:06
System: CCU
Hat sich bedankt: 116 Mal
Danksagung erhalten: 111 Mal

[gelöst]Systemvariable per Skript in eine Favoritenliste - möglich?

Beitrag von 66er » 11.10.2020, 10:07

Guten Morgen zusammen.

Ich suche eine Lösung für folgende Aufgabenstellung:

Ein funktionierendes Skript legt jeden Monat automatisch eine neue Variable für einen Zählerwert an (z.B. Verbrauch-2020-10, Verbrauch-2020-11) :heavy_check_mark:

Ist es möglich automatisiert per Skriptbefehl die neuen Variablen jeweils einer Favoritenliste z.B. "Zähler" zuzuordnen?
Damit würde das händische Zuordnen in die Favoriten entfallen. :wink:

Um Mißverständnisse zu vermeiden:
Das variablenerstellende Skript funktioniert bestens und ist nicht Gegenstand meiner Frage.

Es geht mir nur um das per Skript automatisierte Zuordnen/die Darstellung einer Variablen in einer Favoritenliste.

Also ganz simpel dargestellt:
Variable "Verbrauch-2020-10" füge zu Favorit "Zähler" hinzu (per Skript).

Besten Dank für jede Hilfe und Euch allen einen schönen Sonntag.
Stefan
Zuletzt geändert von 66er am 11.10.2020, 12:42, insgesamt 1-mal geändert.

Benutzeravatar
Black
Beiträge: 5463
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 418 Mal
Danksagung erhalten: 1069 Mal
Kontaktdaten:

Re: Systemvariable per Skript in eine Favoritenliste - möglich?

Beitrag von Black » 11.10.2020, 10:35

yup, geht... favoriten sind letztlich aufzählungen... und an aufzählungen kan man dienge anhängen verschieben oder löschen...

als Ansatz

Code: Alles auswählen

object oFav= dom.GetObject (ID_FAVORITES).Get("IchBinDeinFavoritenname");
oFav.Add (IchBinDieIDoderDasObjectDerNeuenVariablen);
!-Fertig
Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

66er
Beiträge: 3083
Registriert: 23.08.2015, 11:06
System: CCU
Hat sich bedankt: 116 Mal
Danksagung erhalten: 111 Mal

Re: Systemvariable per Skript in eine Favoritenliste - möglich?

Beitrag von 66er » 11.10.2020, 10:51

Vielen Dank. :D :+1:

66er
Beiträge: 3083
Registriert: 23.08.2015, 11:06
System: CCU
Hat sich bedankt: 116 Mal
Danksagung erhalten: 111 Mal

Re: Systemvariable per Skript in eine Favoritenliste - möglich?

Beitrag von 66er » 11.10.2020, 12:21

Muß nun leider doch nochmal nachfragen, weil es bei meiner Umsetzung leider (noch) nicht funktioniert :

Ich habe nun die beiden Zeilen

Code: Alles auswählen

object oFav= dom.GetObject (ID_FAVORITES).Get("IchBinDeinFavoritenname");
oFav.Add (IchBinDieIDoderDasObjectDerNeuenVariablen);
in mein Skript übernommen und so angepasst:

Code: Alles auswählen

object oFav= dom.GetObject (ID_FAVORITES).Get("Sauna");
oFav.Add (""#emsvmzk#"");  
Zeile 1: Sauna entspricht dem Klartextnamen der Favoritenliste
Zeile 2: emsvmzk ist der Skriptvariablenname mit dem Namen der Monats-Sysvar, die zugefügt werden soll, als Inhalt

Ist meine Syntax für/mit dem Variablennamen falsch? Die SysVariable wird mit dieser Skriptvariablen im Skript ordnungsgemäß erstellt, aber nicht dem Favoriten zugefügt.

Hier mal ein Ausschnitt des Skriptes: nach dem Anlegen der Variablen (was ja funktioniert) soll die Variable der Favoritenliste zugefügt werden

Code: Alles auswählen

string sName= ""#emsvmzk#"";  
if (!dom.GetObject (ID_SYSTEM_VARIABLES).Get (sName)) {
  object svObj = dom.CreateObject(OT_VARDP,sName);
  svObj.DPInfo("autom. angelegt durch Skript ");
  svObj.ValueUnit("Euro (brutto)");
  dom.GetObject (ID_SYSTEM_VARIABLES).Add(svObj);
  svObj.ValueType(ivtFloat);
  svObj.ValueSubType(istGeneric);
  svObj.ValueMin(0);
  svObj.ValueMax(65000);
  svObj.State (0); !. Zustand der Sysvar nach dem Anlegen
  dom.RTUpdate(0);
                                                      }
WriteLine("SV für KM geprüft/angelegt");


dom.GetObject(""#emsvmzk#"").State(mzk);

object oFav= dom.GetObject (ID_FAVORITES).Get("Sauna");
oFav.Add (""#emsvmzk#"");

  }                          
Zuletzt geändert von 66er am 11.10.2020, 12:43, insgesamt 2-mal geändert.

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

Re: Systemvariable per Skript in eine Favoritenliste - möglich?

Beitrag von Baxxy » 11.10.2020, 12:28

Funktionierendes Beispiel:

Code: Alles auswählen

object oSysVar = dom.GetObject (ID_SYSTEM_VARIABLES).Get ("A_Test_Programmausführung_Text");
object oFav= dom.GetObject (ID_FAVORITES).Get("Test_Fav");
oFav.Add (oSysVar);

66er
Beiträge: 3083
Registriert: 23.08.2015, 11:06
System: CCU
Hat sich bedankt: 116 Mal
Danksagung erhalten: 111 Mal

Re: Systemvariable per Skript in eine Favoritenliste - möglich?

Beitrag von 66er » 11.10.2020, 12:41

Super :D

Mit diesen 3 Zeilen funktioniert es jetzt:

Code: Alles auswählen

object oSysVar = dom.GetObject (ID_SYSTEM_VARIABLES).Get (""#emsvmzk#"");
object oFav= dom.GetObject (ID_FAVORITES).Get("Sauna");
oFav.Add (oSysVar);
Vielen Dank und schönes WE.
Stefan

Benutzeravatar
Black
Beiträge: 5463
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 418 Mal
Danksagung erhalten: 1069 Mal
Kontaktdaten:

Re: Systemvariable per Skript in eine Favoritenliste - möglich?

Beitrag von Black » 11.10.2020, 12:44

yup, das Beispiel ist korrekt umgesetzt.

so sollte es aber auch gehen

Code: Alles auswählen

string sName= ""#emsvmzk#"";  
if (!dom.GetObject (ID_SYSTEM_VARIABLES).Get (sName)) {
  object svObj = dom.CreateObject(OT_VARDP,sName);
  svObj.DPInfo("autom. angelegt durch Skript 3EM");
  svObj.ValueUnit("Euro (brutto)");
  dom.GetObject (ID_SYSTEM_VARIABLES).Add(svObj);
  svObj.ValueType(ivtFloat);
  svObj.ValueSubType(istGeneric);
  svObj.ValueMin(0);
  svObj.ValueMax(65000);
  svObj.State ( emmvges * pkwh.ToFloat() ); !. <----- State kann auch direkt beschrieben werden an der stelle
  dom.GetObject (ID_FAVORITES).Get("Sauna").Add (svObj);  !- <<<<< 
  dom.RTUpdate(0);
                                                      }
WriteLine("SV für KM geprüft/angelegt");

  }                          
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

66er
Beiträge: 3083
Registriert: 23.08.2015, 11:06
System: CCU
Hat sich bedankt: 116 Mal
Danksagung erhalten: 111 Mal

Re: [gelöst]Systemvariable per Skript in eine Favoritenliste - möglich?

Beitrag von 66er » 11.10.2020, 12:46

Danke @black,

teste ich noch.

Antworten

Zurück zu „HomeMatic allgemein“