HMLAN: nennenswerte Abweichung zwischen msgLoadEst und Highload/Overload

Begonnen von frank, 21 März 2014, 18:17:12

Vorheriges Thema - Nächstes Thema

frank

hallo sailor,

dann hat es wohl bei dir auch geklappt.

du könntest den wert msgloadest vielleicht näher beschreiben. ist ja nur gerechnet und nicht der echte wert des hmlan.

siehe:
http://forum.fhem.de/index.php?action=dlattach;topic=15921.0;attach=7780

http://fhem.de/commandref.html#HMLAN

und das, was martin in diesem thread über nicht in die berechnung eingehende messages geschrieben hat.

gruss frank
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Sailor

Hallo Frank

vielen Dank fuer den Hinweis! Habe ich soeben umgesetzt!
Sogar das Inhaltsverzeichnis ist wie von Geisterhand entstanden!  8)


@martinp876: Magst Du Dir das Kapitel 2 bzw 2.1 einmal durchlesen und mir dagen, ob ich dies richtig wiedergegeben habe?

Vielen Dank
    Sailor
******************************
Man wird immer besser...

ph1959de

Zitat von: Sailor am 26 März 2014, 11:10:05
Sogar das Inhaltsverzeichnis ist wie von Geisterhand entstanden!  8)
Nur zur Erläuterung: das macht die Wiki-Engine ab einer bestimmten Anzahl "Überschriften".

Gruß, Peter
Aktives Mitglied des FHEM e.V. | Moderator im Forenbereich "Wiki"

martinp876

Hi,
hier ein paar kommentare

typo
um direkte Readings des HMLANs uns sind auf alle
um direkte Readings des HMLANs und sind auf alle

Korrektur
noch nicht für die AES Verschlüsselung welche die Länge des Telegrams darüber hinaus zu verändern vermag.
noch nicht für die AES Verschlüsselung welche weitere Telegramme sendet, die aktuell nicht gezählt werden.


Liste der Einschränkungen
- nach restart fängt FHEM bei 0 an zu zählen. Da HMLAN aber nicht reseted hat kann bereits eineeine messageload vorliegen
- FHEM kann nicht zwischen reboot und disconnect der HMLAN unterscheiden. Ein disconnect wird als reboot gewertet.
- automatische Wiederholungen es HMLAN werden nicht erkannt und nicht berücksichtigt.

Evtl. könntest du msgLoad gleich einmal erklären

msgLoadEst 1hour:44% 10min steps: 12/2/7/23/0/0
HMLAN halt sich an den Standard, nach dem eine maximale Sendelast je Stunde zulässig ist. Sollte diese überschritten werden stellt HMLAN das senden ein, empfängt aber weiter.
msgLoadEst 1hour:44% 10min steps: 12/2/7/23/0/0
besagt, dass in der aktuellen Stunde 44% der Sendekapazität verbraucht sind. Im aktuellen 10 min Rahmen sind es 12%, in den 10min davor waren es 2%, davor 7% und davor 23%.

Dieser Zähler ist im HMLAN - FHEM kann es nicht rücksetzen. Nur durch Warten oder einen reset den HMLAN ist ein rückstellen möglich.

Gruss Martin

Sailor

Hallo Martin

Deine Vorschläge wurden soeben eingearbeitet.  8)

Gruß
   Sailor
******************************
Man wird immer besser...

frank

hallo martin,

ZitatInit war nie weg kommt immer noch als Condition. Nach Overload kommt kein Init, nach reboot oder disconnect sollte es kommen

also, mit deinem code in 00_hmlan in zeile 764
  HMLAN_condUpdate($hash,0xff);

bekomme ich nur folgende events nach reboot
2014-03-27_17:26:37 global SHUTDOWN
2014-03-27_17:27:10 global INITIALIZED
2014-03-27_17:27:12 HMLAN1 cond: ok


ändern des codes in
  HMLAN_condUpdate($hash,255);

bringt wieder folgende events nach reboot
2014-03-27_17:33:29 global SHUTDOWN
2014-03-27_17:34:02 global INITIALIZED
2014-03-27_17:34:03 HMLAN1 cond: disconnected
2014-03-27_17:34:03 HMLAN1 cond: init
2014-03-27_17:34:03 HMLAN1 cond: ok


gruss frank
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

martinp876

Hi Frank,

