Inkonsistenzen bei HmIP bzgl. getParamset() vs. getParamsetDescription()

Einrichtung, Nutzung und Hilfe zu RaspberryMatic (OCCU auf Raspberry Pi)

Moderatoren: jmaus, Co-Administratoren

Gerti
Beiträge: 3000
Registriert: 28.01.2016, 18:06
System: CCU
Wohnort: Hürth
Hat sich bedankt: 16 Mal
Danksagung erhalten: 260 Mal

Re: Inkonsistenzen bei HmIP bzgl. getParamset() vs. getParamsetDescription()

Beitrag von Gerti » 13.01.2023, 08:29

Hi,

für mich nutzt Otto Normalnutzer den Accesspoint und kommt damit erst gar nicht in Berührung 😁

NickHM
Beiträge: 3729
Registriert: 23.09.2017, 12:04
Hat sich bedankt: 65 Mal
Danksagung erhalten: 119 Mal

Re: Inkonsistenzen bei HmIP bzgl. getParamset() vs. getParamsetDescription()

Beitrag von NickHM » 13.01.2023, 09:51

jmaus hat geschrieben:
12.01.2023, 20:49
Wer also interesse hat kann diesen (oder gerne einen abgewandelten ReGa oder tclsh skript) einmal auf seine Umgebung loslassen um einmal zu schauen ob sein HmIP-Gerätepark ähnliche Dinge aufweist oder nicht.
Hallo

eine mögliche Antwort auf meine Frage könnte natürlich sein ... "Wenn Du das nicht mal weisst, dann lass es lieber" ;-)

Wie / Wo führe ich das Script aus?
In der Script Umgebung der CCU Web Ui ? Wohl eher nicht.
Auf der Kommandozeile? Auch nicht, denn es ist ja mehr als eine Zeile :)

Muss ich das in eine Textdatei mit einer bestimmten Endung speichern und dann auf der Kommandozeile der (originalen) CCU3 starten?

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

Re: Inkonsistenzen bei HmIP bzgl. getParamset() vs. getParamsetDescription()

Beitrag von Baxxy » 13.01.2023, 09:53

jmaus hat geschrieben:
13.01.2023, 08:09
für eine der nächsten Versionen wohl mal einen solchen Prüfskript direkt im System umsetzen das ggf. 1x die Woche (oder nach einem Neustart)
Bitte an die "Abschalt-Option" mittels Kontroll-Datei "no_Xxx_Check" denken.
Danke. :)

Benutzeravatar
jmaus
Beiträge: 9819
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 459 Mal
Danksagung erhalten: 1856 Mal
Kontaktdaten:

Re: Inkonsistenzen bei HmIP bzgl. getParamset() vs. getParamsetDescription()

Beitrag von jmaus » 13.01.2023, 13:07

Nur als kurze Nachinfo: Hab den Skript der vormals ein Python-Skript war nun mal als tclsh Skript umgebaut damit man diesen auch direkt auf der jeweiligen Zentrale ausführen kann und das selbe Ergebnis erhalten sollte. Das sollte es vor allem Nutzern erleichtern die keine Python-Umgebung auf einem anderen System haben. Also einfach das Skript z.B. als /tmp/check.tcl auf der jeweiligen CCU Zentrale abspeichern und dann via "chmod a+rx /tmp/check.tcl" ausführbare Rechte vergeben und dann via "/tmp/check.tcl" starten. Dann sollte der Skript die gleiche Ausgabe wie der vormalige Python Skript verursachen wenn es Inkonsistenzen zwischen getParamset() und getParamsetDescription() feststellt.
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

Benutzeravatar
Henke
Beiträge: 1500
Registriert: 27.06.2022, 20:51
System: CCU
Hat sich bedankt: 133 Mal
Danksagung erhalten: 304 Mal

Re: Inkonsistenzen bei HmIP bzgl. getParamset() vs. getParamsetDescription()

Beitrag von Henke » 13.01.2023, 17:40

tcl Script durchgelaufen, aber nichts gefunden.
Ich war extrem überrascht wie schnell das tcl Script ist im Gegensatz zu direkten Aufrufen von getParamset()/getParamsetDescription() im HM-Script ist.

Benutzeravatar
jmaus
Beiträge: 9819
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 459 Mal
Danksagung erhalten: 1856 Mal
Kontaktdaten:

Re: Inkonsistenzen bei HmIP bzgl. getParamset() vs. getParamsetDescription()

Beitrag von jmaus » 13.01.2023, 18:57

