Duty_Cycle CCU2 als SysVar

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

Moderator: Co-Administratoren

Benutzeravatar
funkleuchtturm
Beiträge: 2368
Registriert: 13.06.2011, 16:42
Hat sich bedankt: 23 Mal
Danksagung erhalten: 357 Mal
Kontaktdaten:

Re: Duty_Cycle CCU2 als SysVar

Beitrag von funkleuchtturm » 13.06.2016, 15:39

Toller Ansatz :D :D
Ich überlege, was man außer der Anzeige mit dem Wert für eine aktive Prävention eines bevorstehenden Kollapses machen könnte.
Könnte man bei Überschreiten eines Wertes, sagen wir mal 50%, den Funk-Übeltäter ermitteln und ggf. "mundtot" machen oder ignorieren ?

Kann man per Skript o.ä. überhaupt ein Modul "ignorieren" ?

Jedenfalls bietet dieser Ansatz viel Raum für interessante Folgeaktivitäten!!
... damit die Tipps & Tricks" auch wieder ihrem Namen gerecht werden :mrgreen:
Viele Gruesse
Eugen
________________________________________________
SmartHome-Eintopf mit feinem Homeduino-Gemüse
... und für Feinschmecker gibt´s den WIFFI, den WEATHERMAN-2, den PULSECOUNTER und den AIRSNIFFER
mit vielen Kochrezepten für den ambitionierten Homematiker

Daimler
Beiträge: 9115
Registriert: 17.11.2012, 10:47
System: Alternative CCU (auf Basis OCCU)
Wohnort: Köln
Hat sich bedankt: 37 Mal
Danksagung erhalten: 283 Mal

Re: Duty_Cycle CCU2 als SysVar

Beitrag von Daimler » 13.06.2016, 21:49

Hi Eugen,
funkleuchtturm hat geschrieben:Toller Ansatz :D :D
Ich dachte, Du bist in Urlaub.
funkleuchtturm hat geschrieben:Ich überlege, was man außer der Anzeige mit dem Wert für eine aktive Prävention eines bevorstehenden Kollapses machen könnte.
Z. B. CCU-Reboot.
funkleuchtturm hat geschrieben:Könnte man bei Überschreiten eines Wertes, sagen wir mal 50%, den Funk-Übeltäter ermitteln und ggf. "mundtot" machen oder ignorieren ?
Habe mich seit meiner nur CCU-Zeit nicht mehr damit beschäftigt.
Die Problematik? mit dem DC gibt es ja bei der 2er erst seit der 2.17er!

Aber automatisiert 'mundtot' bzw. 'ignorieren' - interessanter Gedanke - nur wie?.
Gruß Günter

pivccx mit 3.xx in Produktiv und Testsystem mit HM-, HM-W, HMIP- und HMIP-W Geräten, HPCx Studio 4.1,
L-Gateways, RS-L-Gateways, HAP, Drap, FHZ200x, vereinzelt noch FS2x-Komponenten.
HM / HM-IP: Zur Zeit knapp 300 Komponenten mit ??? Kanälen .

Ich übernehme für alle von mir gegebenen Hinweise, Tipps und Links keine Haftung! Das Befolgen meiner Tipps ist nur für Fachkundige gedacht und erfolgt auf eigene Gefahr!

Familienvater
Beiträge: 7151
Registriert: 31.12.2006, 15:18
System: Alternative CCU (auf Basis OCCU)
Wohnort: Rhein-Main
Danksagung erhalten: 34 Mal

Re: Duty_Cycle CCU2 als SysVar

Beitrag von Familienvater » 14.06.2016, 00:22

Moin,

das wird eher schwierig, den Übeltäter zu ermitteln, da man dazu selbst jedes eingehende Datenpaket auf ein Aktor-Konto buchen müsste*. Damit könnte man evtl. eine übermäßige Häufung erkennen, aber es gibt noch so viel nebenbei, das man das Syslog der CCU für den RFD auf Debug drehen müsste, und dann das Syslog mit hohen Künsten der KI zerlegen, interpretieren und auch dieses wieder auf Aktor-Konten buchen müsste (ob eine Quittung auf ein von der CCU empfangenes Funkpaket gesendet wurde bekommt die WebUI gar nicht mit, es belastet aber sehr wohl den DutyCycle der CCU). Ein Wakeup-Burst der CCU ist nur im syslog erkennbar, um die automatische Erkennung habe ich mir da noch gar keine Gedanken gemacht.