da hast du recht - perl kann ja nicht wirklich rechnen ;) (oder hat keine sauberen variablen)
mein fehler

ist geändert

Danke
Martin

Sailor

Hi Martin

hoere ich da einen Update-Eintrag fuers WIKI raus?   ;D

Nenn mir nur die Versionsnummer und einen netten kleinen Satz dazu und ich arbeite es ein.

Gruss
    Sailor
******************************
Man wird immer besser...

martinp876

nein, Wiki ist ok. das war nur ein Problem mit nicht korrent gesetzten Readings nach reboot

Sailor

Hallo Martin

ich bin mit meinem fhem - System auf den RasPi umgestiegen und bei der Gelegenheit auch auf dbLog. 8)

Bedauerlicherweise gibt der Plot seit dem nichts mehr aus und ich kann beim besten Willen den Wurm nicht finden.  :o

Bei der Gelegenheit wuerde ich den Wiki-Eintrag fuer die 1%-Regel gleich mit auf den neusten Stand bringen.
Sofern es denn irgendwie hinkriege... ;D

fhem.cfg

###START########## Dummy for indication of message load #######################################################START####
define HmlanIndicator dummy
attr HmlanIndicator alias HMLAN Radio Load
attr HmlanIndicator group fhem on Raspberry Pi
attr HmlanIndicator room System,System_Short
####END########### Dummy for indication of message load ########################################################END#####

###START########## Initialize CronJob to write "msgLoadEst-1hour"-reading to HMLAN1 ###########################START####
define a_hmlan_internals at +*00:01:00 {\
  my $trafficStr = InternalVal("HMLAN1","msgLoadEst",0);;\
  my $trafficHour = $1 if($trafficStr =~ m/1hour:(.*)% 10min steps/);;\
  fhem("setreading HMLAN1 hmTrfHour ".$trafficHour." %" );;\
  fhem("set HmlanIndicator $trafficStr");;\
}
# my $trafficStr = InternalVal("HMLAN1","msgLoadEst","???");;\ #Original version suspected to cause error message "Argument "???" isn't numeric in numeriq eq (==)"
####END########### Initialize CronJob to write "msgLoadEst-1hour"-reading to HMLAN1 ############################END#####

###START########## Define plot #################################################################################START###
define SVG_DB_HMLAN1 SVG myDbLog:HMLAN1:CURRENT
attr SVG_DB_HMLAN1 alias 10. hmlan
attr SVG_DB_HMLAN1 group fhem on Raspberry Pi
attr SVG_DB_HMLAN1 label "HMLAN1 traffic: min [$data{min1}] - avg [$data{avg1}] - max [$data{max1}] - last [$data{currval1}] ----- [".localtime()."]"
attr SVG_DB_HMLAN1 room System
#attr SVG_DB_HMLAN1 plotsize 300,80
####END########### Define plot ##################################################################################END####


plot_HMLAN1.gplot

# Created by FHEM/98_SVG.pm, 2014-04-28 21:48:21
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title '<L1>'
set ytics "init" 6,"err" 4,"wng" 3,"?" 1,"ok" 0
set y2tics
set grid y2tics
set ylabel "condition"
set y2label "msgLoadEst % / hr"
set yrange [0:7]
set y2range [0:100]

#DbLog <SPEC1>:HMLAN1:hmTrfHour::
#DbLog <SPEC1>:HMLAN1:cond\x3a::$fld[3]=~"init"?6:$fld[3]=~"ERROR-Overload"?4:$fld[3]=~"Warning-HighLoad"?3:$fld[3]=~"ok"?0:1
#DbLog <SPEC1>:HMLAN1:global.*::$fld[2]=~"SHUTDOWN"?6:$fld[2]=~"INITIALIZED"?0:0

plot "<IN>" using 1:2 axes x1y2 title 'msgLoadEst' ls l6fill lw 1 with steps,\
     "<IN>" using 1:2 axes x1y1 title 'condition' ls l0 lw 1 with steps,\
     "<IN>" using 1:2 axes x1y1 title 'shutdown' ls l2fill lw 1 with steps


Danke

Gruss
    Sailor
******************************
Man wird immer besser...

networker

Was mir beim drüberschauen so aufgefallen ist folgendes:

