Aquarium Profilux 3

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Antworten
ARuff
Beiträge: 13
Registriert: 14.02.2016, 21:28
Wohnort: Varel

Aquarium Profilux 3

Beitrag von ARuff » 14.03.2017, 12:44

Hallo....
bin vor einiger Zeit auf den Beitrag über Fronius PV Anlage auslesen gestoßen.
Echt super danke dafür....
jetzt konnte man doch auch den Profilux 3, der einen Webserver besitzt auch aus lesen oder

Code: Alles auswählen

view-source:http://192.168.2.XX/sensors.html

Code: Alles auswählen

<tr class="sensorrow">
<td class="name">pH-Wert 1<span id="sensdesc000" class="sensdesc">(Ph Wert)</span>:</td>
<td id="sensorid000" class="sensvalues"><span id="sensval000" class="actual">   6.84pH</span>&nbsp;<span id="sensact000" class="activity">+ </span>
</td>

<tr class="sensorrow">
<td class="name">Temperatur 1<span id="sensdesc001" class="sensdesc">(Temperatur C)</span>:</td>
<td id="sensorid001" class="sensvalues"><span id="sensval001" class="actual">    26.4C</span>&nbsp;<span id="sensact001" class="activity">#~</span>
</td>
und könnte so den PH Wert und die Temp herausziehen und Systemvariable erstellen.
doch leider reicht mein Wissen nicht aus um ein Skript zu schreiben.
kann einer von euch mir helfen ???????
Danke
Zuletzt geändert von alchy am 20.12.2017, 15:41, insgesamt 2-mal geändert.
Grund: Code in Codetags posten - das ist der Button neben dem quote & Verschoben aus Homematic IP Aktoren und Sensoren

Gärtner
Beiträge: 11
Registriert: 08.05.2010, 12:39

Re: Aquarium Profilux 3

Beitrag von Gärtner » 15.12.2017, 22:28

Hallo ARuff, der Beitrag ist zwar schon etwas älter aber ich Antworte trotsdem mal. Ich habe seit einigen Jahren ein tcl Skript zum Abfragen des Profilux im Einsatz. Das kann sicherlich noch jemand besser schreiben aber es funktioniert sehr gut.

Code: Alles auswählen

#!/bin/tclsh

        load tclrega.so

        #
        # Read Profilux data
        #
        set url http://192.168.xxx.xxx/sensors.html
        exec /usr/bin/wget -q -O /usr/local/addons/Profilux/Sensors.xml $url

	set f [open "/usr/local/addons/Profilux/Sensors.xml"]
        set input [read $f]
        close $f
        
	regexp "</td>.......................................*?(.*?)</td>" $input dummy  niveau   ;

	regexp "</td>.*?</td>.*?</td>.*?</td>.......................................*?(.*?)..</td>" $input dummy  niveau2	

	regexp "</span>.*?</span>.*?</span>.*?</span>.*?</span>........................................................................................*?(.*?)</span>" $input dummy  ph   ;
	
	regexp "</span>.*?</span>.*?</span>.*?</span>.*?</span>.*?</span>.*?</span>.*?</span>........................................................................................*?(.*?)</span>" $input dummy  temp  ;

	regexp "</span>.*?</span>.*?</span>.*?</span>.*?</span>.*?</span>.*?</span>.*?</span>.*?</span>.*?</span>.*</span>........................................................................................*?(.*?)</span>" $input dummy  leit  ;	

regexp "</span>.*?</span>.*?</span>.*?</span>.*?</span>.*?</span>.*?</span>.*?</span>.*?</span>.*?</span>.*?</span>.*?</span>.*?</span>.*</span>........................................................................................*?(.*?)</span>" $input dummy  redox  ;	


	set niveau_1   "$niveau  "
	set niveau_2   "$niveau2  "
	set ph_1   "$ph  "
	set temp_1   "$temp  "
	set leit_1   "$leit  "
	set redox_1   "$redox  "
	
	set ph_1          [string map {"ü" "ü" "ö" "ö" "°" "°"}  $ph_1]
	set temp_1          [string map {"ü" "ü" "ö" "ö" "C" "  "}  $temp_1]
	set leit_1          [string map {"ü" "ü" "ö" "ö" "°" "°"}  $leit_1]
	set redox_1          [string map {"ü" "ü" "ö" "ö" "°" "°"}  $redox_1]
	set niveau_2          [string map {"!" "false" "+" "true" "°" "°"}  $niveau_2]