Der Familienvater
__
* Und man müsst eigentlich auch von Programmen/Scripten veranlasste Sendeaktionen der CCU einem Skript/Programm zuordnen, inkl der evtl. "unnötigen" Antwort-/Quittungs-Sendezeit (im Script den falschen Befehl verwendet, und schon fragt die CCU sicherheitshalber jedesmal beim Aktor nach, als den letzten bekannten Zustand zu nutzen).

Benutzeravatar
Herbert_Testmann
Beiträge: 11062
Registriert: 17.01.2009, 11:30
Danksagung erhalten: 7 Mal

Re: Duty_Cycle CCU2 als SysVar

Beitrag von Herbert_Testmann » 14.06.2016, 09:47

Hallo FV

für den normalen User fände ich den Aufwand auch übertrieben. Wenn es um Fehlersuche bei einem Kunden geht oder der Hersteller ein Problem finden möchte, könnte ich mir evtl. einen statistischen Ansatz vor stellen.
Aus dem von Dir erwähnten Log File auf dem Syslog Server könnte man fest stellen, wie oft sich jeder Aktor in einer bestimmten Zeiteinheit (30 min) mit der CCU per Funk verständigt. Die Sende und Empfangspakete sollte im Log mit Seriennummer vermerkt sein ?
Das könnte als senkrechtes Balkendiagramm sogar pro Aktor farbig mit 2 Balken (von der CCU gesendet, empfangen) passieren. Vermutlich sähe das dann so ähnlich wie die RSSI Liste aus.

Aber nur "um das mal zu sehen" ist es einfach zu viel Zeitaufwand.
---
Dieses Schreiben wurde maschinell erstellt und ist ohne Unterschrift gültig

Familienvater
Beiträge: 7151
Registriert: 31.12.2006, 15:18
System: Alternative CCU (auf Basis OCCU)
Wohnort: Rhein-Main
Danksagung erhalten: 34 Mal

Re: Duty_Cycle CCU2 als SysVar

Beitrag von Familienvater » 14.06.2016, 23:54

Hi,

meine Scripte machen sich die Mühe, meine Syslogs "allgemein" (ohne Aktor/Programm/Script-Bezug, aber nach Interface CCU/GW1/GW2) durchzugrabbeln, so das ich neben dem Dutycylce für jedes Interface zumindest die Anzahl der Empfangenen, Gesendeten und Quittungen als Werte habe, die ich im 5min Abstand auswerte/graphe.
Ich befürchte aber, das dies ohne externen Syslogserver mit Logfilter-Funktionen schwierig wird, das aus-dem-Stand auf einer einfachen CCU2 zu machen, da rotiert einem ggf. das Syslog zu schnell unter den Scripten weg...

Der Familienvater

apollon77
Beiträge: 308
Registriert: 12.10.2013, 12:32

Re: Duty_Cycle CCU2 als SysVar

Beitrag von apollon77 » 15.06.2016, 09:05

Wie machst Du es? Hast Du die Skripte mal? Ich hab nen Cubietruck der alle syslogs bekommt, da könnt ich sowas noch mit einbauen :-)

Familienvater
Beiträge: 7151
Registriert: 31.12.2006, 15:18
System: Alternative CCU (auf Basis OCCU)
Wohnort: Rhein-Main
Danksagung erhalten: 34 Mal

Re: Duty_Cycle CCU2 als SysVar

Beitrag von Familienvater » 15.06.2016, 23:58

Hi,

das hier ist der Teil eines Shell-Scripts, was per cron-job alle 5 min auf der CCU2 ausgeführt wird:

Code: Alles auswählen