Du hast bei der Definition keine plotfunction (attr SVG_DB_HMLAN1 plotfunction deinDevice) definiert
Entweder du fügst das Attribut plotfunction hinzu oder du ersetzt <SPEC1> durch  deinDevice

PS: ich glaub CURRENT ist durch HISTORY zu ersetzten.

lG, Michael

Sailor

Hallo networker

Oh Mann, das wars.

Mein Device stand schon im Plotfile aber ich habe vergessen die Zeichenfolge <SPEC1>: zu loeschen.

Ganz gemaess dem Zitat: "Ich bin immer wieder ueberrascht: Kaum macht man es richtig, funktioniert es!"  8)

Danke!

Gruss
   Sailor
******************************
Man wird immer besser...

networker

Hallo Sailor

Kannst du einmal überprüfen ob bei dir alle 3 Anzeigen (msgLoadEst, condition, shutdown) funktionieren?

Ich bekomme nur Werte für msgLoadEst angezeigt.

Das sind meine Daten aus der DB


2014-10-03 16:26:20|HMLAN1|HMLAN|cond: Warning-HighLoad|cond|Warning-HighLoad|
2014-10-03 16:26:23|HMLAN1|HMLAN|cond: ERROR-Overload|cond|ERROR-Overload|
2014-10-03 16:26:23|HMLAN1|HMLAN|cond: Warning-HighLoad|cond|Warning-HighLoad|
2014-10-03 16:26:24|HMLAN1|HMLAN|cond: ERROR-Overload|cond|ERROR-Overload|
2014-10-03 16:26:30|HMLAN1|HMLAN|cond: Warning-HighLoad|cond|Warning-HighLoad|
2014-10-03 16:26:33|HMLAN1|HMLAN|cond: ERROR-Overload|cond|ERROR-Overload|
2014-10-03 16:29:03|HMLAN1|HMLAN|cond: Warning-HighLoad|cond|Warning-HighLoad|
2014-10-03 16:29:08|HMLAN1|HMLAN|cond: ERROR-Overload|cond|ERROR-Overload|
2014-10-03 16:30:28|HMLAN1|HMLAN|cond: Warning-HighLoad|cond|Warning-HighLoad|
2014-10-03 16:31:22|HMLAN1|HMLAN|cond: ERROR-Overload|cond|ERROR-Overload|
2014-10-03 17:00:28|HMLAN1|HMLAN|cond: ok|cond|ok|
2014-10-03 17:12:00|HMLAN1|HMLAN|cond: ok|cond|ok|
2014-10-03 17:17:37|HMLAN1|HMLAN|cond: ok|cond|ok|
2014-10-03 17:19:26|HMLAN1|HMLAN|cond: ok|cond|ok|
2014-10-03 17:29:09|HMLAN1|HMLAN|cond: ok|cond|ok|
2014-10-03 17:38:49|HMLAN1|HMLAN|cond: ok|cond|ok|
2014-10-03 17:52:02|HMLAN1|HMLAN|cond: ok|cond|ok|
2014-10-03 19:00:10|HMLAN1|HMLAN|cond: Warning-HighLoad|cond|Warning-HighLoad|
2014-10-03 19:01:02|HMLAN1|HMLAN|cond: ERROR-Overload|cond|ERROR-Overload|
2014-10-03 20:00:12|HMLAN1|HMLAN|cond: ok|cond|ok|
2014-10-03 20:45:50|HMLAN1|HMLAN|cond: timeout|cond|timeout|
2014-10-03 20:45:50|HMLAN1|HMLAN|cond: disconnected|cond|disconnected|
2014-10-03 20:46:56|HMLAN1|HMLAN|cond: init|cond|init|
2014-10-03 20:46:56|HMLAN1|HMLAN|cond: ok|cond|ok|
2014-10-03 15:00:07|HMLAN1|HMLAN|hmTrfHour: 0 %|hmTrfHour|0 %|
2014-10-03 15:01:07|HMLAN1|HMLAN|hmTrfHour: 0 %|hmTrfHour|0 %|
2014-10-03 15:02:07|HMLAN1|HMLAN|hmTrfHour: 0 %|hmTrfHour|0 %|


Irgendwie greift die Umsetzung der cond - Werte auf die Zahlen bei mir nicht.