Henke hat geschrieben:
13.01.2023, 17:40
Ich war extrem überrascht wie schnell das tcl Script ist im Gegensatz zu direkten Aufrufen von getParamset()/getParamsetDescription() im HM-Script ist.
Ja? Ist das so? jeder einzelne getParamset()/getParamsetDescription() Aufruf sollte nicht wesentlich langsamer sein, aber wenn du natürlich genauso wie das tcl skript via for() schleife drüberiterierst kann das schon mit ReGa-Skript in die Knie gehen. ReGa-Skripting ist eben sehr murky und ich versuche das zu vermeiden wo ich nur kann :)
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

Benutzeravatar
Henke
Beiträge: 1500
Registriert: 27.06.2022, 20:51
System: CCU
Hat sich bedankt: 133 Mal
Danksagung erhalten: 304 Mal

Re: Inkonsistenzen bei HmIP bzgl. getParamset() vs. getParamsetDescription()

Beitrag von Henke » 13.01.2023, 19:29

jmaus hat geschrieben:
13.01.2023, 18:57
drüberiterierst
Der war gut :lol:

Code: Alles auswählen

string sPD = xmlrpc.GetParamsetDescription(oInterface, sDevSerial, "MASTER");
Läuft z.B. bei einem eTRV Kanal 1 manchmal mit "CCU Laufzeit 12,671 sec" durch, meistens wird er einfach gekillt.

Iterieren... wie denn? :lol:

Code: Alles auswählen

string stdErr=""; string stdOut="";
string sTCL= ^append p \" \" [xmlrpc ^ # oInterface.InterfaceUrl() # ^/ getParamsetDescription [list string \"^#sDevSerial#^\"] [list string \"MASTER\"]];^;
sTCL= sTCL # "puts \$p;";
system.Exec ("/bin/sh -c 'echo \"load tclrpc.so; " # sTCL # "\" |tclsh'",&stdOut,&stdErr);
if (!stdErr) {
WriteLine(stdOut);
}                       
Dagegen ist in 0,235 sec durch.

MichaelN
Beiträge: 9562
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 696 Mal
Danksagung erhalten: 1608 Mal

Re: Inkonsistenzen bei HmIP bzgl. getParamset() vs. getParamsetDescription()

Beitrag von MichaelN » 13.01.2023, 20:20

ALso bei mir macht das tcl Skript gar nichts.
Ich habe extra nach

Code: Alles auswählen

load tclrpc.so
ein

Code: Alles auswählen

puts "START"
eingefügt, um zu kontrollieren ob es überhaupt anläuft. Die Ausgabe "START" kommt nach einigen Sekunden (!), dann passiert aber nichts mehr.
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

Benutzeravatar
Henke
Beiträge: 1500
Registriert: 27.06.2022, 20:51
System: CCU
Hat sich bedankt: 133 Mal
Danksagung erhalten: 304 Mal

Re: Inkonsistenzen bei HmIP bzgl. getParamset() vs. getParamsetDescription()

Beitrag von Henke » 13.01.2023, 20:40

:lol: :lol: :lol:

Code: Alles auswählen

#!/bin/tclsh
load tclrpc.so

puts "Start"
set url "http://127.0.0.1:2010/"

set devicesFound [catch {set devices [xmlrpc $url listDevices]}]
if {$devicesFound == 0} {
  # iterate over all devices returned by listDevices
  foreach _device $devices {
    array set device $_device
    set address $device(ADDRESS)
    set paramsets $device(PARAMSETS)
    if {[string first MASTER $paramsets] != -1 } {
puts $device(ADDRESS)
      array unset paramsetDesc
      set paramsetDescFound [catch {array set paramsetDesc [xmlrpc $url getParamsetDescription [list string $address] [list string "MASTER"]]}]
      if {$paramsetDescFound == 0 && [array size paramsetDesc] > 0} {
        array unset paramset
        set paramsetFound [catch {array set paramset [xmlrpc $url getParamset [list string $address] [list string "MASTER"]]}]
        if {$paramsetFound == 0} {
          # iterate over all paramsetDesc
          foreach desc [array names paramsetDesc] {
            # and search in paramset if it is present
            if {[info exists paramset($desc)] == 0} {
                puts "$address|$device(PARENT_TYPE) = $desc"
            }
          }
        }
      }
    }
  }
} else {
  puts "ERROR: no devices found"
}
ging mir auch so und es war exakt auch "puts "Start""
zusätzlich noch "puts $device(ADDRESS)" und dann sieht man, es läuft.

MichaelN
Beiträge: 9562
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 696 Mal
Danksagung erhalten: 1608 Mal

Re: Inkonsistenzen bei HmIP bzgl. getParamset() vs. getParamsetDescription()

Beitrag von MichaelN » 13.01.2023, 20:51

oookkkkeyyyy. Ich habe nun ans Ende noch ein

Code: Alles auswählen

puts "ENDE"
angefügt. Ich mag es einfach wenn der Computer mit mir spricht.
Also dann ist meine Installation wohl auch sauber.
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

Antworten

Zurück zu „RaspberryMatic“