Kann man eine neue Systemvariable von aussen definieren?

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Benutzeravatar
funkleuchtturm
Beiträge: 2369
Registriert: 13.06.2011, 16:42
Hat sich bedankt: 23 Mal
Danksagung erhalten: 357 Mal
Kontaktdaten:

Kann man eine neue Systemvariable von aussen definieren?

Beitrag von funkleuchtturm » 30.01.2016, 15:01

Wie man eine neue Systemvariable auf der CCU mit dem WebUI definiert ist natürlich klar.
Auch Klar ist , wie man mit einem http-Aufruf über Port 8181 diese Variable setzen kann.

Aber weiß jemand, ob und wie man eine neue Systemvariable auf der CCU anlegen kann ??

Ziel ist dabei, daß auch Nicht-HM-Geräte sich selbständig auf der CCU "bekannt machen".
Viele Gruesse
Eugen
________________________________________________
SmartHome-Eintopf mit feinem Homeduino-Gemüse
... und für Feinschmecker gibt´s den WIFFI, den WEATHERMAN-2, den PULSECOUNTER und den AIRSNIFFER
mit vielen Kochrezepten für den ambitionierten Homematiker

Familienvater
Beiträge: 7151
Registriert: 31.12.2006, 15:18
System: Alternative CCU (auf Basis OCCU)
Wohnort: Rhein-Main
Danksagung erhalten: 34 Mal

Re: Kann man eine neue Systemvariable von aussen definieren?

Beitrag von Familienvater » 30.01.2016, 15:37

Hi,

such mal nach "dom.CreateObject (OT_VARDP)", es ist nur ein wenig frickelig, die vom Typ her richtig anzulegen, aber es geht definitiv.

Der Code hier prüft, ob die Variable mit dem Namen schon existiert, und legt die ggf. selbst an, sonst wird der Wert und die Beschreibung geändert.

Code: Alles auswählen

string s_uniquename;
object o_SysVars = dom.GetObject (ID_SYSTEM_VARIABLES);

object o_DeineSysVar = dom.GetObject ("DeineSysVar");
if (!o_DeineSysVar) {
  if ((o_SysVars) && (dom.CheckName ("DeineSysVar", &s_uniquename, ID_SYSTEM_VARIABLES))) {
    o_DeineSysVar = dom.CreateObject (OT_VARDP);
    o_DeineSysVar.Name ("DeineSysVar");
    o_SysVars.Add (o_DeineSysVar.ID());
    WriteLine("DeineSysVar  erstellt.");
    o_DeineSysVar.DPInfo ("SysVarBeschreibung");
    o_DeineSysVar.ValueType (ivtString);
    o_DeineSysVar.ValueSubType (istChar8859);
    o_DeineSysVar.State("Irgendein Wert");
  }
} else {
  o_DeineSysVar.DPInfo ("SysVarBeschreibung");
  o_DeineSysVar.State("Irgendein Wert");
    WriteLine("DeineSysVar geändert.");}
Der Familienvater

Benutzeravatar
funkleuchtturm
Beiträge: 2369
Registriert: 13.06.2011, 16:42
Hat sich bedankt: 23 Mal
Danksagung erhalten: 357 Mal
Kontaktdaten:

Re: Kann man eine neue Systemvariable von aussen definieren?

Beitrag von funkleuchtturm » 30.01.2016, 16:14

Danke für die Info. Das könnte mir vielleicht weiter helfen Allerdings ist das ein Weg, um "von innen" über ein Skript eine Systemvariable zu erzeugen. Ich suche nach einem Weg, um dies "von aussen" zu tun. Ähnlich wie man eine Systemvariable von aussen über einen http-Befehl setzen kann.

Oder kann man vielleicht "von aussen" neue Geräte mit entsprechenden Variablen in den Posteingang legen, um damit ein Anlernen zu simulieren.

Also es dreht sich letztlich die Frage, wie kann ich HM-fremde-Geräte , die im LAN verfügbar sind, an die HM anlernen.

CuxD macht seine Geräte beispielsweise über einen Anlernvorgang mit der CCU bekannt. Gibt es irgendwo Informatinen über diesen Anlernvorgang ??

Ich bin dankbar für jeden hilfreichen Tipp!
Viele Gruesse
Eugen
________________________________________________
SmartHome-Eintopf mit feinem Homeduino-Gemüse
... und für Feinschmecker gibt´s den WIFFI, den WEATHERMAN-2, den PULSECOUNTER und den AIRSNIFFER
mit vielen Kochrezepten für den ambitionierten Homematiker

