Folgendes habe ich erstellt...
#Batteriestatus aller Devices anzeigen
define GS.Batterie readingsGroup .*:[Bb]attery\
.*:[Bb]atteryLevel
attr GS.Batterie alias Batteriestatus
attr GS.Batterie group Sensoren
attr GS.Batterie mapping %ROOM
attr GS.Batterie notime 1
attr GS.Batterie room Gerätestatus
attr GS.Batterie valueFormat {return "0" if( $VALUE eq "low" );; return "100" if( $VALUE eq "ok" );; return "25" if( $VALUE < 2.1 );; return "50" if( $VALUE < 2.3 );; return "75" if( $VALUE < 2.5 );; return "100"}
attr GS.Batterie valueIcon {'battery.0' => 'measure_battery_0@red','battery.100' => 'measure_battery_100@green','Battery.0' => 'measure_battery_0@red','Battery.100' => 'measure_battery_100@green','batteryLevel.0' => 'measure_battery_0@red','batteryLevel.25' => 'measure_battery_25@red','batteryLevel.50' => 'measure_battery_50@orange','batteryLevel.75' => 'measure_battery_75@green','batteryLevel.100' => 'measure_battery_100@green'}
define BatterieStatus readingsGroup .*:[bB]attery
attr BatterieStatus mapping $ALIAS
attr BatterieStatus notime 1
attr BatterieStatus room Hardware
attr BatterieStatus valueFormat { my ($wert) = $VALUE =~ m/(\d+)/;; $wert = 100 if ($VALUE eq "ok");; $wert = 49 if ($VALUE eq "low");; $wert = 0 if ($VALUE eq "critical");; return "<i class='fa fa-battery-0 green fa-2x'><span class='myhidden'>critical</i>" if ($wert < 25);; return "<i class='fa fa-battery-0 green fa-2x'><span class='myhidden'>low</i>" if ($wert < 50);; return "<i class='fa fa-battery-4 green fa-2x'><span class='myhidden'>ok</span></i>";;}
attr BatterieStatus valueIcon {'battery.ok' => 'batterie@green', 'battery.low' => 'batterie@yellow', 'battery.critical' => 'batterie.red'}
#Pushover-Benachrichtigung bei leeren Batterien
define BatteryLowPushover at *19:00:00 { if ( $mday <= 6 && $wday == 0 )\
{if (ReadingsVal("DG.LaCrosse", "battery", "-1") eq "low")\
{fhem ("set PushMessenger msg 'Klimasensor (DG)' 'Bitte Batterie tauschen' '' 0 ''")}\
};;\
{if (ReadingsVal("GT.LaCrosse", "battery", "-1") eq "low")\
{fhem ("set PushMessenger msg 'Klimasensor (Garten)' 'Bitte Batterie tauschen' '' 0 ''")}\
};;\
{if (ReadingsVal("KZ.LaCrosse", "battery", "-1") eq "low")\
{fhem ("set PushMessenger msg 'Klimasensor (KZ)' 'Bitte Batterie tauschen' '' 0 ''")}\
};;\
{if (ReadingsVal("SZ.LaCrosse", "battery", "-1") eq "low")\
{fhem ("set PushMessenger msg 'Klimasensor (SZ)' 'Bitte Batterie tauschen' '' 0 ''")}\
};;\
{if (ReadingsVal("VR.LaCrosse", "battery", "-1") eq "low")\
{fhem ("set PushMessenger msg 'Klimasensor (VR)' 'Bitte Batterie tauschen' '' 0 ''")}\
};;\
{if (ReadingsVal("WZ.LaCrosse", "battery", "-1") eq "low")\
{fhem ("set PushMessenger msg 'Klimasensor (WZ)' 'Bitte Batterie tauschen' '' 0 ''")}\
};;\
{if (ReadingsVal("FL.Tuerschloss", "battery", "-1") eq "low")\
{fhem ("set PushMessenger msg 'Haustürkontakt' 'Bitte Batterie tauschen' '' 0 ''")}\
};;\
{if (ReadingsVal("GT.Tuerschloss", "battery", "-1") eq "low")\
{fhem ("set PushMessenger msg 'Gartenhaustürkontakt' 'Bitte Batterie tauschen' '' 0 ''")}\
};;\
{if (ReadingsVal("WZ.Tuerkontakt", "battery", "-1") eq "low")\
{fhem ("set PushMessenger msg 'Terrassentürkontakt' 'Bitte Batterie tauschen' '' 0 ''")}\
};;\
}
attr BatteryLowPushover group Sensoren
attr BatteryLowPushover room Gerätestatus
Allerdings müsste das jetzt greifen ... da unter Readings battery auf low steht.
{if (ReadingsVal("FL.Tuerschloss", "battery", "-1") eq "low")\
{fhem ("set PushMessenger msg 'Haustürkontakt' 'Bitte Batterie tauschen' '' 0 ''")}\
};;\
Das seit Tagen... Bekomme aber keine Nachricht.
Das kriegst Du aber erst wenn if ( $mday <= 6 && $wday == 0 )
War am 04.06 die Batterie schon lehr?
EDIT: übrigens... wenn der erste Sonntag des Monats der 7. ist, wie es im Mai war, kriegst Du gar nix.
Ah sorry, zu schnell gelesen. Deine Einrückung hat mich verwirrt. Die Bedingung mit mday und wday gilt nur für DG.LaCrosse.
Zeig mal ein "list FL.Tuerschloss" bitte.
Und funktioniert dein PushMessenger?
Hi,
Quelle des Codes ist ein bekannter Blog.
http://www.meintechblog.de/2015/08/fhem-rechtzeitige-benachrichtigung-bei-leeren-batterien/ (http://www.meintechblog.de/2015/08/fhem-rechtzeitige-benachrichtigung-bei-leeren-batterien/)
Wieviel davon hast du abgeändert? Der Blog ist von 2015, vielleicht funktioniert der Code an sich schon nicht mehr bevor du überhaupt erst umgebaut hast.
Alternativ, kennst du den Wiki-Eintrag zum Thema Batterieüberwachung? Habe ich in Verbindung mit Pushover im Einsatz. Ich frage mich warum die Batterie nur einmal im Monat gemeldet werden soll. Wenn bis dahin der Sensor schon ausgefallen ist .... Ich finde es besser sofort darüber informiert zu werden. ... just my 2 Cents.
https://wiki.fhem.de/wiki/Batterie%C3%BCberwachung (https://wiki.fhem.de/wiki/Batterie%C3%BCberwachung)
Bin newbie und hab das Scrip genau von dieser besagten Seite. Vielleicht gibt es ja eine bessere Lösung die mir tgl. den Status übermittelt wenn was nicht stimmt.
list sagt...
Internals:
DEF 3FB7A6
IODev myCUL
LASTInputDev myCUL
MSGCNT 15
NAME FL.Tuerkontakt
NOTIFYDEV global
NR 669
STATE closed
TYPE CUL_HM
lastMsg No:CD - t:41 s:3FB7A6 d:F11034 81CD00
myCUL_MSGCNT 15
myCUL_RAWMSG A0CCDA6413FB7A6F1103481CD00::-92:myCUL
myCUL_RSSI -92
myCUL_TIME 2017-06-14 10:28:54
protLastRcv 2017-06-14 10:28:54
protSnd 6 last_at:2017-06-14 10:28:54
protState CMDs_done
rssi_at_myCUL avg:-94.83 lst:-92 cnt:15 min:-99 max:-87.5
Readings:
2017-06-14 10:22:40 Activity alive
2017-04-10 14:13:23 D-firmware 2.4
2017-04-10 14:13:23 D-serialNr xxxxxx
2017-06-05 04:42:42 alive yes
2017-06-14 10:28:54 battery low
2017-06-14 10:28:54 contact closed (to myVCCU)
2017-06-05 04:42:42 powerOn 2017-06-05 04:42:42
2017-06-05 04:42:42 recentStateType info
2017-06-05 04:42:42 sabotageError off
2017-06-14 10:28:54 state closed
2017-06-14 10:28:54 trigger_cnt 205
Helper:
HM_CMDNR 205
mId 00B1
rxType 28
supp_Pair_Rep 0
Expert:
def 1
det 0
raw 1
tpl 0
Io:
newChn +3FB7A6,00,00,00
nextSend 1497428934.42244
prefIO
rxt 2
vccu
p:
3FB7A6
00
00
00
Mrssi:
mNo CD
Io:
myCUL -90
Prt:
bErr 0
sProc 0
sleeping 1
Rspwait:
Q:
qReqConf 00
qReqStat
Role:
chn 1
dev 1
Rpt:
IO myCUL
flg A
ts 1497428934.32705
ack:
HASH(0x3221d80)
CD8002F110343FB7A60101C800
Rssi:
At_mycul:
avg -94.8333333333333
cnt 15
lst -92
max -87.5
min -99
Tmpl:
Attributes:
IODev myCUL
actCycle 028:00
actStatus alive
alias Haustürkontakt
autoReadReg 4_reqStatus
devStateIcon .*:fts_door_right_closed .*:fts_door_right .*:fts_door_right .*:fts_door_right .*:fts_door_right
event-on-change-reading state,battery,sabotageError
expert 2_raw
firmware 2.4
group Aktoren
icon fts_door_right_open
model HM-SEC-SC-2
peerIDs 00000000,
room CUL_HM,Hausflur,Sensoren
serialNr MEQ1135604
subType threeStateSensor
Hi,
Spielt zwar für Dein Problem keine Rolle, aber ich würde den Kontakt auch anlernen (pairen)
Und die RSSI Werte sind schlecht -> unter -80 -> kann gehen muss aber nicht!
Gruß Otto
Den Kontakte hatte ich damals aber gepaired und meldet sich auch zuverlässig via push wenn die Tür geöffnet wird.
Dein Device heisst NAME FL.Tuerkontakt
Dein AT arbeitet mit ReadingsVal("FL.Tuerschloss"
Blind... Danke. Geändert und testweise mal die Uhrzeit geändert und es klappt.
Habt Ihr eine Empfehlung was ich statt dessen nehmen soll bzw. was wäre hier sinnvoll ?
define BatteryLowPushover at *19:00:00 { if ( $mday <= 6 && $wday == 0 )\
Zitat von: en-trust am 14 Juni 2017, 13:00:22
Den Kontakte hatte ich damals aber gepaired und meldet sich auch zuverlässig via push wenn die Tür geöffnet wird.
Das Du die Meldung bekommst und der Status aktualisiert wird und autocreate ein define erzeugt hat ist noch lange nicht gepairt.
Es fehlen die entsprechenden Readings, das Gerät ist nicht gepairt. Aber dem aktuellen Fall und mir ist das Wurscht, bloß steuern kannst Du das Gerät damit nicht.
Und mit dem RSSI um die -90 kann es sein, dass auch mal Meldungen verloren gehen -> und ohne Pairing leuchtet der Sensor nicht mal rot ;D
Zitat von: en-trust am 14 Juni 2017, 13:28:55
Blind... Danke. Geändert und testweise mal die Uhrzeit geändert und es klappt.
Habt Ihr eine Empfehlung was ich statt dessen nehmen soll bzw. was wäre hier sinnvoll ?
define BatteryLowPushover at *19:00:00 { if ( $mday <= 6 && $wday == 0 )\
Kommt auf die Anforderung an, meine Empfehlung ist weiterhin sofort per Push eine Nachricht zu bekommen wenn irgend eine Batterie leer ist. Egal ob Diestag ist oder nicht. Ich sende mir eine Mail und eine Push. Die Mail kann ich mir dann ganz einfach zu einem Termin im Kalender wandeln wenn ich unterwegs bin. Definition wie im verlinkten Wiki. Der nicht zu vergessende Vorteil davon ... sobald IRGEND ein Device in Zukunft mit Batterie-Reading angelegt wird ist sofort in der Überwachung aktiv. Du musst nichts anpassen und kannst es somit nicht vergessen.
Mein Code ....
define n_batt_chk notify .*:[Bb]attery:.* { if($EVENT !~ m/ok/) {
{ DebianMail('xxxxxx@xxx.de','FHEM Batteriewarnung',$NAME.': '.$EVENT,'')};
fhem("set pushover msg 'FHEM Batteriewarnung' '$NAME: $EVENT'");
Log 3, "$NAME: Batteriewarnung $EVENT";
}
}
Woran erkennst Du denn, ob der gepaired ist ? PeerId 0000000? Ich hatte das damals mit set <CUL> hmPairForSec 600 gemacht und er hatte mir dann in fhem den Eitrag gesetzt.
Hab Batterie jetzt einfach mal aus der wiki übernommen...
define rg_battery readingsGroup .*:battery
attr rg_battery alias Batteriestatus
attr rg_battery valueIcon {'battery.ok' => 'batterie', 'battery.low' => 'batterie@red'}
attr rg_battery commands { "battery.low" => "set %DEVICE replaceBatteryForSec 60" }
define n_batt_chk notify .*:[Bb]attery:.* { if($EVENT !~ m/ok/) {\
{ fhem("set PushMessenger msg 'FHEM Batteriewarnung' '$NAME: $EVENT'");\
Log 3, "$NAME: Batteriewarnung $EVENT";\
}\
}
Er meckert allerdings, obwohl ich es 1:1 kopiert habe.
Unknown command Log, try help.
Unknown command }
, try help.
Ich weiss nicht, ob das reicht, aber zumindest gibt es eine "{" zu viel vor fhem()
define n_batt_chk notify .*:[Bb]attery:.* { if($EVENT !~ m/ok/) {\
fhem("set PushMessenger msg 'FHEM Batteriewarnung' '$NAME: $EVENT'");\
Log 3, ("$NAME: Batteriewarnung $EVENT");\
}\
}
Mag fhem trotzdem nicht.
Zitatobwohl ich es 1:1 kopiert habe
Eigentlich hast Du nicht.
kadettilac89 hatte diese "\" Zeichen am Ende der Zeilen nicht.
Warum? Wahrscheinlich, weill er nicht die gleiche Eingabe-Methode als Du nutzt ................................ :-X
Wenn bei dir die "\" benötigt werden, dann brauchst Du auch die ";" zu verdoppeln. Evtl. auch die Einführungszeichen zu escapen mit \ vorne...
Arbeite bitte lieber im Editor des Webfrontend beim Klicken auf "DEF". Da brauchst Du dich nicht um "\" oder ";;" zu kümmern. Wird uns alle Zeit sparen.
Zitat von: amenomade am 14 Juni 2017, 16:06:14
Eigentlich hast Du nicht.
kadettilac89 hatte diese "\" Zeichen am Ende der Zeilen nicht.
Warum? Wahrscheinlich, weill er nicht die gleiche Eingabe-Methode als Du nutzt ................................ :-X
Wenn bei dir die "\" benötigt werden, dann brauchst Du auch die ";" zu verdoppeln. Evtl. auch die Einführungszeichen zu escapen mit \ vorne...
Arbeite bitte lieber im Editor des Webfrontend beim Klicken auf "DEF". Da brauchst Du dich nicht um "\" oder ";;" zu kümmern. Wird uns alle Zeit sparen.
Die Slash sind Zeilenumbrüche. Wie schon gesagt mach bitte alles über das webfrontend dann musst du dich um solche Sachen nicht kümmern.
Zitat von: kadettilac89 am 14 Juni 2017, 16:28:44
Die Slash sind Zeilenumbrüche.
Ich weiss, ich weiss... ::) :-X Soll ich das Topic "Direkt editieren der fhem.cfg" wieder hier aufmachen? ;)
Zitat von: amenomade am 14 Juni 2017, 17:02:42
Ich weiss, ich weiss... ::) :-X Soll ich das Topic "Direkt editieren der fhem.cfg" wieder hier aufmachen? ;)
Dann brauch ich Popcorn ... die Diskussion hatten wir schon ein paar Tage nicht mehr. Ich verstehe die Anfänger auch, es gibt Blogs in denen der Eindruck erweckt wird dass alles ganz einfach ist, Beispiele der CFG sind angegeben jedoch kein Hinweis wie diese einzupflegen sind. Ich weiß nicht wer da helfen kann, aber es wäre sicher hilfreich, wenn zumindest im Fhem-Wiki direkt über den Beispielen ein Hinweis oder Link auf ein "How-To import Beispiel" was selbst ein Wiki-Artikel wert wäre.
@en-trust, Finger weg von der fhem.cfg :). Es gibt keinen Grund als Anfänger hier zu editieren. Für den Fall, dass du die Definition hast, z. B. aus dem Wiki, hast du in jedem Device ganz unten den Link "Raw Definition". Dort kannst du die Beispiele direkt reinposten, beim Speichern wird ein Syntax-Check gemacht. Dann siehst du viel früher ob irgend was falsch ist. Zumindest Klammern oder grunlegende Sachen.
Der Hinweis zur Raw Def ist ja schon gekommen ;D
Angelernt ist (ich hasse englische Worte die irgendwie deutsch dekliniert werden) bzw. pairing ist erfolgreich, wenn in den Readings die Werte der hmId sauber bei PairedTo drin stehen.
Ich möchte an der Stelle auch hmInfo empfehlen, bitte definieren und configcheck machen. Dann die Fehler abarbeiten 8)
Aber ist alles kein Zwang, vor allem nicht für den Fall. 8)
Gruß Otto
Fehlermeldung ist jetzt weg aber eine Meldung bekomm ich ich nicht. Bekomme ich bei diesem notify die Meldung dann sobald der Status eintrifft? Dann müsste ich ja doch eine tgl Prüfung einbauen denn ich kann ja mal die Meldung übersehen.
Du bist irgendwie lustig. Du willst doch eine Meldung wenn eine Batterie tot ist. Solange wie keine tot ist gibt es auch keine Meldung. Wenn Du das battery reading nicht mit event-on-change-reading maskiert hast, bekommst Du dann jedes mal wenn das Gerät die readings aktualisiert eine Nachricht, es wird dich schon nerven.
Warmen Sonntag noch
Otto