puts $ph_1	
puts $temp_1	
puts $leit_1	
puts $redox_1


	#
        # set ReGaHss variables
        #
        set rega_cmd ""
        append rega_cmd "var w4 = dom.GetObject('Niveau');"
	append rega_cmd "var w5 = dom.GetObject('Wasser_keller');"

	append rega_cmd "var w0 = dom.GetObject('PH');"
	append rega_cmd "var w1 = dom.GetObject('Temperatur Aquarium 1');"
	append rega_cmd "var w2 = dom.GetObject('Leitwert');"
	append rega_cmd "var w3 = dom.GetObject('Redox');"

	append rega_cmd "w0.State('$ph_1');"
	append rega_cmd "w1.State('$temp_1');"
	append rega_cmd "w2.State('$leit_1');"
	append rega_cmd "w3.State('$redox_1');"
	append rega_cmd "w4.State('$niveau_1');"
	append rega_cmd "w5.State('$niveau_2');"


	rega_script $rega_cmd

Gespeichert habe ich das Skript unter /usr/local/addons/Profilux/Sensors.tcl. Aufgerufen wird es als Programm Zeitgesteuert unter

Code: Alles auswählen

dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("tclsh /usr/local/addons/Profilux/Sensors.tcl", &stdout, &stderr);

ARuff
Beiträge: 13
Registriert: 14.02.2016, 21:28
Wohnort: Varel

Re: Aquarium Profilux 3

Beitrag von ARuff » 16.12.2017, 18:55

hallo Gärtner,
ich bekomme es nicht ans laufen.....
Habe unter /usr/local/addons/Profilux/Sensors.tcl das Skript erstellt.
Natürlich habe ich die IP geändert.
Systemvariabele esrtellt und den HM-RC-19 Funk-Fernbedienung 19 Tasten CUX2801005 erstellt.

kannst du mir weiter helfen.....
Danke Andreas
Dateianhänge
Unbenannt1.png
Unbenannt2.png

Gärtner
Beiträge: 11
Registriert: 08.05.2010, 12:39

Re: Aquarium Profilux 3

Beitrag von Gärtner » 16.12.2017, 20:42

Hallo Andreas,
wenn du das Skript ausführst wird automatisch eine xml Datei unter /usr/local/addons/Profilux erstellt. Wird die Datei erstellt? Poste bitte den Inhalt. Wenn nicht startet das Skript nicht. Ewt. sind die Rechte falsch. Deine Systemvariablen sehen aus wie Geräte. In meinem Skript heißen die Systemvariablen "Temperatur Aquarium 1" Typ Zahl und "PH" Typ Zeichenkette. Funktioniert CuxD bei dir richtig?
Hast du SSH aktiviert? Wenn ja verbinde dich mit Putty und setze die Rechte auf 777

Code: Alles auswählen

chmod 0777 /usr/local/addons/Profilux/Sensors.tcl
und Starte anschließend das Skript mit

Code: Alles auswählen

/usr/local/addons/Profilux/Sensors.tcl
. und poste die Antwort. Viel Glück Guido

Gärtner
Beiträge: 11
Registriert: 08.05.2010, 12:39

Re: Aquarium Profilux 3

Beitrag von Gärtner » 16.12.2017, 23:01

Hallo Andreas, ich habe noch einmal ein Skript geschrieben das unter Programme auf der CCU läuft. CuxD muß natürlich installiert sein.

Code: Alles auswählen