Familienvater
Beiträge: 7151
Registriert: 31.12.2006, 15:18
System: Alternative CCU (auf Basis OCCU)
Wohnort: Rhein-Main
Danksagung erhalten: 34 Mal

Re: Kann man eine neue Systemvariable von aussen definieren?

Beitrag von Familienvater » 30.01.2016, 16:31

Hi,

cuxd ist für die CCU soetwas wie der rfd oder der hs485d, Du müsstest dann einen eigenen "Dienst" erstellen, der per XML-RPC das Gerät bei der Rega der CCU anmeldet etc (das kann Dir wahrscheinlich am ehesten Uwe beantworten, wieviel Klimbim dazu notwendig ist).

Und soweit ich das weiß, kannst Du auch durchaus ein "mehrzeiliges" HM-Script über Port 8181 auf die CCU loslassen, das müsste schon gehen, die SV von aussen zu Erstellen.

Aber ich fürchte, das Du deinen Arduinos eher keinen XML-RPC-Server beibringen kannst, vor allem, weil sich dann theoretisch jeder Arduino bei der CCU als eigener Server-Prozess anmelden müsste, und da fehlt mir definitiv der Blick und die Erfahrung hinter den Kulissen, ab wieviel solcher angemeldeter Prozess dann die Rega der CCU irgendwann ins Straucheln gerät, und wenn die dann mal eine WiFi-Störung haben, dann verwzeifelt ggf. die eh schon nicht stabile Rega vollends.

Der Familienvater

Benutzeravatar
funkleuchtturm
Beiträge: 2369
Registriert: 13.06.2011, 16:42
Hat sich bedankt: 23 Mal
Danksagung erhalten: 357 Mal
Kontaktdaten:

Re: Kann man eine neue Systemvariable von aussen definieren?

Beitrag von funkleuchtturm » 30.01.2016, 17:48

Danke für's Mitdenken!
Familienvater hat geschrieben:Und soweit ich das weiß, kannst Du auch durchaus ein "mehrzeiliges" HM-Script über Port 8181 auf die CCU loslassen, das müsste schon gehen, die SV von aussen zu Erstellen.
Wenn das möglich ist, dann wäre ich schon einen Riesenschritt weiter :D :D !
Da bei meinen neuen WIFFIs (u.a. auch beim Wohnzimmersensor) jedes Gerät einen eigenen Webserver zur browsergestützten Einstellung der Funktionsparameter hat, wäre es dann ein Leichtes, über einen Button auf der WIFFI-Webseite an die CCU ein Skript zu übertragen und dort auslösen, mit dem sich der WIFFI "bei der CCU "bekannt macht". Da muß ich mal weiter googeln und mit dem http-8181-Befehl probieren, was geht.
Familienvater hat geschrieben:Aber ich fürchte, das Du deinen Arduinos eher keinen XML-RPC-Server beibringen kannst, vor allem, weil sich dann theoretisch jeder Arduino bei der CCU als eigener Server-Prozess anmelden müsste
Da hast Du recht! Das ist mir viel zu komplex und wahrscheinlich kaum dokumentiert.
Viele Gruesse
Eugen
________________________________________________
SmartHome-Eintopf mit feinem Homeduino-Gemüse
... und für Feinschmecker gibt´s den WIFFI, den WEATHERMAN-2, den PULSECOUNTER und den AIRSNIFFER
mit vielen Kochrezepten für den ambitionierten Homematiker

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

Re: Kann man eine neue Systemvariable von aussen definieren?

Beitrag von Black » 30.01.2016, 18:38

Du kannst auch mehrzeilige Scripte über 8181 ausführen lassen, kein Problem. Das gleiche mache ich mit meinem Raspi auch. geht seit monaten ohne probleme

greetz, 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

Benutzeravatar
funkleuchtturm
Beiträge: 2369
Registriert: 13.06.2011, 16:42
Hat sich bedankt: 23 Mal
Danksagung erhalten: 357 Mal
Kontaktdaten:

Re: Kann man eine neue Systemvariable von aussen definieren?

Beitrag von funkleuchtturm » 30.01.2016, 18:51

Das probier ich aus. Danke !

