Duty_Cycle CCU2 als SysVar

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

BadenPower

Re: Duty_Cycle CCU2 als SysVar

Beitrag von BadenPower » 07.08.2016, 14:22

hanan hat geschrieben:Das mit dem NetFinder war für mich der einfachste Weg.
Hmmm... an das mit der Klebeetikette auf der CCUs habe ich nicht mehr gedacht. Aber es ist so, Leiter holen und raufkraxeln. :P
Oder einfach unter "Skript testen" nachschauen, welchem Interface ein Gerät zugeordnet ist.
.

alchy
Beiträge: 10752
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 672 Mal

Re: Duty_Cycle CCU2 als SysVar

Beitrag von alchy » 07.08.2016, 21:42

die Serial der CCU steht doch auch in der

Code: Alles auswählen

IP.DEINER.EIGENEN.CCU2/var/ids
oder sollte da stehen. :?:

alternativ in

Code: Alles auswählen

IP.DEINER.EIGENEN.CCU2/usr/local/etc/config/ids
Das Miniscript sollte diese ausgeben

Code: Alles auswählen

!CCU Serial auslesen by Alchy
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("cat /var/ids | grep 'SerialNumber='");
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
WriteLine (dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State().StrValueByIndex("=",1));
Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

BadenPower

Re: Duty_Cycle CCU2 als SysVar

Beitrag von BadenPower » 07.08.2016, 22:36

alchy hat geschrieben: alternativ in

Code: Alles auswählen

IP.DEINER.EIGENEN.CCU2/usr/local/etc/config/ids
Das ist aber nicht die Seriennummer, sondern die RF-Adresse:

Code: Alles auswählen

BidCoS-Address = 2687827
alchy hat geschrieben:Das Miniscript sollte diese ausgeben
Oder alternativ mit reinen CCU-Bordmitteln ohne CUxD verwenden zu müssen:

Code: Alles auswählen

string lDeviceNameOrId = "Name_Oder_ID_Der_CCU";  !hier Name oder ID eingeben
string lMetaData = "";
integer lPos = 0;
object lObj1 = dom.GetObject(lDeviceNameOrId);