!view-source:http://192.168.x.xxx/profilux-small.json?_=1513442197393
!Auf Firefox Profilux Webinterface aufrufen auf Reiter "Sensoren" 
!Shift+Strg+i drücken
!Reiter "Netzwerkanalyse" Zeile mit "profilux-small.json?"markieren 
!Rechte Maustaste "Kopieren" - "Adresse Kopieren" hinter dem ? wird nicht  gebraucht

!Skript Daten Profilux 3 auslesen

var url= "http://192.168.x.xxx/profilux-small.json?";
string  svName = "Profilux_PH";
object  svObj  = dom.GetObject(svName);

if (!svObj){   
    object svObjects = dom.GetObject(ID_SYSTEM_VARIABLES);

    svObj = dom.CreateObject(OT_VARDP);

    svObjects.Add(svObj.ID());

    svObj.Name(svName);   
    svObj.ValueType(ivtFloat);
    svObj.ValueSubType(istGeneric);
	
    svObj.DPInfo("Profilux 3");
    svObj.ValueUnit("PH");
    svObj.ValueMin(0);
    svObj.ValueMax(10);
    svObj.State(7);
    svObj.Internal(false);
    svObj.Visible(true);

    dom.RTUpdate(false);
}

WriteLine(svObj.Value().ToString());

string  svName = "Profilux_Leitwert";
object  svObj  = dom.GetObject(svName);

if (!svObj){   
    object svObjects = dom.GetObject(ID_SYSTEM_VARIABLES);

    svObj = dom.CreateObject(OT_VARDP);

    svObjects.Add(svObj.ID());

    svObj.Name(svName);   
    svObj.ValueType(ivtFloat);
    svObj.ValueSubType(istGeneric);
	
    svObj.DPInfo("Profilux");
    svObj.ValueUnit("uS");
    svObj.ValueMin(0);
    svObj.ValueMax(1000);
    svObj.State(15);
    svObj.Internal(false);
    svObj.Visible(true);

    dom.RTUpdate(false);
}

WriteLine(svObj.Value().ToString());

string  svName = "Profilux_Redox";
object  svObj  = dom.GetObject(svName);

if (!svObj){   
    object svObjects = dom.GetObject(ID_SYSTEM_VARIABLES);

    svObj = dom.CreateObject(OT_VARDP);

    svObjects.Add(svObj.ID());

    svObj.Name(svName);   
    svObj.ValueType(ivtFloat);
    svObj.ValueSubType(istGeneric);
	
    svObj.DPInfo("Profilux");
    svObj.ValueUnit("mV");
    svObj.ValueMin(0);
    svObj.ValueMax(1000);
    svObj.State(15);
    svObj.Internal(false);
    svObj.Visible(true);

    dom.RTUpdate(false);
}

WriteLine(svObj.Value().ToString());

string  svName = "Profilux_Temperatur";
object  svObj  = dom.GetObject(svName);

if (!svObj){   
    object svObjects = dom.GetObject(ID_SYSTEM_VARIABLES);

    svObj = dom.CreateObject(OT_VARDP);

    svObjects.Add(svObj.ID());

    svObj.Name(svName);   
    svObj.ValueType(ivtFloat);
    svObj.ValueSubType(istGeneric);
	
    svObj.DPInfo("Profilux");
    svObj.ValueUnit("C°");
    svObj.ValueMin(6);
    svObj.ValueMax(40);
    svObj.State(15);
    svObj.Internal(false);
    svObj.Visible(true);

    dom.RTUpdate(false);
}

WriteLine(svObj.Value().ToString());




!WriteLine(url);
var cmd="LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl --trace-ascii /var/log/curl.trace -s -k -L " # url ;
    dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State(cmd);
    dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
    string v = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
!WriteLine(v);
integer laenge = v.Length();
       integer wort_position = v.Find('"index":"000","format":"2:2:pH"');
        v = v.Substr(wort_position, (laenge - wort_position));
	string v2 = v;
	string v3 = v;
	string v4 = v;
        !WriteLine(v);
integer wort_position = v.Find('"actual":');
        v = v.Substr(wort_position, (laenge - wort_position));