# Count rx und tx, Dateien leeren...
rxcount=0`grep "MEQ0006xxx" /mnt/ccu2/LogExchange/rxLog|wc -l|cut -d '/' -f1|xargs`
rxgw1=0`grep "MEQ0461xxx" /mnt/ccu2/LogExchange/rxLog|wc -l|cut -d '/' -f1|xargs`
rxgw2=0`grep "KEQ1065xxx" /mnt/ccu2/LogExchange/rxLog|wc -l|cut -d '/' -f1|xargs`
echo -n >/mnt/ccu2/LogExchange/rxLog
txcount=0`grep "MEQ0006xxx" /mnt/ccu2/LogExchange/txLog|wc -l|cut -d '/' -f1|xargs`
txgw1=0`grep "MEQ0461xxx" /mnt/ccu2/LogExchange/txLog|wc -l|cut -d '/' -f1|xargs`
txgw2=0`grep "KEQ1065xxx" /mnt/ccu2/LogExchange/txLog|wc -l|cut -d '/' -f1|xargs`
echo -n >/mnt/ccu2/LogExchange/txLog
ackcount=0`grep "MEQ0006xxx" /mnt/ccu2/LogExchange/AckLog|wc -l|cut -d '/' -f1|xargs`
ackgw1=0`grep "MEQ0461xxx" /mnt/ccu2/LogExchange/AckLog|wc -l|cut -d '/' -f1|xargs`
ackgw2=0`grep "KEQ1065xxx" /mnt/ccu2/LogExchange/AckLog|wc -l|cut -d '/' -f1|xargs`
echo -n >/mnt/ccu2/LogExchange/AckLog
Wobei /mnt/ccu2/LogExchange/ ein NFS-Mount ist, und da filtert der rsyslogd in verschiedene Dateien vor:

Code: Alles auswählen

# Meldungen für BidCos I/O filtern, TX
if      ( \
            ($hostname == 'homematic-ccu2' or $hostname =='ccu2')               \
            and (                                                       \
                  (                                                     \
                    ($rawmsg contains 'rfd: TX:  @')                    \
                  )                                                     \
                )                                                       \
        ) \
then    /data/NAS-data/ccu2/LogExchange/txLog


# Meldungen für BidCos I/O filtern, ACK
if      ( \
            ($hostname == 'homematic-ccu2' or $hostname =='ccu2')               \
            and (                                                       \
                  (                                                     \
                    (                                                   \
                        $rawmsg contains 'Generic [MEQ0006xxx]'                 \
                    or                                                  \
                        $rawmsg contains 'WEATHER [MEQ0006xxx]'                 \
                    or                                                  \
                        $rawmsg contains 'CONDITIONAL_SWITCH [MEQ0006xxx]' \
                    or                                                  \
                        $rawmsg contains 'INFO_ACTUATOR_STATUS [MEQ0006xxx]' \
                    or                                                  \
                        $rawmsg contains 'Generic [MEQ0461xxx]'                 \
                    or                                                  \
                        $rawmsg contains 'WEATHER [MEQ0461xxx]'                 \
                    or                                                  \
                        $rawmsg contains 'CONDITIONAL_SWITCH [MEQ0461xxx]' \
                    or                                                  \
                        $rawmsg contains 'INFO_ACTUATOR_STATUS [MEQ0461xxx]' \
                    or                                                  \
                        $rawmsg contains 'Generic [KEQ1065xxx]'                 \
                    or                                                  \
                        $rawmsg contains 'WEATHER [KEQ1065xxx]'                 \
                    or                                                  \
                        $rawmsg contains 'CONDITIONAL_SWITCH [KEQ1065xxx]' \
                    or                                                  \
                        $rawmsg contains 'INFO_ACTUATOR_STATUS [KEQ1065xxx]' \
                    )                                                   \
                    and                                                 \
                    ($rawmsg contains 'rfd: RX for ')                   \
                    and                                                 \
                    ($rawmsg contains 'BIDI=1')                 \
                  )                                                     \
                )                                                       \
        ) \
then    /data/NAS-data/ccu2/LogExchange/AckLog

