Mit GETCCUSYSVAR CUxD Kanäle auslesen

Programmierung der HomeMatic CCU mittels contronics homeputer CL

Moderator: Co-Administratoren

Antworten
Tobias78
Beiträge: 1464
Registriert: 27.06.2010, 01:01
Wohnort: Braunschweig
Hat sich bedankt: 4 Mal

Mit GETCCUSYSVAR CUxD Kanäle auslesen

Beitrag von Tobias78 » 22.06.2013, 13:45

Hallo Homeputer-Nutzer,
nutzt noch jemand außer mir das CUxD-Ping Device UND Homeputer?
Bis zur CUxD Version 0.58 konnte ich über den GETCCUSYSVAR Befehl die volle Info zum Status eines angepingten Gerätes abfragen, seit der V0.58 können mehrere PING Devices (also mehr als 16 Kanäle) erfasst werden, ich bekomme allerdings für neue PING Geräte mit GETCCUSYSVAR nur noch die IP Adresse des jeweiligen Gerätes zurück, nicht aber das Ergebnis des eigentlichen Pings. Im WebUI wird alles richtig angezeigt. Das Pingen funktioniert und auch die Parameter werden richtig belegt.
Mein verzweifelter Aufruf direkt in der CUxD Kategorie blieb leider ungehört...