!WriteLine(v);
string word = "city";
        integer word_laenge = word.Length();
        integer word_position = v.Find(word);
        string daten = v.Substr((word_position + word_laenge +7), 7);
        integer word_position = daten.Find(word);
        !daten = daten.Substr(0, (word_position -10));
!WriteLine(daten);

var x = 0.0 + daten;

integer laenge = v2.Length();
       integer wort_position = v2.Find('"index":"001","format":');
        v2 = v2.Substr(wort_position, (laenge - wort_position));
        !WriteLine(v2);
integer wort_position = v2.Find('"actual":');
        v2 = v2.Substr(wort_position, (laenge - wort_position));
!WriteLine(v2);
string word = "city";
        integer word_laenge = word.Length();
        integer word_position = v2.Find(word);
        string daten = v2.Substr((word_position + word_laenge +7), 9);
        integer word_position = daten.Find(word);
        !daten = daten.Substr(0, (word_position -10));
!WriteLine(daten);

var y = 0.0 + daten;

integer laenge = v3.Length();
       integer wort_position = v3.Find('"index":"002","format":');
        v3 = v3.Substr(wort_position, (laenge - wort_position));
        !WriteLine(v3);
integer wort_position = v3.Find('"actual":');
        v3 = v3.Substr(wort_position, (laenge - wort_position));
!WriteLine(v3);
string word = "city";
        integer word_laenge = word.Length();
        integer word_position = v3.Find(word);
        string daten = v3.Substr((word_position + word_laenge +7), 9);
        integer word_position = daten.Find(word);
        !daten = daten.Substr(0, (word_position -10));
!WriteLine(daten);

var z = 0.0 + daten;

integer laenge = v4.Length();
       integer wort_position = v4.Find('"index":"003","format":');
        v4 = v4.Substr(wort_position, (laenge - wort_position));
        !WriteLine(v4);
integer wort_position = v4.Find('"actual":');
        v4 = v4.Substr(wort_position, (laenge - wort_position));
!WriteLine(v4);
string word = "city";
        integer word_laenge = word.Length();
        integer word_position = v4.Find(word);
        string daten = v4.Substr((word_position + word_laenge +7), 9);
        integer word_position = daten.Find(word);
        !daten = daten.Substr(0, (word_position -10));
!WriteLine(daten);

var n = 0.0 + daten;



dom.GetObject("Profilux_PH").State(x);
dom.GetObject("Profilux_Temperatur").State(y); 
dom.GetObject("Profilux_Leitwert").State(z); 
dom.GetObject("Profilux_Redox").State(n); 
!WriteLine(x);
!WriteLine(y);
!WriteLine(z);
!WriteLine(n);
Das Skript erstellt die Systemvariablen selber. Einfach per Zeitsteuerung ausführen. Nur url ändern. Viel Spaß Guido

ARuff
Beiträge: 13
Registriert: 14.02.2016, 21:28
Wohnort: Varel

Re: Aquarium Profilux 3

Beitrag von ARuff » 16.12.2017, 23:07

Danke versuche ich morgen :D

ARuff
Beiträge: 13
Registriert: 14.02.2016, 21:28
Wohnort: Varel

Re: Aquarium Profilux 3

Beitrag von ARuff » 17.12.2017, 14:52

Hallo Guido,
danke danke .... es läuft das mit den Skrips ist Neuland und ich versuche dich dort durchzukämpfen...
aber jetzt läuft es mit den 2. Skript bekomme jetzt alle 60 s. meine Daten...
wenn ich weiter meine Gedanken kreisen lasse könnte man ja auch die anderen Daten raus ziehen.....
werde ich mal versuchen, bei Gelegenheit.
Ich glaube ich bin nicht der Einige der damit was anfangen kann..
Noch mal danke...

Schöne 3 Advent
Andreas
Dateianhänge
Unbenannt 3.png

Gärtner
Beiträge: 11
Registriert: 08.05.2010, 12:39

Re: Aquarium Profilux 3

Beitrag von Gärtner » 17.12.2017, 16:49