if(lObj1)
{
  WriteLine("ID: " # lObj1.ID());
  WriteLine("Name: " # lObj1.Name());
  if(lObj1.Type() == OT_DEVICE)
  {
    lMetaData = lObj1.MetaData("DEVDESC");
    lPos = lMetaData.Find("INTERFACE:");
    if(lPos >= 0)
    {
      WriteLine("Interface-Adresse: " # lMetaData.Substr((lPos + 11 ),10));
    }
  }
}
WriteLine("--- Ausgabe Ende ---");

alchy
Beiträge: 10752
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 672 Mal

Re: Duty_Cycle CCU2 als SysVar

Beitrag von alchy » 08.08.2016, 09:52

BadenPower hat geschrieben: Das ist aber nicht die Seriennummer, sondern die RF-Adresse:

Code: Alles auswählen

BidCoS-Address = 2687827
Was / wie in den beiden von mir geposteten Dateien steht, ist abhängig von der Art der Installation der CCU,
soweit ich mich erinnere. Ob von der CCU1 kommend, migriert, usw. Da gab es mal einen Thread....
Meine sind völlig identisch und enthalten jeweils die BidCoS-Address und die SerialNumber der CCU2
aber
Ich wollte auch nur weitere Alternativen aufzeigen die Seriennummer der CCU herauszubekommen.

Für mich ist es eh ein Bug, das bei der CCU die Seriennummer nicht da angezeigt wird, wo sie hingehört,
Denn das was bei der CCU angezeigt wird ist absoluter Quark:
EinstellungCCU2.jpg
Das Interface ist nun mal nicht die Seriennummer. :evil:

Bei jedem anderen Gerät steht da die Seriennummer, und das wäre auch bei der CCU richtig so. :twisted:
Denn dafür gibt es schließlich den Datenpunkt address und interface einzeln.
Dann wäre die Seriennummer auch abfragbar, wie bei jedem anderen Gerät mittels .Address().

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

PC-Oldie
Beiträge: 113
Registriert: 04.01.2015, 13:51
Hat sich bedankt: 1 Mal
Danksagung erhalten: 5 Mal

Re: Duty_Cycle CCU2 als SysVar

Beitrag von PC-Oldie » 23.08.2016, 17:33

Hallo Herbert_Testmann

und vielen Dank für die perfekte Anleitung :D

Ich habe es installiert und es läuft perfekt. Die grafische Auswertung erfolgt in meinem Fall dann in IP-Symcon. Natürlich geht mein Dank auch an Black und Blackhole und alle anderen die zu diesem Script beigetragen haben.

Gruß
Hans

Sicherheitsmann
Beiträge: 8
Registriert: 31.08.2016, 14:34

Re: Duty_Cycle CCU2 als SysVar

Beitrag von Sicherheitsmann » 31.08.2016, 15:02

Hallo allerseits,

die Anleitung ist super, deswegen verzweifle ich umso mehr, dass ich das nicht hinbekomme!
Ich habe eine recht anspruchsvolle Meldekette hinterlegt und würde gerne die DC auslesen, da es in der Tat plötzlich zu durchgehenden Kommunikationsstörungen kommt und ich die DC als Fehlerquelle vermute.

Ich möchte ganz simpel nur die WebUI dafür benutzen und habe eigentlich alles befolgt. Vielleicht übersehe ich irgendwo eine Kleinigkeit, deswegen würde ich mich nach tagelanger Fehlersuche über jede Hilfe freuen. Ich bin wie folgt vorgegangen:

1. Systemvariable DC_CCU, Typ Zahl, 0 - 1000 erstellt
2. dutyccu.tcl in "/usr/local/" mit dem folgenden Code erstellt und die Rechte auf 755 geändert.

Code: Alles auswählen

        #!/bin/tclsh
        #
        # Ermitteln des duty cycle der CCU
        # =================================================
        # Michael Thelen aka Black in Juni 2016
        #
        # Aufruf mit
        # tclsh dutyccu.tcl <SERNR> <SYSVAR> oder
        # Wenn nur eine CCU da ist mit
        # tclsh dutyccu.tcl CCU2 <SYSVAR>
        # =================================================

        load tclrpc.so
        load tclrega.so

        #Beide Übergabeparameter aus CMD holen
        set item1 [lindex $argv 0]
        set item2 [lindex $argv 1]
        # item1 enthält den Suchbegriff
        # item2 enthält den Namen der Systemvariablen
        # Seriennummer ist item2 eingepackt in 2 "*"
        set sernr ""
        append sernr "*" $item1 "*"

        set r [xmlrpc http://127.0.0.1:2001/ listBidcosInterfaces ]
        set dutycycle -1
        set lines [split [string map [list "ADDRESS" "\x00"] $r] "\x00"]
            # und nun durch alle teile mal durch
           foreach line $lines {
              set treffer [string match $sernr $line]
              # Seriennummer wurde gefunden
              if {$treffer==1} {
                  regexp "DUTY_CYCLE (.*?) " $line dummy dutycycle
                 break
                 #dann aber auch break der schleife
              }
        }
        # Es wurde ein Dutycycle gefunden ()
        if {$dutycycle != -1} {
           set rega_cmd ""
           append rega_cmd "dom.GetObject('$item2').State('$dutycycle');"
           rega_script $rega_cmd
                puts "Success - Duty Cycle: $dutycycle"
        }
       
3. Programm erstellt: Wenn "virtuelle Taste 50" kurz betätigt wird, soll das benötigte Skript ausgeführt werden:

Code: Alles auswählen

        dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("tclsh /usr/local/dutyccu.tcl CCU2 DC_CCU");
Nach dem das Programm durchlaufen ist, müsste ich doch jetzt den letzten Wert der DC in der Systemvariable "DC_CCU" im WebUI einsehen können?

Firmware-Version: 2.21.10

alchy
Beiträge: 10752
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 672 Mal

Re: Duty_Cycle CCU2 als SysVar

Beitrag von alchy » 31.08.2016, 15:13

Sicherheitsmann hat geschrieben:

Code: Alles auswählen

        dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("tclsh /usr/local/dutyccu.tcl CCU2 DC_CCU");
Da fehlt statt CCU2 die Seriennummer derselben, so in etwa:

Code: Alles auswählen

dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("tclsh /usr/local/dutyccu.tcl LEQ012345678 DC_CCU");
wobei du natürlich deine eigene Seriennummer eintragen musst.

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

Sicherheitsmann
Beiträge: 8
Registriert: 31.08.2016, 14:34

Re: Duty_Cycle CCU2 als SysVar

Beitrag von Sicherheitsmann » 31.08.2016, 15:39

Danke für die zügige Antwort.
Das hatte ich auch zuerst versucht und natürlich meine Seriennummer eingetragen - ohne Erfolg.

Code: Alles auswählen

dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("tclsh /usr/local/dutyccu.tcl MEXX12345 DC_CCU");
Wollte es nach den Misserfolgen auch damit probieren:
...
hast du nur eine CCU2 und keine Lan gateways im Einsatz, reicht auch der Aufruf mit denm namen CCU2 als seriennummer dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("tclsh /usr/local/dutyccu.tcl CCU2 DC_CCU");

greetz Black
Ich nehme also an, dass mein Vorgehen eigentlich richtig war/ist. Ich kann mir umso weniger erklären, wo es nun hängt....

Benutzeravatar
Black
Beiträge: 5463
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 418 Mal
Danksagung erhalten: 1069 Mal
Kontaktdaten:

Re: Duty_Cycle CCU2 als SysVar

Beitrag von Black » 31.08.2016, 18:57

tuts das bzw macht das was, wenn du unter ssh reingehst und das direkt aufrufst?

tclsh /usr/local/dutyccu.tcl CCU2 DC_CCU

du müsstest da auchne ausgabe sehen können dann
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

alchy
Beiträge: 10752
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 672 Mal

Re: Duty_Cycle CCU2 als SysVar

Beitrag von alchy » 31.08.2016, 22:41

Sicherheitsmann hat geschrieben: Ich nehme also an, dass mein Vorgehen eigentlich richtig war/ist. Ich kann mir umso weniger erklären, wo es nun hängt....
Na dann poste doch mal das Fehler LOG / FullSyslog vom Zeitpunkt des Tastendrucks.

Code: Alles auswählen

http://IP.DEINER.EIGENEN.CCU/addons/cuxd/index.ccc?m=3
Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“