#DbLog HMLAN1:cond\x3a::$fld[3]=~"init"?6:$fld[3]=~"ERROR-Overload"?4:$fld[3]=~"Warning-HighLoad"?3:$fld[3]=~"ok"?0:1
#DbLog HMLAN1:global.*::$fld[2]=~"SHUTDOWN"?6:$fld[2]=~"INITIALIZED"?0:0


lG, Michael

networker

OK eine Nacht darüber geschlafen und das ist dabei herausgekommen:

FHEM.cfg

# Dummy fuer Sendeauslastung
define HmlanIndicator dummy
attr HmlanIndicator alias HMLAN Radio Load
attr HmlanIndicator group fhem on Raspberry Pi
attr HmlanIndicator room 9.99_Technik,9.98_Technik_Short

#CronJob um Sendestatistik in Reading und Dummy zu schreiben
define a_hmlan_internals at +*00:01:00 {\
  my $trafficStr = InternalVal("HMLAN1","msgLoadEst",0);;\
  my $trafficHour = $1 if($trafficStr =~ m/1hour:(.*)% 10min steps/);;\
  fhem("setreading HMLAN1 hmTrfHour ".$trafficHour." %");;\
  fhem("set HmlanIndicator $trafficStr");;\
}
#attr a_hmlan_internals verbose 5

#HMLAN Sendestatistik und Statusanzeige
define SVG_DB_HMLAN1 SVG myDbLog:HMLAN1:HISTORY
attr SVG_DB_HMLAN1 alias HMLAN
attr SVG_DB_HMLAN1 group fhem on Raspberry Pi
attr SVG_DB_HMLAN1 label "HMLAN1 traffic: min [$data{min1}] - avg [$data{avg1}] - max [$data{max1}] - last [$data{currval1}] ----- [".localtime()."]"
attr SVG_DB_HMLAN1 room 9.99_Technik
attr SVG_DB_HMLAN1 plotsize 840,300
#attr SVG_DB_HMLAN1 verbose 5



HMLAN1.gplot

# Created by FHEM/98_SVG.pm, 2014-04-28 21:48:21
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title '<L1>'
set ytics "shtdwn" 10,"err" 9,"warn" 8,"init" 6,"disc." 5,"timout" 2,"?" 1,"ok" 0
set y2tics("shutdown" 8, "initialed" 0)
set grid ytics
set ylabel "Betriebsstatus"
set y2label "HMLAN Sendestatus %/H"
set yrange [0:12]
set y2range [0:120]

#DbLog HMLAN1:hmTrfHour::
#DbLog HMLAN1:cond:::$val=~s/(init|disconnected|timeout|ERROR-Overload|Warning-HighLoad|ok).*/$1eq"init"?6:$1eq"disconnected"?5:$1eq"timeout"?2:$1eq"ERROR-Overload"?9:$1eq"Warning-HighLoad"?8:$1eq"ok"?0:1/eg
#DbLog global:state:::$val=~s/(SHUTDOWN|INITIALIZED).*/$1eq"SHUTDOWN"?10:0/eg
plot \
using 1:2 axes x1y2 title 'Sendestatistik' ls l6fill lw 1 with steps,\
using 1:2 axes x1y1 title 'Status' ls l0fill lw 1 with steps,\
using 1:2 axes x1y1 title 'FHEM Shutdown' ls l3 lw 1 with steps


leider noch nicht ganz perfekt, denn im Log kommt noch folgendes wenn die Grafik aufgerufen wird.

Argument "REREADCFG" isn't numeric in sprintf at /opt/fhem/FHEM/98_SVG.pm line 1118.
Argument "DEFINED" isn't numeric in numeric gt (>) at /opt/fhem/FHEM/98_SVG.pm line 1169.
Argument "REREADCFG" isn't numeric in numeric gt (>) at /opt/fhem/FHEM/98_SVG.pm line 1169.
Argument "REREADCFG" isn't numeric in numeric gt (>) at /opt/fhem/FHEM/98_SVG.pm line 1169.
Argument "SAVE" isn't numeric in numeric gt (>) at /opt/fhem/FHEM/98_SVG.pm line 1169.
Argument "REREADCFG" isn't numeric in numeric gt (>) at /opt/fhem/FHEM/98_SVG.pm line 1169.
Argument "DEFINED" isn't numeric in subtraction (-) at /opt/fhem/FHEM/98_SVG.pm line 1468.


möglicherweise hilft's jemanden

lG, Michael