Hallo Andreas, es freut mich das, daß Skript bei dir funktioniert. Die anderen Daten kannst du analog auslesen. Die erste Hälte des Skripts wird nur zum prüfen und erstellen der Systemvariablen benötigt. Das kannst du auch wecklassen wenn die Variablen einmal erstellt wurden. Ich würde das Skript nicht alle 60 s laufen lassen. Die Daten ändern sich ja nicht so schnell. Das Skript benötigt ja auch etwas Zeit um die Daten abzuholen. Ich denke alle 5 bis 10 min reicht vollkommen aus. Ich habe noch ein Skript für die Abfrage der Füllstände der Dosierpumpen bei Intresse. Wenn du unter Skript testen auf der Homematic die Ausrufungszeichen einzeln vor "WriteLine" entfernst kannst du gut sehen was das Skript macht und bis wo es funktioniert oder wo Fehler sind.

Code: Alles auswählen

!Skript Daten Profilux 3 Dosierpumpen auslesen


string  svName = "Profilux_Dosierpumpe_1";
object  svObj  = dom.GetObject(svName);

if (!svObj){   
    object svObjects = dom.GetObject(ID_SYSTEM_VARIABLES);

    svObj = dom.CreateObject(OT_VARDP);

    svObjects.Add(svObj.ID());

    svObj.Name(svName);   
    svObj.ValueType(ivtFloat);
    svObj.ValueSubType(istGeneric);
	
    svObj.DPInfo("Profilux 3");
    svObj.ValueUnit("ml");
    svObj.ValueMin(0);
    svObj.ValueMax(5000);
    svObj.State(15);
    svObj.Internal(false);
    svObj.Visible(true);

    dom.RTUpdate(false);
}

!WriteLine(svObj.Value().ToString());

string  svName = "Profilux_Dosierpumpe_2";
object  svObj  = dom.GetObject(svName);

if (!svObj){   
    object svObjects = dom.GetObject(ID_SYSTEM_VARIABLES);

    svObj = dom.CreateObject(OT_VARDP);

    svObjects.Add(svObj.ID());

    svObj.Name(svName);   
    svObj.ValueType(ivtFloat);
    svObj.ValueSubType(istGeneric);
	
    svObj.DPInfo("Variable number for test");
    svObj.ValueUnit("ml");
    svObj.ValueMin(0);
    svObj.ValueMax(5000);
    svObj.State(15);
    svObj.Internal(false);
    svObj.Visible(true);

    dom.RTUpdate(false);
}

!WriteLine(svObj.Value().ToString());
var url= "http://192.168.2.152/dosing.json?";
!WriteLine(url);
var cmd="LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl --trace-ascii /var/log/curl.trace -s -k -L " # url ;
!WriteLine(cmd);
    dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State(cmd);
    dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
    string v = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
!WriteLine(v);
integer laenge = v.Length();
       integer wort_position = v.Find('"index": "000"');
        v = v.Substr(wort_position, (laenge - wort_position));
	string v2 = v;
	string v3 = v;
        !WriteLine(v);
integer wort_position = v.Find("flevel");
        v = v.Substr(wort_position, (laenge - wort_position));
!WriteLine(v);
string word = "city";
        integer word_laenge = word.Length();
        integer word_position = v.Find(word);
        string daten = v.Substr((word_position + word_laenge -64), 5);
        integer word_position = daten.Find(word);
        !daten = daten.Substr(0, (word_position -10));
!WriteLine(daten);
var x = 0 + daten; 
integer wort_position = v2.Find('"index": "001"');
        v2 = v2.Substr(wort_position, (laenge - wort_position));
!WriteLine(v);
integer wort_position = v2.Find("flevel");
        v2 = v2.Substr(wort_position, (laenge - wort_position));
!WriteLine(v2);
string word = "city";
        integer word_laenge = word.Length();
        integer word_position = v.Find(word);
        string daten = v2.Substr((word_position + word_laenge -64), 5);
        integer word_position = daten.Find(word);
        !daten = daten.Substr(0, (word_position -10));
