Homematic und CMI verbinden

Unsere Heizung wird von einer UVR1611 (Universalregelung) von Technische Alternative gesteuert bzw. hängt über ein C.M.I. (Control and Monitoring Interface) im Netzwerk. Mit Hilfe eines Scriptes können die Sensorwerte der Heizungssteuerung in Homematic übernommen & weiterverarbeitet werden: Als erstes muss eine Seite im Online-Schema der Steuerung erstellt werden, welche die zu übernehmenden Werte beinhaltet: Wichtig hierbei … „Homematic und CMI verbinden“ weiterlesen

Unsere Heizung wird von einer UVR1611 (Universalregelung) von Technische Alternative gesteuert bzw. hängt über ein C.M.I. (Control and Monitoring Interface) im Netzwerk. Mit Hilfe eines Scriptes können die Sensorwerte der Heizungssteuerung in Homematic übernommen & weiterverarbeitet werden:

Als erstes muss eine Seite im Online-Schema der Steuerung erstellt werden, welche die zu übernehmenden Werte beinhaltet:

Schema

Wichtig hierbei ist, dass in den Bezeichnungen keine Umlaute und Sonderzeichen vorkommen. Leerzeichen am Besten durch einen _ ersetzen. Bei mir ist das die Seite 3 des Schemas.
Anschließend werden in der Homematic-CCU die betreffenden Variablen als Zahlenwert angelegt, und zwar genau so wie sie im Online-Schema beschriftet sind:

Variable

Nun zum Script, welches die Werte vom Online-Schema abgreift und in die Variablen speichert. Damit das Script funktioniert muss CUXD und CUXD.exec installiert sein:

var url = "http://XXXXX:XXXXX@XX.XX.XX.XXX/schematic_files/3.cgi";
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q  --auth-no-challenge -O - '"#url#"'");
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
string srueck = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
string liste = "Aussentemperatur: \n|Raumtemperatur: \n|Sole-Vorlauf: \n|Solar-VL: \n|Solar-RL: \n|Puffer-VL: \n|Puffer-RL: \n|Strahlungssensor: \n|Aktuelle_Leistung: \n|Waermemenge_kwh: \n|Waermemenge_mwh: \n|Puffer_Oben: \n|Puffer_Oben_Mitte: \n|Puffer_Unten_Mitte: \n|Puffer_Unten: \n|Kollektor_Fassade: \n|Kollektor_Dach: \n|Heizkreis-RL: \n|Heizkreis-VL: \n|Heizkreis-VL-Soll: \n";
    string slist ="";
    string i;
    foreach(i, liste.Split("|"))
    {
    var posValueStart = i;
    var posValueEnd = "°C";
    var posValue = srueck.Find(posValueStart) + posValueStart.Length();
    var stmp = srueck.Substr(posValue, 6).StrValueByIndex(posValueEnd, 0) ;
    if (stmp.Find("- ")== 0 ) { stmp = "-"#stmp.Substr(2, stmp.Length());}
    integer ikomma  = stmp.Find(",");
    string saus1 = stmp.Substr(0, ikomma);
    string saus2 = saus1 + "." + stmp.Substr(ikomma + 1, 5);
    var zaus = saus2.ToFloat();
    var name = i.Substr(0, i.Length()-3);
dom.GetObject(""#name#"").State(zaus);
!slist = slist #name #" = "#zaus #"\n";
    }
!WriteLine(slist);

Hier muss natürlich der Benutzer, das Login-Passwort sowie die IP-Adresse des CMI eingesetzt werden. Weiters muss die richtige *.cgi-Datei angegeben werden, in meinem Fall 3.cgi da es bei mir die 3. Seite war.

Schlussendlich muss das Script noch in ein Timer-Programm eingebaut werden, welches zb. alle 60 Sekunden ausgeführt wird. Von nun an können die Variablen weiterverwendet werden und zb. Aktoren abhängig von Raumtemperatur oder Sonnenstrahlung geschalten werden!

Mein besonderer Dank gilt dem User alchy von homematic-forum.de, der mir dieses Script erstellt hat.

Update 13.12.2016: Ein Fehler im Script hatte dazu geführt, dass negative Werte immer als 0 angezeigt wurden. Das habe ich erst jetzt im Winter bemerkt, alchy war so freundlich und hat mir das Script nochmal überarbeitet, jetzt sollte alles funktionieren! Auch habe ich in der Zwischenzeit ein paar Werte hinzugefügt (Puffer-Temperaturen usw…), die Screenshots oben stimmen deshalb nicht mehr mit dem Script überein!

8 Gedanken zu „Homematic und CMI verbinden“

  1. Hallo Ich habe auch eine Heizungsanlage kombiniert mit Solar die von einer UVR1611 gesteuert wird so CMI und Onlineschema habe mir gerade auch Homematic IP Thermostate und Sensoren zugelegt um eine bessere Einzelraumsteuerung zu gewährleisten.
    Habe deinen Bericht intrisiert gelesen nur bin ich leider nicht daraus schlau geworden was du genau verbunden hast und den Grund ?
    Kannst du das besser erleutern vielleicht.

    1. Hallo,
      Ich lese im Prinzip die verschiedenen Werte der UVR1611 (Temperaturen, Solarstrahlung usw…) mit Homematic aus und speichere diese in Variablen. Mit diesen Variablen kann ich dann eben andere Dinge anstellen, zb. die Raffstores je nach Solarstrahlung herunter- oder herauffahren!

  2. Hallo,
    ich nutze ebenfalls eien UVR1611 und habe mich schon oft darüber geärgert, dass die CCU deren Werte nicht übernehmen kann. Bin in CCU-Dingen leider nicht ganz so fit.- Wo muss ich den das Script einbauen CUXD.exec läuft.

    1. Einfach ein neues Programm erstellen, welches zb. alle 60 Sekunden ausgeführt wird.
      In dieser wird dann im DANN Bereich das Script eingefügt!

  3. Hallo Dax geht das auch umgekehrt dass die UVR oder CMI von der Homematic IP ausleset und im Onlinschema darstellbar ist zb. Temp. oder Raumfeuchte ?

  4. Moin dax,
    wie kann ich im cmi eine solche Seite mit den Werten erstellen? Ich habe vom Heiungsbauer ein programmiertes System erhalten. Ich möchte die Daten der Regler nun für den Export zu Homematic so darstellen, wie du es beschreibst. Geht das so, dass ich das für meine Heizung programmierte CMI einmal auslese und dann eine Seite erstelle? Ich freue mich auf deine Antwort.

Schreibe einen Kommentar zu Dax Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert