NEWS
Duty Cycle anzeigen!
-
Hallo Kollegen,
ich würde gerne in VIS eine Anzeige mit Duty-Cycle einbauen.
Ich habe eine schöne Beschreibung gefunden.
https://homematic-forum.de/forum/viewto … 31&t=35097
Hierbei kann man mit hilfe des Scriptes die Wete auslesen lassen.
! DutyCycle CCU mit HM Script und CUxD.exec (c) by Alchy v 0.1 dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("echo 'load tclrpc.so; puts [xmlrpc http://127.0.0.1:2001/ listBidcosInterfaces ]'|tclsh |grep -o 'DUTY_CYCLE.[0-9]*.'"); dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1); if (dom.GetObject(ID_SYSTEM_VARIABLES).Get("Status_DutyCycle")){dom.GetObject(ID_SYSTEM_VARIABLES).Get("Status_DutyCycle").State((dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State().StrValueByIndex(" ",1)).ToFloat());} WriteLine((dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State().StrValueByIndex(" ",1)).ToFloat());
Vorher muß man aber ein Im CUxD unter "Geräte" ein neues "Gerät" vom Typ "(28) System" mit der Funktion "Exec" erzeugen. Dies habe ich auch getan. Beim Script-Test erhalte ich in der CCU ein Wert 15.000000 ???
ich komme nicht ganz in der Beschreibung weiter….
Zitat:
Zum Speichern des Wertes in einer Systemvariablen, einfach jedes Vorkommen im Script von: Status_DutyCycle ersetzen mit dem Namen der Systemvariablen Typ Zahl, welche Ihr vorher angelegt habt.
Ich würde gerne jetzt diese Zahl 15:000000 (sind es 15%) ??? in einer Systtem variable speichern. Wie soll die Variable heißen? Muß sie zwingend jetzt Status_DutyCycle heißen ??? (siehe Script)
1526_unbenannt2.jpg -
Hi,
…oder du machst das ueber das tcl script. Ich mache das schon laenger so - ohne Probleme.
Falls du Interesse hast, die Kurzbeschreibung.
Dieses Script auf der CCU unter addons mit Filename dutyccu.tcl ablegen
! ````
#!/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"
}</sysvar></sysvar></sernr>Dann die CCU- Variable anlegen - hier sind es die DC_LAN1 und DC_LAN2 und DCLAN3 (also CCU und zwei Lan Adapter) und dann ein einfaches CCU script anlegen periodisch alle 2 Minuten einplanen: >! ```` string stdout; string stderr; system.Exec("tclsh /usr/local/addons/dutyccu.tcl KEQ102xxxx DC_LAN1", &stdout, &stderr); >! ```` Das Beispiel zeigt nur die Variable DC_LAN1\. Ich habe dann noch zwei scripte fuer DC_LAN2 und DC_LAN3 ueber system.Exec brauchst du dir eh keine Sorgen mehr zu machen. CUXD brauchst du dafuer nicht. Dann die Variablen in VIS einbauen. Objekt mit sql verbinden. dann gibts eine schöne grafik wie hier:  vG Looxer
-
Ales klar, hab jetzt nur mit dem Script am laufen. Die Variable wird alle 10 min. aktualisiert. Eine Kennlinie kann ich mit Float-Adapter erstellen.
-
Für alle, die nicht so firm im CCU2 Dateisystem sind:
In der CCU2 ist der Zugriff per SSH ja nicht standardmäßig aktiviert. Daher in der Webui / Systemeinstellungen/ Sicherheit das Kästchen SSH anhaken und ein Passwort vergeben.
Dann kann man per putty oder terminal auf die CCU2 zugreifen:
ssh root@IP.DER.CCU.2 ````Man wird nach dem soeben vergebenen Passwort gefragt und befindet sich dann im Dateisystem. Mit```` cd /usr/local/addons/ ````und anschliessend```` ls ````kann man das Verzeichnis schon mal sehen (vermutlich leer) Jetzt am besten ein neues Putty oder Terminalfenster öffnen und mit```` scp quellverzeichnis/dutyccu.tcl root@IP.DER.CCU.2:/usr/local/addons ````die tcl-Datei kopieren (tcl-Datei mit einem Editor mit dem oben gezeigten Code füllen). Passwort-Eingabe wie oben. Fertig. Im ersten Fenster kann man nun mit```` ls ````die Datei sehen. Gruß Pix
-
@pix:Für alle, die nicht so firm im CCU2 Dateisystem sind: `
Ich glaube mich zu rrinnern, dass alchy genau dafür ein reines HM Skript gemacht hatte um den DC auszulesen.Damit brauchte man nicht ins Dateisystem einzugreifen.
Gruß
Rainer
-
und genau dazu habe ich ein Thread oben im ersten Post verlinkt.
-
:evil: Überlesen und zu spät gesehen. Naja, vielleicht braucht trotzdem jemand die Anleitung (wenn er keinen CUXD hat).
Pix
-
@pix::evil: Überlesen und zu spät gesehen. Naja, vielleicht braucht trotzdem jemand die Anleitung (wenn er keinen CUXD hat).
Pix `
oder es ohne CUxD loesen moechte, thanks !
-
Hi,
…oder du machst das ueber das tcl script. Ich mache das schon laenger so - ohne Probleme.
Falls du Interesse hast, die Kurzbeschreibung.
Dieses Script auf der CCU unter addons mit Filename dutyccu.tcl ablegen
! ````
#!/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"
}</sysvar></sysvar></sernr>Dann die CCU- Variable anlegen - hier sind es die DC_LAN1 und DC_LAN2 und DCLAN3 (also CCU und zwei Lan Adapter) und dann ein einfaches CCU script anlegen periodisch alle 2 Minuten einplanen: >! ```` string stdout; string stderr; system.Exec("tclsh /usr/local/addons/dutyccu.tcl KEQ102xxxx DC_LAN1", &stdout, &stderr); >! ```` Das Beispiel zeigt nur die Variable DC_LAN1\. Ich habe dann noch zwei scripte fuer DC_LAN2 und DC_LAN3 ueber system.Exec brauchst du dir eh keine Sorgen mehr zu machen. CUXD brauchst du dafuer nicht. Dann die Variablen in VIS einbauen. Objekt mit sql verbinden. dann gibts eine schöne grafik wie hier: dC.JPG vG Looxer `
Den Duty Cycle möchte ich mir auch gerne auf diese Weise anzeigen lassen. Mir ist nicht klar welches Gerät du mit "KEQ102xxxx" meinst. Hat die CCU2 auch so eine Homematic-Seriennummer?
-
Den Duty Cycle möchte ich mir auch gerne auf diese Weise anzeigen lassen. Mir ist nicht klar welches Gerät du mit "KEQ102xxxx" meinst. Hat die CCU2 auch so eine Homematic-Seriennummer? `
Das ist die Seriennummer deiner CCU2.
Findest du, wenn du in der WebUI ganz rechts oben auf den Button HILFE klickst.
Bei Info erscheint es dann in der Liste SERIENNUMMER :
Das ist genau genommen nicht die CCU Seriennummer, sondern die des Funkmoduls in der CCU…
Grüße
Tom
-
Ich revive das hier gerade mal: Ich hab im CCU2 den Duty-cycle über CuxD und das Wrapper Gerät realisiert. Leider wird mir das Gerät als Datenpunkt im Broker nicht angezeigt. Habe REGA und RPC schon neu gestartet. Oder muss ich noch ein RPC-Adapter für den CuxD anlegen?
-
Welche hm-rega Version hast du? Ich meine, dass mit dem letzten Update (1.6.6) genau diese Funktion eingarbeitet wurde. Dann erschien bei mir, bei den Ordnern, ein Ordner, wo Daten der CCU angezeigt werden, u.a. DutyCycle und Firmware.
Enrico
-
Welche hm-rega Version hast du? Ich meine, dass mit dem letzten Update (1.6.6) genau diese Funktion eingarbeitet wurde. Dann erschien bei mir, bei den Ordnern, ein Ordner, wo Daten der CCU angezeigt werden, u.a. DutyCycle und Firmware. `
Stimmt, steht auch so im changelog. Kann aber bei mir nicht finden. Wo siehtst du diesn Ordner? Bei den Datenpunkten von REGA oder RPC? Hab jetzt gerade, auf die Schnelle, bei beiden nichts gefunden.
Edit: Hallo Suchfunktion! Habs http://forum.iobroker.net/viewtopic.php?t=7927.
-
wollte mich nur mal kurz für das hier bedanken.
Kann jetzt auch meine DutyCycles protokollieren 8-)
Grüße
-
Ich muss mal ganz blöd nachfragen…
Welche Erkenntnisse ziehe ich denn aus dem Ergebnis?
Z.B. aus dem Diagramm hier oben im Post.
Sprich, was mache ich dann damit?
-
Ich muss mal ganz blöd nachfragen…
Welche Erkenntnisse ziehe ich denn aus dem Ergebnis?
Z.B. aus dem Diagramm hier oben im Post.
Sprich, was mache ich dann damit? `
Es hilft dir zu ermitteln zu welchen Zeitpunkten dein duty cycle Hohe Werte aufweisen zB zur Fehlersuche
–-----------------------
Send from mobile device
Das schöne ios hat Auto Korrektur zum k****
Wer Schreibfehler findet darf sie behalten oder auf eBay verkaufen, mindest Umsatz 10% für die community
-
Moin !
Ich würde die Frage mal erweitern wollen … Welche Infos kann man sonst noch aus der CCU abgreifen die einem bei der Fehlersuche ggf. helfen?
Denn wenn ich mir diese Zeile ansehe "xmlrpc http://127.0.0.1:2001/ listBidcosInterfaces" und die folgenden ...
Dann muss da ne Menge mehr Infos raus kommen :?:
Grüße