!WriteLine(daten);
var y = 0 + daten;
dom.GetObject("Profilux_Dosierpumpe_1").State(x);
dom.GetObject("Profilux_Dosierpumpe_2").State(y); 
!WriteLine(x);
!WriteLine(y);
Viel Spaß Guido

ARuff
Beiträge: 13
Registriert: 14.02.2016, 21:28
Wohnort: Varel

Re: Aquarium Profilux 3

Beitrag von ARuff » 19.12.2017, 21:27

Danke dir noch mal....
Verstehe langsam das Skript und auch die Parameter die er abfragt. ( 000-032( die ersten sind die Sensoren da dann die Beleuchtung B1 usw Kanäle )). Aber ich habe noch nicht raus gefunden wie die die Schalten S1 usw abfrage kein Index XXX.
Spanendes Thema..... :shock:
Gruß Andreas

Gärtner
Beiträge: 11
Registriert: 08.05.2010, 12:39

Re: Aquarium Profilux 3

Beitrag von Gärtner » 22.12.2017, 23:00

Hallo Andreas, ich habe das Skript zum Abfragen der Schaltkanäle angepasst. Achte aber darauf nicht zuviele Abfragen zu machen. Nicht dass der Profilux noch auf "Störung" geht. Ich kann nicht sagen was er aushält.

Code: Alles auswählen

!view-source:http://192.168.x.xxx/switches-small.json?
!Auf Firefox Profilux Webinterface aufrufen auf Reiter "Switches" 
!Shift+Strg+i drücken
!Reiter "Netzwerkanalyse" Zeile mit "switches-small.json?"markieren 
!Rechte Maustaste "Kopieren" - "Adresse Kopieren" hinter dem ? wird nicht gebraucht

!Skript Daten Profilux 3 auslesen
var url= "http://192.168.x.xxx/switches-small.json?";
string s1 = "Profilux_Switches_Heizung";		! Name für Systemvariable Switches S1 
string s2 = "Profilux_Switches_Ventil_Wasser";		! Name für Systemvariable Switches S2
string s3 = "Profilux_Switches_Osmoseanlage";		! Name für Systemvariable Switches S3
string s4 = "Profilux_Switches_Schütz_Pumpe";		! Name für Systemvariable Switches S4
string s5 = "Profilux_Switches_Filter_Pumpe";		! Name für Systemvariable Switches S5
string s6 = "Profilux_Switches_Wasser_wechseln";	! Name für Systemvariable Switches S6


string  svName = s1; 	
object  svObj  = dom.GetObject(svName);
 
if (!svObj){   
    object svObjects = dom.GetObject(ID_SYSTEM_VARIABLES);
 
    svObj = dom.CreateObject(OT_VARDP);
 
    svObjects.Add(svObj.ID());
 
    svObj.Name(svName);   
    svObj.ValueType(ivtBinary);
    svObj.ValueSubType(istBool);
    svObj.ValueName0("Aus");
    svObj.ValueName1("An");    
    svObj.State(true);
 
    svObj.DPInfo("Profilux");
    svObj.ValueUnit("");
 
    dom.RTUpdate(false);
}
 
!WriteLine(svObj.State().ToString());
!WriteLine(svObj.ValueName());

string  svName = s2; 	
object  svObj  = dom.GetObject(svName);
 
if (!svObj){   
    object svObjects = dom.GetObject(ID_SYSTEM_VARIABLES);
 
    svObj = dom.CreateObject(OT_VARDP);
 
    svObjects.Add(svObj.ID());
 
    svObj.Name(svName);   
    svObj.ValueType(ivtBinary);
    svObj.ValueSubType(istBool);
    svObj.ValueName0("Aus");
    svObj.ValueName1("An");    
    svObj.State(true);
 
    svObj.DPInfo("Profilux");
    svObj.ValueUnit("");
 
    dom.RTUpdate(false);
}
 
!WriteLine(svObj.State().ToString());
!WriteLine(svObj.ValueName());

string  svName = s3; 	
object  svObj  = dom.GetObject(svName);
 