Ich habe nun für jeden Kanal eine Systemvariable angelegt, welche ich widerum mit jeweils einem WEBUI Programm ändere. Durch die zusätzlichen 16 Systemvariablen und Programme wird meine CCU1 allerdings noch langsamer. :-(

Mit GETCCUSYSVAR ist es offensichtlich möglich den Status eines Gerätes und Kanals auszulesen, nicht aber einzelne Parameter eines Kanals?

Also
Funktioniert:
GETCCUSYSVAR("Gerät",Variable,"localhost")
GETCCUSYSVAR("Kanal",Variable,"localhost")


Funktioniert nicht:
GETCCUSYSVAR("Kanal.Parameter",Variable,"localhost")
GETCCUSYSVAR("Kanal:Parameter",Variable,"localhost")
GETCCUSYSVAR("Kanal Parameter",Variable,"localhost")

(Ergebnis ist immer nul)

Der Parameter den ich auslesen möchte ist der "ALIVE" Parameter, welcher true und false annehmen kann.

Hat jemand eine Idee?

Gruß, Tobias.
--------------------------------------------
Im Einsatz und empfehlenswert:
RaspberryMatic,IO.Broker, Homeputer Studio; CuXD; PocketControl, HomeStatus, Robonect, Alexa, io.Broker
------------------------------------------

Tobias78
Beiträge: 1464
Registriert: 27.06.2010, 01:01
Wohnort: Braunschweig
Hat sich bedankt: 4 Mal

Re: Mit GETCCUSYSVAR CUxD Kanäle auslesen

Beitrag von Tobias78 » 16.06.2016, 21:59

Durch Zufall habe ich eine Lösung auf mein nun 3 Jahre alten Problem gefunden.
Nochmal zur Wiederholung: Ich wollte in Homeputer das CUXD Ping Gerät abfragen. Seit der Version 1.6 funktioniert nur noch das neue Ping "Gerät", damit funktionierten meine alten Makros allerdings nicht mehr.
Die Lösung kann so einfach sein...
Mit dem Befehl:

Code: Alles auswählen

http://192.168.0.3/config/xmlapi/statelist.cgi
bekommt man:
...<channel name="[b]CUxD_iPhoneTobi[/b]" ise_id="28314" visible="true" operate="true"><datapoint name="CUxD.CUX2803001:6.INFO" type="INFO" ise_id="28315" value="192.168.0.31" valuetype="20" valueunit="" timestamp="1466105509" operations="5"/><datapoint name="CUxD.CUX2803001:6.IP" type="IP" ise_id="28317" value="192.168.0.31" valuetype="20" valueunit="" timestamp="1466105509" operations="5"/><datapoint name="CUxD.CUX2803001:6.UNREACH_CTR" type="UNREACH_CTR" ise_id="28319" value="2" valuetype="16" valueunit="" timestamp="1466105509" operations="5"/><datapoint name="CUxD.CUX2803001:6.STATE" type="STATE" ise_id="28318" value="false" valuetype="2" valueunit="" timestamp="1466105433" operations="5"/></channel>...

Für Homeputer braucht man nun nur nach dem Gerät zu suchen, in diesem Fall "CUxD_iPhoneTobi" und dann die Textstelle: "ise_id="28318" value="false"".
Mit dieser ise_id kann dann direkt in Homeputer der Status vom Gerät "CUxD_iPhoneTobi" ausgelesen werden, also z.B. so:

Code: Alles auswählen

GetCCUSysVar("28318",Text1,"127.0.0.1")
In der Textvariablen Text1 steht anschließend "true" oder "false".

Statt Textvariable kann auch direkt eine Variable vom Typ EAGerät genutzt werden, dann wird "true" direkt in "an" übersetzt usw.

Gruß, Tobias.
--------------------------------------------
Im Einsatz und empfehlenswert:
RaspberryMatic,IO.Broker, Homeputer Studio; CuXD; PocketControl, HomeStatus, Robonect, Alexa, io.Broker
------------------------------------------

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

Re: Mit GETCCUSYSVAR CUxD Kanäle auslesen

Beitrag von Familienvater » 16.06.2016, 23:50

Hi,

dazu musst Du aber in HPCL "pollen", und das finde ich extrem unschön...

Nicht nur theoretisch, sondern auch praktisch geht es einfacher? andersherum:
In der WebUI könnte man man auch den Webserver von HPCL ansprechen und darüber nur im Eventfall ein Objekt in HPCL schalten. Ich traue nämlich getsite bei Dauerbelastung nicht über den Weg.
Details evtl. hier http://homematic-forum.de/forum/viewtop ... 30&t=10557 oder am besten direkt das PDF mit allen Erklärungen http://homematic-forum.de/forum/viewtop ... pdf#p68380

Der Familienvater

Tobias78
Beiträge: 1464
Registriert: 27.06.2010, 01:01
Wohnort: Braunschweig
Hat sich bedankt: 4 Mal

Re: Mit GETCCUSYSVAR CUxD Kanäle auslesen

Beitrag von Tobias78 » 17.06.2016, 21:37

Hallo Familienvater,
sehr guter Hinweis. Ich würde statt "pull" gern den neuen Status "pushen". Ich gehe davon aus, dass hierfür die Zeilen innhalb des PING Gerätes prädestiniert sind.
Leider schaffe ich nicht den richtigen Befehl bzw. die richtige Syntax zu finden.

Was im Browser geht ist z.B.

Code: Alles auswählen

http://192.168.0.3/addons/cl-control/CLWebI.ccc?SETVARBYNAME&PING_LAPTOP=0&XXXX&
Ebenso funktioniert unter Programm testen:

Code: Alles auswählen

dom.GetObject("CUxD.CUX2801002:1.CMD_SETS").State("wget -q -O /dev/null 'http://192.168.0.3/config/xmlapi/statechange.cgi?ise_id=3486&new_value=0'");
dom.GetObject("CUxD.CUX2801002:1.CMD_RUNS").State(1);
Wenn ich jetzt aber versuche dies im Ping Gerät einzutragen, steht beim nächsten aufruf dort immer nur:

Code: Alles auswählen

dom.GetObject("
Wie machst Du dies oder hat jemand anderes eine Lösung?

Gruß, Tobias.
Zuletzt geändert von Tobias78 am 04.02.2020, 18:00, insgesamt 1-mal geändert.
--------------------------------------------
Im Einsatz und empfehlenswert:
RaspberryMatic,IO.Broker, Homeputer Studio; CuXD; PocketControl, HomeStatus, Robonect, Alexa, io.Broker
------------------------------------------

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

Re: Mit GETCCUSYSVAR CUxD Kanäle auslesen

Beitrag von Familienvater » 18.06.2016, 09:57

Hi,

ich habe mich noch nie mit dem PING-Device von cuxd beschäftigt, aber ich denke, das Device pingt eben Geräte an, und setzt dann den Status des cuxd-Devices entsprechend. Um den geänderten Status dann an HPCL zu pushen braucht es wohl ein kleines WebUI Programm, welches auf das Ping-Device bei Änderung triggert, und dann entweder per HM-Script "dynamisch" zusammengebauten wget-Zeile per cuxd-Exec ausführt, oder die wget-Statements "hart" auf zwei verschiedenen cuxd-Exec eingetragen sind, und diese dann einfach ausgelöst werden.

Die cuxd-Anleitung soll aber sehr gut, alternativ mal nach Hilfe von Uwe im cuxd-Unterforum fragen.

Der Familienvater

Pietro
Beiträge: 246
Registriert: 17.07.2006, 00:37
Wohnort: Austria

Re: Mit GETCCUSYSVAR CUxD Kanäle auslesen

Beitrag von Pietro » 28.06.2016, 10:38

Hallo !


vielen, vielen Dank an den Familienvater für diese extrem nützlichen Hinweise !

Ich versuche seit Tagen meine Wärmepumpe via XML auszulesen und hatte mit extremen Instabilitäten meiner ccu zu kämpfen.

Variante 1: mit Getsite die XML-Daten holen und den Text innerhalb homeputer zurecht schnippseln -> sehr häufige Abstürze
Variante 2: mit cuxd die XML-Daten holen in einer Variable auf der CCU schreiben und mit getvarccu wieder abholen -> tägliche Abstürze (getvarccu dürfte letztendlich ein spezielles getsite sein)
Variante 3: mit cuxd XML-Daten holen und im selben Script mittels homeputer-Webserver direkt in die Variablen von homeputer schreiben -> bis dato absturzfrei !

Vielen Dank, ohne Deinen Hinweis wäre ich auf die Absturzursache vermutlich nie gekommen !

lg Pietro
--------------------------------------------
535 Kanäle in 130 Geräten
--------------------------------------------

Pietro
Beiträge: 246
Registriert: 17.07.2006, 00:37
Wohnort: Austria

Re: Mit GETCCUSYSVAR CUxD Kanäle auslesen

Beitrag von Pietro » 06.07.2016, 21:20

Hallo nochmals (im speziellen an den Familienvater und Tobis78) !

möglicherweise habe ich contronics/homeputer etwas unrecht gegeben - denn nach all meine Änderungen wurden zwar die Abstürze seltener (ich habe aber nichts an der Abfragehäufigkeit der Variablen geändert), aber ca. alle 2 Tage gab es immer noch einen "Reset" der Exec-Engine. Die CCU selbst lief stabil durch.

Ich habe nun detailliert die Logfiles analysiert und dabei herausgefunden, dass einige Sekunden vor dem plötzlichen Restart der Exec-Engine es zu "Lesefehlern" im CCU-Log kommt.

Die sah dann meist so aus:

Code: Alles auswählen

Jul  3 16:56:31 homematic-ccu2 user.warn rfd: XmlRpc transport failed (first try), retrying...
Jul  3 16:56:41 homematic-ccu2 user.err hs485d: XmlRpcClient error calling event({[methodName:"event",params:{"BidCos-Wired_java","XXX0122797:15","FREQUENCY",7174.000000}],[methodName:"event",params:{"BidCos-Wired_java","XXX0122797:15","FREQUENCY",6374.000000}],[methodName:"
Jul  3 16:56:41 homematic-ccu2 user.err hs485d: XmlRpc transport error
Jul  3 16:56:41 homematic-ccu2 user.err rfd: XmlRpcClient error calling event({[methodName:"event",params:{"BidCos-RF_java","XXX0039369:1","TEMPERATURE",24.400000}]}) on http://127.0.0.1:9292/bidcos:
Jul  3 16:56:41 homematic-ccu2 user.err rfd: XmlRpc transport error
Die Geräte bei denen dies Auftrat waren meist unterschiedlich, Fakt ist aber, dass es danach eigentlich immer zu einem Restart der Exec-Engine gekommen ist.
Durch meine beschriebenen Maßnahmen wurde das obige Fehlerverhalten zwar seltener, aber weg waren sie dennoch nicht.
Die CCU selbst lief übrigens immer durch.

So, vor lauter Verzweiflung habe ich nun die 2.17.16 drauf gespielt (hatte zuvor die 2.19.9 oben) und seit dem läuft das System (auf Holz klopf) wieder super stabil !! (ok, ist noch etwas früh dies festzustellen, aber zumindest hab ich gerade einen neuen Rekord).

Also irgend etwas hats da mit der 2.19.9er ganz tief drinnen...

lg Pietro
--------------------------------------------
535 Kanäle in 130 Geräten
--------------------------------------------

Antworten

Zurück zu „homeputer CL“