FHEM Forum

FHEM - Hausautomations-Systeme => MAX => Thema gestartet von: vic am 17 Dezember 2015, 14:07:27

Titel: Battery State bei Wandthermostaten anders als bei Thermostaten?
Beitrag von: vic am 17 Dezember 2015, 14:07:27
Guten Tag zusammen

Bin schon seit einiger Zeit am Fehlresuchen jedoch ohne Erfolg. Vermutlich ist es mit den entsprechenden Kenntnissen sicherlich ein lösbares Problem.

Aufgabenstellung:
Wenn der Batterie-Status nicht mehr OK ist soll eine Mail gesendet werden. Bei den Thermostaten funktioniert dies bestens. Bei den Wandthermostaten wird die Mail immer ausgelöst (Die Batterien sind in Ordnung  :D. Bei den Details werden sie ebenfalls als ok angezeigt.)
Anbei der Code:


define MAX_0d1058 MAX HeatingThermostat 0d1058
attr MAX_0d1058 IODev MAX
define BatteriestatusAnDummy_0d1058 at +*13:00:00 { my $d=ReadingsVal("MAX_0d1058","battery",0) ;; fhem("set Batteriestatus_Thermostat_Buero______________ $d") ;; if (Value("Batteriestatus_Thermostat_Buero______________") ne "ok" ) \
{ (DebianMail_gmx('meine@mailadresse','***** Fhem ***** Batteriestatus Büro ueberpruefen *****','Batteriestatus Büro überprüfen') ) } \
}


Der gleiche Code scheint bei den Wandthermostaten nicht zu funktionieren:


define Wandthermostat_13 MAX WallMountedThermostat 0e1615
attr Wandthermostat_13 IODev MAX
define BatteriestatusAnDummy_WT_13 at +*13:00:00 { my $d= ReadingsVal("Wandthermostat_13","battery",0) ;; fhem("set Batteriestatus_WandThermostat_13__________ $d") ;; if (Value("Batteriestatus_Wandthermostat_13__________") ne "ok" ) \
{ (DebianMail_gmx('meine@mailadresse','***** Fhem ***** Batteriestatus Gaeste-WC ueberpruefen *****','Batteriestatus Gäste-WC überprüfen') ) } \
}


Vielen Dank für eure Hilfe
Titel: Antw:Battery State bei Wandthermostaten anders als bei Thermostaten?
Beitrag von: dev0 am 17 Dezember 2015, 15:44:05
Zitat von: vic am 17 Dezember 2015, 14:07:27
Bei den Wandthermostaten wird die Mail immer ausgelöst
Wenn es kein Reading battery (case sensitive) gibt oder etwas anders als ok drin steht, dann funktioniert der Code korrekt und schickt 'ne Mail.

Davon abgesehen würde ich das nicht in at(s), sondern in ein notify für alle Geräte verpacken:
define n_bat_check notify .*:[Bb]attery:.* { your code for all devices with reading battery here }

Edit: <noergel-mode>Code bitte in code tags einfassen</noergel-mode>
Titel: Antw:Battery State bei Wandthermostaten anders als bei Thermostaten?
Beitrag von: Wzut am 17 Dezember 2015, 16:06:31
alle MAX Geräte haben das gleiche Reading "battery" und als Wert "ok" oder "low"
Titel: Antw:Battery State bei Wandthermostaten anders als bei Thermostaten?
Beitrag von: vic am 17 Dezember 2015, 17:35:23
Vielen Dank für die raschen Antworten

@dev0
Den notify werde ich gerne einmal versuchen. Bin noch ein ziemlicher Anfänger und habe mit der Übernahme des codes eine sensationelle e-Mail-Flut ausgelöst da der notify vermutlich ständig vom MAX-Cube mit Daten beliefert wird.

@Wzut
Leider scheint dies beim Wandthermostaten nicht der Fall zu sein.
Titel: Antw:Battery State bei Wandthermostaten anders als bei Thermostaten?
Beitrag von: Wzut am 17 Dezember 2015, 18:00:14
Zitat von: vic am 17 Dezember 2015, 17:35:23
Leider scheint dies beim Wandthermostaten nicht der Fall zu sein.

so so ....
root@mail:/opt/fhem-5.5/FHEM# cat 10_MAX.pm | grep "batterylow"
    my $batterylow = vec($bits2, 7, 1); #1 if battery is low
    Log3 $hash, 5, "battery $batterylow, rferror $rferror, panel $panel, langateway $langateway, dstsetting $dstsetting, mode $mode, valveposition $valveposition %, desiredTemperature $desiredTemperature, until $untilStr, curTemp $measuredTemperature";
    readingsBulkUpdate($shash, "battery", $batterylow ? "low" : "ok");
      my $batterylow = vec($bits2, 7, 1); #1 if battery is low
      Log3 $hash, 5, "battery $batterylow, rferror $rferror, panel $panel, langateway $langateway, dstsetting $dstsetting, mode $mode, displayActualTemperature $displayActualTemperature, heaterTemperature $heaterTemperature, untilStr $untilStr";
      readingsBulkUpdate($shash, "battery", $batterylow ? "low" : "ok");
    my $batterylow = vec($bits,7,1);
    Log3 $hash, 5, "ShutterContact isopen $isopen, rferror $rferror, battery $batterylow, unkbits $unkbits";
    readingsBulkUpdate($shash, "battery", $batterylow ? "low" : "ok");
    my $batterylow = vec($bits2, 7, 1); #1 if battery is low
    readingsBulkUpdate($shash, "battery", $batterylow ? "low" : "ok");
  $state .= " (battery low)" if($shash->{batterylow});
Titel: Antw:Battery State bei Wandthermostaten anders als bei Thermostaten?
Beitrag von: dev0 am 17 Dezember 2015, 18:36:25
@vic: event-on-change-reading setzen oder selbst im Code abfangen.
Titel: Antw:Battery State bei Wandthermostaten anders als bei Thermostaten?
Beitrag von: vic am 12 Februar 2016, 07:57:17
Guten Tag dev0 und Wzut

Ich wollte mich noch ganz herzlich für eure Unterstützung bedanken.
Unterdessen habe ich den Fehler gefunden. Irrtümlicherweise hatte ich einen Tippfehler in der Variablendefinition der durch copy-paste wunderbar verteilt war.
Entschuldigt bitte dass ich euch bemüht hatte und nochmals vielen Dank auch an alle anderen für ihre sensationelle Hilfestellungen im Forum.

Somit kann man diesen Post als Erledigt betrachten.