if (!svObj){   
    object svObjects = dom.GetObject(ID_SYSTEM_VARIABLES);
 
    svObj = dom.CreateObject(OT_VARDP);
 
    svObjects.Add(svObj.ID());
 
    svObj.Name(svName);   
    svObj.ValueType(ivtBinary);
    svObj.ValueSubType(istBool);
    svObj.ValueName0("Aus");
    svObj.ValueName1("An");    
    svObj.State(true);
 
    svObj.DPInfo("Profilux");
    svObj.ValueUnit("");
 
    dom.RTUpdate(false);
}
 
!WriteLine(svObj.State().ToString());
!WriteLine(svObj.ValueName());

string  svName = s4; 	
object  svObj  = dom.GetObject(svName);
 
if (!svObj){   
    object svObjects = dom.GetObject(ID_SYSTEM_VARIABLES);
 
    svObj = dom.CreateObject(OT_VARDP);
 
    svObjects.Add(svObj.ID());
 
    svObj.Name(svName);   
    svObj.ValueType(ivtBinary);
    svObj.ValueSubType(istBool);
    svObj.ValueName0("Aus");
    svObj.ValueName1("An");    
    svObj.State(true);
 
    svObj.DPInfo("Profilux");
    svObj.ValueUnit("");
 
    dom.RTUpdate(false);
}
 
!WriteLine(svObj.State().ToString());
!WriteLine(svObj.ValueName());

string  svName = s5; 	
object  svObj  = dom.GetObject(svName);
 
if (!svObj){   
    object svObjects = dom.GetObject(ID_SYSTEM_VARIABLES);
 
    svObj = dom.CreateObject(OT_VARDP);
 
    svObjects.Add(svObj.ID());
 
    svObj.Name(svName);   
    svObj.ValueType(ivtBinary);
    svObj.ValueSubType(istBool);
    svObj.ValueName0("Aus");
    svObj.ValueName1("An");    
    svObj.State(true);
 
    svObj.DPInfo("Profilux");
    svObj.ValueUnit("");
 
    dom.RTUpdate(false);
}
 
!WriteLine(svObj.State().ToString());
!WriteLine(svObj.ValueName());

string  svName = s6; 	
object  svObj  = dom.GetObject(svName);
 
if (!svObj){   
    object svObjects = dom.GetObject(ID_SYSTEM_VARIABLES);
 
    svObj = dom.CreateObject(OT_VARDP);
 
    svObjects.Add(svObj.ID());
 
    svObj.Name(svName);   
    svObj.ValueType(ivtBinary);
    svObj.ValueSubType(istBool);
    svObj.ValueName0("Aus");
    svObj.ValueName1("An");    
    svObj.State(true);
 
    svObj.DPInfo("Profilux");
    svObj.ValueUnit("");
 
    dom.RTUpdate(false);
}
 
!WriteLine(svObj.State().ToString());
!WriteLine(svObj.ValueName());




!WriteLine(url);
var cmd="LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl --trace-ascii /var/log/curl.trace -s -k -L " # url ;
    dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State(cmd);
    dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
    string v = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
!WriteLine(v);
integer laenge = v.Length();
       integer wort_position = v.Find('"000"');
        v = v.Substr(wort_position, (laenge - wort_position));
	string v2 = v;
	string v3 = v;
	string v4 = v;
        !WriteLine(v);

integer wort_position = v.Find('"actual"');
        v = v.Substr(wort_position, (laenge - wort_position));
!WriteLine(v);
string word = "city";
        integer word_laenge = word.Length();
        integer word_position = v.Find(word);
        string daten = v.Substr((word_position + word_laenge +9), 1);
        integer word_position = daten.Find(word);
        !daten = daten.Substr(0, (word_position -10));
!WriteLine(daten);


var x = 0 + daten;

integer laenge = v.Length();
       integer wort_position = v.Find('"001"');
        v = v.Substr(wort_position, (laenge - wort_position));
	string v2 = v;
	string v3 = v;
	string v4 = v;
        !WriteLine(v);

