Batterie low Warnung mit pushover

Begonnen von jonnydreambox, 27 Mai 2014, 21:44:49

Vorheriges Thema - Nächstes Thema

martinp876


MarcelK

#16
Zitat von: martinp876 am 13 Januar 2016, 21:09:14
Es sollte eine Entwarnung kommen.
Der neue Code hat zumindest ein kleines Problem: Dead Devices werden nie wieder gelöscht, da das Reading nicht mehr wie früher generell gelöscht wird, aber auch nicht neu geschrieben wird wenn kein Device mehr dead ist.
$hash->{ERRactNames} = join",",@Anames if (@Anames);

Gruß Marcel

Edit: das gleiche gilt auch für sumERROR Readings:
$hash->{ERR_names} = join",",@errNames if(@errNames);# and name entities

MarcelK

Zitat von: MarcelK am 11 Januar 2016, 10:17:41
Einzig für "dead" Devices wird soweit ich sehen kann keine Notifikation generiert, die werden nur in ERRactNames gesammelt. Ist das Absicht oder was ist hier der "Best practice"?
Als Follow-Up für zukünftige Leser, man kann dead Devices ganz einfach überwachen wenn man sumERROR um "alive:unknown:switchedOff" ergänzt, leider fehlt das per Default. Für die Auswertung verwende ich jetzt eine Kombi aus Notify
define SystemCheck notify HM:ERR.* { HM_Error($NAME, $EVENT) }
und etwas MyUtils Perl code:

sub HM_Error($$)
{
  my ($hminfo, $event) = @_;
  my $text = "";
 
  if ($event =~ /^ERR_[^_].*/) {
    # Event caused by sumERROR
    $text = "$event:".InternalVal($hminfo, "ERR_names", "");
  }
  elsif ($event =~ /^ERR__protocol:.*/) {
    # Protocol error
    $text = "$event:".InternalVal($hminfo, "ERR__protoNames", "");
  }
  elsif ($event =~ /^ERR__unreachable:.*/) {
    # Unreachable
    $text = "$event:".InternalVal($hminfo, "W__unreachNames", "");
  }
  else {
    $text = "Unknown event: $event";
  }

  sendPushMsg "System event", $text;
}

Vielleicht hilft das ja jemandem.

Gruß Marcel

tpm88

Zitat von: martinp876 am 13 Januar 2016, 21:09:14
Es sollte eine Entwarnung kommen.

Hallo Martin,
zumindest ERR_battery wird offenbar nicht zurückgesetzt. Das wurde bei mir am 20.01. auf "low:1" gesetzt. Gestern habe ich die Batterie gewechselt - das Reading bleibt aber unverändert.

Batteriestatus aller  HM-Devices ist ok:

fhem> list TYPE=CUL_HM battery
az_Sensor            2016-01-25 20:17:53    ok
az_Thermostat        2016-01-25 20:18:02    ok
bd_Thermostat        2016-01-25 20:18:22    ok
dg_Thermostat        2016-01-25 20:19:24    ok
hm_RC4_Tobi          2016-01-24 17:41:36    ok
ku_Switch1           2016-01-24 18:12:09    ok
te_Sensor            2016-01-25 20:19:49    ok
wz_Thermostat_E      2016-01-25 20:17:07    ok
wz_Thermostat_S      2016-01-25 20:19:23    ok
wz_Wandthermostat    2016-01-25 20:08:34    ok


HMinfo autoUpdate aktiv, doch:
fhem> list hm
Internals:
   CHANGED
   ERR_names  wz_Thermostat_S
   I_HM_IOdevices disconnected: myCULv3;ok: hmusb;
   NAME       hm
   NR         143
   STATE      updated:2016-01-25 20:32:59
   TYPE       HMinfo
   Version    01
   W_unConfRegs az_Thermostat
   Readings:
     2016-01-25 20:32:59   CRIT__protocol  -
     2016-01-20 21:43:43   C_sumDefined    entities:70,device:19,channel:59,virtual:3
     2016-01-25 20:32:59   ERR__protocol   -
     2016-01-24 14:00:52   ERR__unreachable 0
     2016-01-20 21:43:43   ERR_battery     low:1,
     2016-01-24 13:06:58   I_actTotal      alive:9,dead:0,unkn:0,off:0
     2016-01-24 14:00:52   I_autoReadPend  0
     2016-01-25 18:52:58   I_rssiMinLevel  59<:6 60>:8 80>:3 99>:0
     2016-01-25 12:32:53   I_sum_battery   ok:10,
     2016-01-25 18:52:58   I_sum_motor     stop:off:1,stop:80:1,stop:89:1,
     2016-01-25 20:32:59   W__protocol     -
   Helper:
     autoUpdate 300
     weekplanList:
       az_Thermostat_Clima
       bd_Thermostat_Clima
       dg_Thermostat_Clima
       wz_Thermostat_E_Clima
       wz_Thermostat_S_Clima
       wz_Wandthermostat_Climate
   Nb:
     cnt        7
Attributes:
   autoArchive 1
   autoUpdate 00:05
   configDir  setup
   configTempFile tempList.cfg
   event-on-change-reading .*
   sumERROR   battery:ok,sabotageError:off,powerError:ok,overload:off,overheat:off,reduced:off,motorError:no,error:none,uncertain:yes,smoke_detect:none,cover:closed
   sumStatus  battery,sabotageError,powerError,motor
   webCmd     update:protoEvents short:rssi:peerXref:configCheck:models


