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.
GLOBAL_BUTTON_LOCK bei einem Wandthermostaten setzen
Moderator: Co-Administratoren
- Baxxy
- Beiträge: 10964
- Registriert: 18.12.2018, 15:45
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 622 Mal
- Danksagung erhalten: 2258 Mal
Re: GLOBAL_BUTTON_LOCK bei einem Wandthermostaten setzen
Grüße... Baxxy
- Raspberry Pi 4 als Homematic-Zentrale - Tipps und Informationen
- Analysescript für genutzte Funk-Adressen, Funkmodul-Hardware und Zentralen Hardware
- NANO CUL 868MHz - Stick zum AskSin Analyzer XS umflashen (Anleitung für ArduinoIDE unter Windows)
- Firmware Updates für IP-Aktoren / Sensoren... Info's, Tipps und Sonstiges
- CCU funkt nicht - CarrierSense (CS) Probleme erkennen und lösen
-
- Beiträge: 276
- Registriert: 03.10.2014, 12:46
- System: CCU
- Wohnort: Enzkreis
- Hat sich bedankt: 3 Mal
- Danksagung erhalten: 43 Mal
Re: Syntax?
na ja, mittels system.Exec() kannste "alles" in ein Homatic-Skript-Programm packen, so ist es ja auch in dem von dir verlinkten Beispiel:Werner74579 hat geschrieben: ↑06.05.2024, 16:43aber das ist doch keine Syntax eines homematic IP-Programms ... oder?
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 );
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
...
-
- Beiträge: 77
- Registriert: 08.12.2022, 15:44
- System: CCU
- Hat sich bedankt: 23 Mal
Methode von Black
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.
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.
-
- Beiträge: 77
- Registriert: 08.12.2022, 15:44
- System: CCU
- Hat sich bedankt: 23 Mal
Hey mademyday,
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.
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.
-
- 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,
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 CCU2Werner74579 hat geschrieben: ↑07.05.2024, 17:16... gar nicht erkennen, wo man das Gerät angibt dessen man die Werte bekommen will.
"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 übergebenWerner74579 hat geschrieben: ↑07.05.2024, 17:16Nun, ich weiß auch nicht was das für eine Synatax ist, die du da mittels system.Exec() benutzt.
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 ...