integer wort_position = v.Find('"actual"');
        v = v.Substr(wort_position, (laenge - wort_position));
!WriteLine(v);
string word = "city";
        integer word_laenge = word.Length();
        integer word_position = v.Find(word);
        string daten = v.Substr((word_position + word_laenge +9), 1);
        integer word_position = daten.Find(word);
        !daten = daten.Substr(0, (word_position -10));
!WriteLine(daten);


var y = 0 + daten;

integer laenge = v.Length();
       integer wort_position = v.Find('"002"');
        v = v.Substr(wort_position, (laenge - wort_position));
	

integer wort_position = v.Find('"actual"');
        v = v.Substr(wort_position, (laenge - wort_position));
!WriteLine(v);
string word = "city";
        integer word_laenge = word.Length();
        integer word_position = v.Find(word);
        string daten = v.Substr((word_position + word_laenge +9), 1);
        integer word_position = daten.Find(word);
        !daten = daten.Substr(0, (word_position -10));
!WriteLine(daten);


var z = 0 + daten;

integer laenge = v.Length();
       integer wort_position = v.Find('"003"');
        v = v.Substr(wort_position, (laenge - wort_position));
	string v2 = v;
	string v3 = v;
	string v4 = v;
        !WriteLine(v);

integer wort_position = v.Find('"actual"');
        v = v.Substr(wort_position, (laenge - wort_position));
!WriteLine(v);
string word = "city";
        integer word_laenge = word.Length();
        integer word_position = v.Find(word);
        string daten = v.Substr((word_position + word_laenge +9), 1);
        integer word_position = daten.Find(word);
        !daten = daten.Substr(0, (word_position -10));
!WriteLine(daten);


var n = 0 + daten;

integer laenge = v.Length();
       integer wort_position = v.Find('"004"');
        v = v.Substr(wort_position, (laenge - wort_position));
	string v2 = v;
	string v3 = v;
	string v4 = v;
        !WriteLine(v);

integer wort_position = v.Find('"actual"');
        v = v.Substr(wort_position, (laenge - wort_position));
!WriteLine(v);
string word = "city";
        integer word_laenge = word.Length();
        integer word_position = v.Find(word);
        string daten = v.Substr((word_position + word_laenge +9), 1);
        integer word_position = daten.Find(word);
        !daten = daten.Substr(0, (word_position -10));
!WriteLine(daten);


var m = 0 + daten;

integer laenge = v.Length();
       integer wort_position = v.Find('"006"');
        v = v.Substr(wort_position, (laenge - wort_position));
	string v2 = v;
	string v3 = v;
	string v4 = v;
        !WriteLine(v);

integer wort_position = v.Find('"actual"');
        v = v.Substr(wort_position, (laenge - wort_position));
!WriteLine(v);
string word = "city";
        integer word_laenge = word.Length();
        integer word_position = v.Find(word);
        string daten = v.Substr((word_position + word_laenge +9), 1);
        integer word_position = daten.Find(word);
        !daten = daten.Substr(0, (word_position -10));
!WriteLine(daten);


var o = 0 + daten;



if (x == 0) {dom.GetObject(s1).State(false)};
if (x == 1) {dom.GetObject(s1).State(true)};

if (y == 0) {dom.GetObject(s2).State(false)};
if (y == 1) {dom.GetObject(s2).State(true)};

if (z == 0) {dom.GetObject(s3).State(false)};
if (z == 1) {dom.GetObject(s3).State(true)};

if (n == 0) {dom.GetObject(s4).State(false)};
if (n == 1) {dom.GetObject(s4).State(true)};

if (m == 0) {dom.GetObject(s5).State(false)};
if (m == 1) {dom.GetObject(s5).State(true)};

if (o == 0) {dom.GetObject(s6).State(false)};
if (o == 1) {dom.GetObject(s6).State(true)};




!WriteLine(x);
!WriteLine(y);
!WriteLine(z);
!WriteLine(n);
!WriteLine(m);
!WriteLine(o);
Viel Spaß und fröhliche Weihnachten, Guido

Antworten

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