# Meldungen für BidCos I/O filtern, RX
if      ( \
            ($hostname == 'homematic-ccu2' or $hostname =='ccu2')               \
            and (                                                       \
                  (                                                     \
                    (                                                   \
                        $rawmsg contains 'Generic [MEQ0006xxx]'                 \
                    or                                                  \
                        $rawmsg contains 'WEATHER [MEQ0006xxx]'                 \
                    or                                                  \
                        $rawmsg contains 'CONDITIONAL_SWITCH [MEQ0006xxx]' \
                    or                                                  \
                        $rawmsg contains 'INFO_ACTUATOR_STATUS [MEQ0006xxx]' \
                    or                                                  \
                        $rawmsg contains 'Generic [MEQ0461xxx]'                 \
                    or                                                  \
                        $rawmsg contains 'WEATHER [MEQ0461xxx]'                 \
                    or                                                  \
                        $rawmsg contains 'CONDITIONAL_SWITCH [MEQ0461xxx]' \
                    or                                                  \
                        $rawmsg contains 'INFO_ACTUATOR_STATUS [MEQ0461xxx]' \
                    or                                                  \
                        $rawmsg contains 'Generic [KEQ1065xxx]'                 \
                    or                                                  \
                        $rawmsg contains 'WEATHER [KEQ1065xxx]'                 \
                    or                                                  \
                        $rawmsg contains 'CONDITIONAL_SWITCH [KEQ1065xxx]' \
                    or                                                  \
                        $rawmsg contains 'INFO_ACTUATOR_STATUS [KEQ1065xxx]' \
                    or \
                        $rawmsg contains ' ACK_STATUS [' \
                    )                                                   \
                    and                                                 \
                    ($rawmsg contains 'rfd: RX for ')                   \
                  )                                                     \
                )                                                       \
        ) \
then    /data/NAS-data/ccu2/LogExchange/rxLog
Der Familienvater

ubecker
Beiträge: 569
Registriert: 31.01.2014, 22:53
Wohnort: Duisburg

Re: Duty_Cycle CCU2 als SysVar

Beitrag von ubecker » 18.06.2016, 00:06

Hallo,
ich habe das jetzt in HPCL eingebunden und schreibe direkt in die History.txt.

danke
Udo

mikewolf99
Beiträge: 1322
Registriert: 13.08.2008, 20:57
Wohnort: Österreich nähe Wien
Hat sich bedankt: 7 Mal
Danksagung erhalten: 1 Mal

Re: Duty_Cycle CCU2 als SysVar

Beitrag von mikewolf99 » 18.06.2016, 09:34

Hallo Udo , könntest du beschreiben wie Du es in hpcl integriert hast wäre sicher für viele die hpcl verwenden interessant
Mit freundlichen Grüßen
Mikewolf


Sent from my iPhone 6 plus using Tapatalk
CCU2 mit Cuxd und HP CLX ,3 x FHZ2000,2 Funkgateway (eckig),und 2 Funkgateway (rund),RS LanGate
ca 590 Komponenten gemischt HM und FS20 90/10)`CCU auf Cubie LXCCU,CCU auf RPi3 Pivccu,Iobroker auf HPgen8,
Tinker,orangepi,Odroid .....,Sonoffs,Xiaomi und ne Menge esp8266

Tobias78
Beiträge: 1464
Registriert: 27.06.2010, 01:01
Wohnort: Braunschweig
Hat sich bedankt: 4 Mal

Re: Duty_Cycle CCU2 als SysVar

Beitrag von Tobias78 » 18.06.2016, 13:27

Hallo,
die Abfrage und einfache Darstellung als Systemvariable ist wirklich eine geniale Idee und super geeignet, um den "Gesundheitszustand" der eigenen Programmierung zu prüfen.
Wenn die Systemvariable auf "protokolliert" gesetzt wird, kann man sich die Auslastung auch in PocketControlHM ohne jedes weitere Extra als Diagramm anzeigen lassen.
Als weitere Optimierungsidee könnten die Nullen (Nachkommastellen) noch wegformatiert werden. Ist für jemand mit tcl Kenntnis sicher kein Hexenwerk :D :?:
Und noch eine Idee zur Diskussion: Die Uptime und Prozessorauslastung wären auch noch schön in einer Systemvariable zu haben :wink:
@Udo: Wie man ohne Polling den DutyCylce nach Homeputer bekommt, würde mich ebenfalls ineressieren.
Gruß, Tobias.
--------------------------------------------
Im Einsatz und empfehlenswert:
RaspberryMatic,IO.Broker, Homeputer Studio; CuXD; PocketControl, HomeStatus, Robonect, Alexa, io.Broker
------------------------------------------

Antworten

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