GLOBAL_BUTTON_LOCK bei einem Wandthermostaten setzen

HMIP Sender und Empfänger der Serie Homematic IP

Moderator: Co-Administratoren

Benutzeravatar
Baxxy
Beiträge: 10965
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 622 Mal
Danksagung erhalten: 2259 Mal

Re: GLOBAL_BUTTON_LOCK bei einem Wandthermostaten setzen

Beitrag von Baxxy » 06.05.2024, 17:18

Das Problem hierbei ist, das putParamset explizit auf EINEN Parameter zielt.
getParamset hingegen liefert ein Array aus allen Parametern. Will man nur das Resultat EINES Parameters muss man entsprechend filtern.

Über JSON-RPC könnte man direkt EINEN Parameter abfragen, aber da gibt wieder andere "Fallstricke" mit Login/Logout.

mademyday
Beiträge: 276
Registriert: 03.10.2014, 12:46
System: CCU
Wohnort: Enzkreis
Hat sich bedankt: 3 Mal
Danksagung erhalten: 43 Mal

Re: Syntax?

Beitrag von mademyday » 07.05.2024, 08:19

Werner74579 hat geschrieben:
06.05.2024, 16:43
aber das ist doch keine Syntax eines homematic IP-Programms ... oder?
na ja, mittels system.Exec() kannste "alles" in ein Homatic-Skript-Programm packen, so ist es ja auch in dem von dir verlinkten Beispiel:

Code: Alles auswählen

! s. https://homematic-forum.de/forum/viewtopic.php?f=58&t=82087#p803726
! echo 'load tclrpc.so; array set a [xmlrpc http://127.0.0.1:2001/ getParamset [list string LEQ0598135] [list string MASTER]]; puts $a(GLOBAL_BUTTON_LOCK)' | tclsh

string stdout;
string stderr;

system.Exec( "echo 'load tclrpc.so; array set a [xmlrpc http://127.0.0.1:2001/ getParamset [list string LEQ0598135] [list string MASTER]]; puts $a(GLOBAL_BUTTON_LOCK)' | tclsh", &stdout, &stderr );
WriteLine( "GLOBAL_BUTTON_LOCK: " # stdout );

system.Exec( "echo 'load tclrpc.so; array set a [xmlrpc http://127.0.0.1:2001/ getParamset [list string LEQ0598135] [list string MASTER]]; parray a' | tclsh", &stdout, &stderr );
WriteLine( "gesamter Paramset:\n" # stdout );
--> liefert im "Skript testen"-Fenster:

Code: Alles auswählen

GLOBAL_BUTTON_LOCK: 0

gesamter Paramset:
a(BOOST_AFTER_WINDOW_OPEN)                  = 0
a(BOOST_TIME_PERIOD)                        = 1
a(BURST_RX)                                 = 1
a(BUTTON_LOCK)                              = 0
a(CYCLIC_INFO_MSG)                          = 0
a(CYCLIC_INFO_MSG_DIS)                      = 4
...
Dateianhänge
getParamset.jpg

Werner74579
Beiträge: 77
Registriert: 08.12.2022, 15:44
System: CCU
Hat sich bedankt: 23 Mal

Methode von Black

Beitrag von Werner74579 » 07.05.2024, 13:16

Also ... die Methode von Black viewtopic.php?f=26&t=54289&hilit=regexp ... arName+%23 funktioniert super, was nicht anders zu erwarten war. Die Hieroglyphen habe ich einfach so übernommen.
Es gab für mich aber die Hürde zu überwinden, dass ich bei HmIP-Geräten mit dem Kanal arbeiten muss in dem der gesuchte Wert steht und nicht mit dem Gerät selbst. Bei mir war es GLOBAL_BUTTON_LOCK und das steht im ersten Kanal den ich finde und das ist Channel 0. Das ist ungewöhnlich, die meisten Sachen die mich sonst interessieren stehen im Channel 1. Na - egal, so klappt's jedenfalls und ich bin glücklich und freue mich.
Zuletzt geändert von Werner74579 am 07.05.2024, 19:07, insgesamt 1-mal geändert.

Werner74579
Beiträge: 77
Registriert: 08.12.2022, 15:44
System: CCU
Hat sich bedankt: 23 Mal

Hey mademyday,

Beitrag von Werner74579 » 07.05.2024, 17:16

ich kann hier posting.php?mode=reply&f=58&t=82087#pr803775 gar nicht erkennen, wo man das Gerät angibt dessen Werte man bekommen will.
Nun, ich weiß auch nicht was das für eine Synatax ist, die du da mittels system.Exec() benutzt. Eigentlich ist es für mich kein Problem auch mit einer neuen Synatax was zu schreiben - leider sind die Dokumentationen oft grausig schlecht und man muss mehr raten als programmiern und das mag ich gar nicht.
Zuletzt geändert von Werner74579 am 08.05.2024, 11:02, insgesamt 1-mal geändert.

mademyday
Beiträge: 276
Registriert: 03.10.2014, 12:46
System: CCU
Wohnort: Enzkreis
Hat sich bedankt: 3 Mal
Danksagung erhalten: 43 Mal

Re: Hey mademyday,

Beitrag von mademyday » 08.05.2024, 09:44

Werner74579 hat geschrieben:
07.05.2024, 17:16
... gar nicht erkennen, wo man das Gerät angibt dessen man die Werte bekommen will.
q+d die SN des betroffenen Geräts eintragen, in meinem Bsp ist LEQ0598135 die SN eines HM-TC-IT-WM-W-EU an meiner CCU2
Werner74579 hat geschrieben:
07.05.2024, 17:16
Nun, ich weiß auch nicht was das für eine Synatax ist, die du da mittels system.Exec() benutzt.
"im Prinzip" die gleiche wie in dem von dir verlinkten Bsp: es wird per sh/echo ein TCL-Kommando erzeugt und dieses per Pipe an die tclsh zur Ausführung übergeben

warum ich das eigentlich überhaupt gepostet habe:
ich finde den Weg per tcl-Array und direktem Zugriff darauf per Elementname einfach praktisch - anstatt per regexp und ggf elementspezifischem Suchmuster
- aber es führen ja wie immer viele Wege ...

Antworten

Zurück zu „HomeMatic IP Aktoren und Sensoren“