Weißt du, wie der übertragbare String mit dem Skript längenmäßig begrenzt ist ?
Viele Gruesse
Eugen
________________________________________________
SmartHome-Eintopf mit feinem Homeduino-Gemüse
... und für Feinschmecker gibt´s den WIFFI, den WEATHERMAN-2, den PULSECOUNTER und den AIRSNIFFER
mit vielen Kochrezepten für den ambitionierten Homematiker

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

Re: Kann man eine neue Systemvariable von aussen definieren?

Beitrag von Black » 30.01.2016, 20:32

genau nicht. ich benutz aber auch nicht den aufruf über nen brower, sondern bau mir unter python mit der http.client class ein post command zusammen und schick das direkt an die 8181.

Genaue Länge wiess ich nicht, aber bei mir gehen alle systemvariablen, loggings und setzen von cuxd devices von der weather auswertung, die bei mir auf dem pi ausgelagert wurde, in einem rutsch mit so einen scipt an die ccu

greetz, 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

inidona
Beiträge: 395
Registriert: 17.09.2013, 18:30
Hat sich bedankt: 1 Mal
Danksagung erhalten: 2 Mal

Re: Kann man eine neue Systemvariable von aussen definieren?

Beitrag von inidona » 31.01.2016, 10:35

Hallo,

am besten du benutzt dann HTTP PUT statt GET auf den üblichen Port 8181.
Mein größtes Script ist 2500 Bytes groß das ich per POST in die CCU übertrage und es dort auch ausgeführt wird.

ciao
Andreas

Benutzeravatar
funkleuchtturm
Beiträge: 2369
Registriert: 13.06.2011, 16:42
Hat sich bedankt: 23 Mal
Danksagung erhalten: 357 Mal
Kontaktdaten:

Re: Kann man eine neue Systemvariable von aussen definieren?

Beitrag von funkleuchtturm » 05.02.2016, 19:55

@Familienvater
Also ich hab mit Deinen Anstössen jetzt wunderbar ein HM-Skript erstellen können, mit dem man "von innen" auf der CCU beliebige Systemvariablen erstellen kann. Allerdings muß man Zahlenwert-Variable etwas anders erzeugen als Textvariable. Das folgende Skript erzeugt beispielsweise eine Systemvariable "sysvariable" vom Typ Zahlenwert:

Code: Alles auswählen

string sys_variable = "sysvariable";
string sys_text = "raumtemperatur";
string sys_min = "0";string sys_max = "50";
string sys_dim = "C";string sys_value ="12.1";
string s_uniquename;
object o_SysVars = dom.GetObject (ID_SYSTEM_VARIABLES);
object o_SysVar = dom.GetObject (sys_variable);
if (!o_SysVar)
  {if ((o_SysVars) && (dom.CheckName(sys_variable, &s_uniquename, ID_SYSTEM_VARIABLES)))
     {o_SysVar = dom.CreateObject (OT_VARDP);
      o_SysVar.Name (sys_variable);
      o_SysVars.Add (o_SysVar.ID());
      o_SysVar.DPInfo (sys_text);
      o_SysVar.ValueType (ivtFloat);
      o_SysVar.ValueSubType (istGeneric);
      o_SysVar.ValueMin(sys_min);
      o_SysVar.ValueMax(sys_max);
      o_SysVar.ValueUnit(sys_dim);
      o_SysVar.State(sys_value);
      o_SysVar.Internal(false);
      o_SysVar.Visible(true);
     }
   }else{o_SysVar.DPInfo (sys_text);
         o_SysVar.State(sys_value);
         WriteLine("SysVar geändert.");}
Wenn ich nun diesen gesamten Code per http-Befehl übertragen und auf der CCU auslösen will, dann funktioniert das leider nicht.

Der http-Befehl ist bekannterweise :

Code: Alles auswählen

http://<CCU-IP>:8181/blabla.exe?.... plus Textstring des gesamten obigen HM-Skriptes....
Hat jemand eine Idee, was ich falsch mache ?? ... oder einen anderen Lösungsansatz?
Viele Gruesse
Eugen
________________________________________________
SmartHome-Eintopf mit feinem Homeduino-Gemüse
... und für Feinschmecker gibt´s den WIFFI, den WEATHERMAN-2, den PULSECOUNTER und den AIRSNIFFER
mit vielen Kochrezepten für den ambitionierten Homematiker

Antworten

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