Einrichtung, Anschluss und Programmierung der HomeMatic CCU
Moderator: Co-Administratoren
-
ARuff
- Beiträge: 13
- Registriert: 14.02.2016, 21:28
- Wohnort: Varel
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
<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> <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> <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
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
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
-
-
-
Gärtner
- Beiträge: 11
- Registriert: 08.05.2010, 12:39
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
und Starte anschließend das Skript mit
. und poste die Antwort. Viel Glück Guido
-
Gärtner
- Beiträge: 11
- Registriert: 08.05.2010, 12:39
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
Beitrag
von ARuff » 16.12.2017, 23:07
Danke versuche ich morgen
-
ARuff
- Beiträge: 13
- Registriert: 14.02.2016, 21:28
- Wohnort: Varel
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
-
-
Gärtner
- Beiträge: 11
- Registriert: 08.05.2010, 12:39
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
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.....
Gruß Andreas
-
Gärtner
- Beiträge: 11
- Registriert: 08.05.2010, 12:39
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