HMinfo ist aktuell:
fhem> version
...
98_HMinfo.pm         10518 2016-01-16 11:38:39Z martinp876


Oder habe ich etwas falsch verstanden?

Tobias
Test FHEM Server on RPi, CUL_HM
Prod FHEM Server on Odroid HC1, HM-USB, JeeLink
Devices: diverse HM, IT1500, 1wire, LaCrosse, MQTT

MarcelK

Zitat von: tpm88 am 25 Januar 2016, 20:41:08
Oder habe ich etwas falsch verstanden?
Nö, nur noch ein kleiner Bug, siehe meinen Beitrag oben. Wenn Du die "if (@xyz)" jeweils am Zeilenende entfernst sollte das schon richtig funktionieren.

Gruß Marcel

MarcelK

Zitat von: MarcelK am 26 Januar 2016, 01:07:01
Nö, nur noch ein kleiner Bug, siehe meinen Beitrag oben. Wenn Du die "if (@xyz)" jeweils am Zeilenende entfernst sollte das schon richtig funktionieren.
Leider doch nicht ganz so einfach, die sumERROR Readings werden nicht mehr geupdated wenn ein Fehlerfall wegfällt. Anbei ein neuer Versuch eines Patches. Die Readings werden zurückgesetzt wenn der jeweilige Fehler nicht mehr da ist und beim nächsten Update dann komplett gelöscht damit die Sache etwas aufgeräumter aussieht.

Gruß Marcel

MarcelK

#21
Und noch etwas, die aktuelle Implementierung führt zu so schönen Kaskaden:
2016-01-26_16:51:43 HM ERR__protocol: CmdDel:1,ResndFail:1
2016-01-26_16:52:44 HM ERR__protocol: ResndFail:1,CmdDel:1
2016-01-26_16:53:44 HM ERR__protocol: CmdDel:1,ResndFail:1
2016-01-26_16:57:44 HM ERR__protocol: ResndFail:1,CmdDel:1
2016-01-26_16:59:44 HM ERR__protocol: CmdDel:1,ResndFail:1
2016-01-26_17:00:44 HM ERR__protocol: ResndFail:1,CmdDel:1
2016-01-26_17:03:45 HM ERR__protocol: CmdDel:1,ResndFail:1
2016-01-26_17:04:45 HM ERR__protocol: ResndFail:1,CmdDel:1
2016-01-26_17:05:45 HM ERR__protocol: CmdDel:1,ResndFail:1
2016-01-26_17:06:45 HM ERR__protocol: ResndFail:1,CmdDel:1
2016-01-26_17:10:45 HM ERR__protocol: CmdDel:1,ResndFail:1
2016-01-26_17:11:45 HM ERR__protocol: ResndFail:1,CmdDel:1
2016-01-26_17:15:46 HM ERR__protocol: CmdDel:1,ResndFail:1


Aktualisiertes .diff anbei.

Edit: nochmal kleines Update.

MarcelK

#22
Hallo Martin,

kannst Du Dir meine Änderungen bei Gelegenheit bitte mal anschauen? Ich will die ungern bei jedem Update wieder verlieren. Danke schön!

Beste Gruß, Marcel

martinp876


MarcelK

Ah, bist Du Hardware-technisch noch gehandicapt. Alles klar, danke für die Rückmeldung.

Besten Gruß, Marcel

DerFrickler

nehmt doch einfach das Beispiel aus dem Wiki Alarm Modul und packt folgendes als Actor in die Einstellungen des Alarm Moduls mit rein:

{Pushover('FHEM',ReadingsVal('alarm', 'short','undef'))}

dazu dann noch in die 99_Utils:

sub
Pushover($$)
{
    #Log 2,"sendPushMessage Title: $_[0]";
    #Log 2,"sendPushMessage Message: $_[1]";
    fhem("set pushmsg msg '".$_[0]."' '".$_[1]."'");
}

MarcelK

Ich hol den Thread mal wieder nach oben. Martin, schaust Dir bitte den Patch noch an?

Besten Gruß Marcel

martinp876


MarcelK

Danke schön. Aber gibt's nen spezifischen Grund wieso Du diese Änderung nicht übernommen hast?
   @errNames = grep !/^$/,HMinfo_noDup(@errNames);
-  $hash->{ERR_names} = join",",@errNames if(@errNames);# and name entities
+  $hash->{ERR_names} = join",",@errNames;# and name entities

   push @updates,"C_sumDefined:"."entities:$nbrE,device:$nbrD,channel:$nbrC,virtual:$nbrV";
   # ------- display status of action detector ------
   push @updates,"I_actTotal:".join",",(split" ",$modules{CUL_HM}{defptr}{"000000"}{STATE});
-  $hash->{ERRactNames} = join",",@Anames if (@Anames);
+  $hash->{ERRactNames} = join",",@Anames;

Mit dem eingecheckten Code wird ERR_names und ERRactNames niemals zurückgesetzt.

Gruß, Marcel

martinp876

Sollte schon. Bei meiner Installation wird der Wert gelöscht . bei dir nicht?