Hallo alle zusammen,
ich benötige mal ein bisschen Hilfe. Ich habe folgendes Problem.
Ich will den Mailversand bei Batterie low testen. Dazu versuche ich das attribute battery:ok auf low zu triggern.
ich benutze den Befehl..
<trigger Balkon battery:low 1200> die 1200 steht für 1200 sekunden.
Nur leider funktioniert das nicht. das batterie attribut wird nicht beinflusst.
was mache ich da falsch ? ???
vielen Dank schon mal
Beste Grüße
Funeddy
Es ist vermutlich kein Attribut sondern ein Reading... ;)
Trigger hab ich noch nicht benutzt, du kannst aber auch einfach mal mit setreading das Battery Reading auf low setzten (wird ja entweder vom Gerät wieder korrekt gesetzt oder du setzt es per setreading einfach wieder zurück auf ok [vermute ich])
Also:
setreading DeviceName ReadingName low
Poste doch mal ein list des Gerätes:
list DeviceName
Also bei dir vermutlich:
list Balkon
EDIT: und bitte in "code-Tags" (das '#' im "Menü"). Und vielleicht auch gleich vom Notify oder DOIF das du zum Verschicken der e-Mail nutzt...
Gruß, Joachim
hallo Joachim,
setreading funktioniert, nur mein Mailversand noch nicht. Kann ich das Reading für eine gwisse Zeit auf low setzen.
Dankeschön
VG Joerg
Hallo Joerg,
nicht mit setreading...
Aber setze es halt einfach wieder manuell mit setreading (nach der Zeit die du willst) auf ok zurück...
Und dann noch mal auf low...
Und poste doch mal was ich "verlangt" habe sonst kann ich (und auch andere) nicht (weiter) helfen...
Wenn es Fehler im fhem Log gibt, dann halt auch diese posten...
Gruß, Joachim
Ich benutze folgende Code zum Versenden der Email.
########### Beginn: BATTERIE STATUS von Homematic Aktoren ermitteln #########################
#Batterie Warung per Mail senden:
define n_batt_chk notify .*:[Bb]attery.* { if ($EVENT !~ m/ok/) { \
{ DebianMail(,Mailadresse@domain.de', ,FHEM Batteriewarnung', $NAME.': ,.$EVENT)};; \
Log 3, ,,$NAME : Batteriewarnung $EVENT";; \
} \
} #Batterie Status visuell darstellen:
#http://fhemwiki.de/wiki/ReadingsGroup#Auswahl_.C3.BCber_Reading-Namen.2C_Status_als_Symbol_dargestellt
define rg_battery readingsGroup .*:battery
attr rg_battery alias Batteriestatus
attr rg_battery commands { ,,battery.low" => ,,set %DEVICE replaceBatteryForSec 60" }
attr rg_battery room Gerätestatus
attr rg_battery valueIcon {,battery.ok' => ,batterie', ,battery.low' => ,batterie@red'}
########### ENDE: BATTERIE STATUS von Homematic Aktoren ermitteln #########################
Ist da was nicht okay ?
vielen dank VG Joerg
hier der list des Devices.
Internals:
DEF 40469E
HMLAN1_MSGCNT 16
HMLAN1_RAWMSG E40469E,0000,00FB940E,FF,FFCB,4DA64140469E32251E014C00
HMLAN1_RSSI -53
HMLAN1_TIME 2019-06-30 11:40:54
IODev HMLAN1
LASTInputDev HMLAN1
MSGCNT 16
NAME Balkon
NOTIFYDEV global
NR 51
NTFY_ORDER 50-Balkon
STATE closed
TYPE CUL_HM
lastMsg No:4D - t:41 s:40469E d:32251E 014C00
protLastRcv 2019-06-30 11:40:54
protRcv 16 last_at:2019-06-30 11:40:54
protSnd 16 last_at:2019-06-30 11:40:54
protState CMDs_done
rssi_at_HMLAN1 cnt:16 min:-58 max:-52 avg:-53.37 lst:-53
READINGS:
2019-06-30 10:27:08 Activity alive
2016-06-19 09:50:01 CommandAccepted yes
2016-06-19 09:50:14 D-firmware 2.4
2016-06-19 09:50:14 D-serialNr MEQ1591841
2019-06-29 15:17:05 PairedTo 0x32251E
2016-06-19 09:50:07 R-cyclicInfoMsg off
2016-06-19 09:50:07 R-eventDlyTime 0 s
2016-06-19 09:50:07 R-pairCentral 0x32251E
2016-06-19 09:50:07 R-sabotageMsg on
2016-06-19 09:50:07 R-sign off
2019-06-29 15:17:05 RegL_00. 02:01 09:00 0A:32 0B:25 0C:1E 10:01 14:06 00:00
2019-06-29 15:17:06 RegL_01. 08:00 20:60 21:00 22:64 30:06 00:00
2019-06-29 15:17:11 alive yes
2019-06-30 11:42:14 battery low
2019-06-30 11:40:54 contact closed (to HMLAN1)
2019-06-29 15:16:36 powerOn 2019-06-29 15:16:36
2019-06-29 15:17:11 recentStateType info
2019-06-29 15:17:11 sabotageError off
2019-06-30 11:40:54 state closed
2019-06-30 11:40:54 trigDst_32251E noConfig
2019-06-30 11:40:54 trigger_cnt 76
helper:
HM_CMDNR 77
mId 00B1
regLst ,0,1,4p
rxType 28
supp_Pair_Rep 0
expert:
def 1
det 0
raw 1
tpl 0
io:
newChn +40469E,00,00,00
nextSend 1561887654.85907
prefIO
rxt 2
vccu
p:
40469E
00
00
00
mRssi:
mNo 4D
io:
HMLAN1:
-47
-47
prt:
bErr 0
sProc 0
sleeping 0
rspWait:
q:
qReqConf
qReqStat
role:
chn 1
dev 1
rpt:
IO HMLAN1
flg A
ts 1561887654.77472
ack:
HASH(0x1765ff0)
4D800232251E40469E0101C800
rssi:
at_HMLAN1:
avg -53.375
cnt 16
lst -53
max -52
min -58
Attributes:
IODev HMLAN1
actCycle 028:00
actStatus alive
autoReadReg 4_reqStatus
expert 2_raw
firmware 2.4
fp_Grundriss 425,391,1,Balkon
model HM-SEC-SC-2
peerIDs 00000000,
room Wohnzimmer
serialNr MEQ1591841
subType threeStateSensor
hier noch mein Code aus der fhem.cfg
ich habe die Mailaddresse und die FHEM bateriewarnung wie folgt getzt.
"joergdoege\@t-online.de", "FHEM Batteriewarnung"
vielen Dank VG Joerg
wenn ich dann Mail versand in der Commando zeile Teste funktiert der Mailversand.
VG Joerg
Mit was für einem Editor editierst du in der cfg!?
Weil z.B. folgendes wird vermutlich Probleme machen wird:
Um die Mailadresse die "einfachen Anführungszeichen" weil eines "unten" und eines "oben" wird wohl problematisch werden...
Sind Fehler im fhem Log!?
Gruß, Joachim
Was exakt hast du in fhem-Web eingegeben!?
Besser KEINE Auszüge aus der cfg sondern lists...
Geht auch für Notify, readingsGroup, DOIF, ...
EDIT: das hier kennst du https://forum.fhem.de/index.php/topic,82637.msg747514.html#msg747514
EDIT2: evtl. mal ins Notify eine Logausgabe einbauen, damit du siehst, ob es triggert (also ausgelöst wird)...
Gruß, Joachim
ich habe kein Notify erstellt und ich glaube das dies das Problem ist. Ich bin davon ausgegangen das dies in der fhem.cfg gemacht wird.
Das werde ich mir mal anlesen müssen.
VG Joerg
Hallo Joerg,
also in dem was du gepostet hast war eins drin:
Zitatdefine n_batt_chk notify .*:[Bb]attery.* {
Gruß, Joachim
also hatte ich recht das das Notify erstellt worden ist.
hier die Fehlermeldung aus dem Logfile
2019.06.30 12:57:40 1: ERROR evaluating my $SELF='n_batt_chk';my $EVTPART0='battery:';my $NAME='Balkon';my $TYPE='CUL_HM';my $EVENT='battery: ok';my $EVTPART1='ok';{ if ($EVENT !~ m/ok/) {
{ FB_mail('joergdoege@t-online.de', 'FHEM Batteriewarnung', $NAME.': '.$EVENT)};
Log 3, "$NAME : Batteriewarnung $EVENT";
}
: Missing right curly or square bracket at (eval 2899) line 5, at end of line
syntax error at (eval 2899) line 5, at EOF
ich denke mal irgendwo in meinem code ist der fehler begraben.
VG Joerg
ich habe den Code direkt in die Fhem config eingeben. Also in fhem. Wenn ich mir die fhem.cfg mit vi anschaue, sieht alles okay aus.
VG Joerg
Es fehlt aber ein } am Ende, oder es gibt ein { zu viel vor "if"
Hallo Joerg,
ich würde ganz schnell davon Abstand nehmen mit irgendeinem Editor in der fhem.cfg zu editieren... ;)
Gruß, Joachim
jetzt sieht der Code so aus. Aber es funktioniert trotzdem nicht.
define n_batt_chk notify .*:[Bb]attery.* { if ($EVENT !~ m/ok/) }{ \
{ FB_mail('joergdoege@t-online.de', 'FHEM Batteriewarnung', $NAME.': '.$EVENT)};; \
Log 3, "$NAME : Batteriewarnung $EVENT";; \
}\
VG Joerg
Habe den Code noch auf meine Subroutine für email angepasst. Jetzt sollte es eigentlich laufen. Aber es funtzt immer noch nicht.
define n_batt_chk notify .*:[Bb]attery.* { if ($EVENT !~ m/ok/) }{ \
{ Debianmail('joergdoege@t-online.de', 'FHEM Batteriewarnung', $NAME.': '.$EVENT)};; \
Log 3, "$NAME : Batteriewarnung $EVENT";; \
}\
siehst du in dem Code noch einen fehler, wenn ich die mail aus der commandozeile sende, funktioniert es.
VG Joerg
Hallo Joerg,
steht denn die Logausgabe im fhem Log beim Wechsel von ok auf low?
Funktioniert denn:
{FB_mail('joergdoege@t-online.de', 'FHEM Batteriewarnung', $NAME.': '.$EVENT)}
In der fhem-Web-Eingabe!?
Gruß, Joachim
Hallo Joerg,
wenn du schreibst "wenn ich das in die Commandozeile..."
Bitte posten was genau du in fhem-Web eingibst sonst wissen wir nicht was du tust und was geht...
Öffne in einem weiteren Tab mal den Eventmonitor und poste mal was beim Wechsel von ok auf low dort kommt...
Lass evtl. (erst mal) das if usw. weg...
EDIT: also so define n_batt_chk notify .*:[Bb]attery.* {Debianmail('joergdoege@t-online.de', 'FHEM Batteriewarnung', $NAME.': '.$EVENT)}
Gruß, Joachim
Zitat von: funeddy am 30 Juni 2019, 13:56:09
define n_batt_chk notify .*:[Bb]attery.* { if ($EVENT !~ m/ok/) }{ \
{ Debianmail('joergdoege@t-online.de', 'FHEM Batteriewarnung', $NAME.': '.$EVENT)};; \
Log 3, "$NAME : Batteriewarnung $EVENT";; \
}\
siehst du in dem Code noch einen fehler, wenn ich die mail aus der commandozeile sende, funktioniert es.
VG Joerg
Ja, ich sehe noch einen Fehler. Syntax für if in Perl ist:
if (Bedingung) { Befehle }
und nicht
if (Bedingung) } { Befehle }
ich versende die Mail mit folgendem Befehl über Fhem web.
{DebianMail('joergdoege@t-online.de','Betreff','Test')}
das funktioniert, die Sub routine in der 99_myUtils.pm funktioniert also.
Im log des gerätes kann ich sehen das battery auf low steht wenn ich setreading abgestzt habe. Das funktioniert auch.
habe auch den code ohne if in der Fhem.cfg ausprobiert. Da passiert ebenfalls nix.
define n_batt_chk notify .*:[Bb]attery.* {Debianmail('joergdoege@t-online.de', 'FHEM Batteriewarnung', $NAME.': '.$EVENT)}
gruß joerg
Poste bitte das Ergebnis von
list n_batt_chk
und auch ein "list" von einem Device mit Battery, das überwacht werden muss (aktuell, nachdem Du die Definition des notify geändert hast)
EDIT: und ich würde am Ende eher so schreiben:
, "$NAME : $EVENT")}
hier das list vom Notify
DEF .*:[Bb]attery.* if ($EVENT !~ m/ok/) {
{ DebianMail('joergdoege@t-online.de', 'FHEM Batteriewarnung', $NAME.': '.$EVENT)};
Log 1, "$NAME : Batteriewarnung $EVENT";
}
NAME n_batt_chk
NR 158
NTFY_ORDER 50-n_batt_chk
REGEXP .*:[Bb]attery.*
STATE 2019-06-30 14:30:48
TRIGGERTIME 1561897848.47783
TYPE notify
READINGS:
2019-06-30 14:27:58 state active
Attributes:
und hier das List vom gerät
Internals:
DEF 40469E
IODev HMLAN1
NAME Balkon
NOTIFYDEV global
NR 51
STATE IOerr
TYPE CUL_HM
READINGS:
2019-06-30 14:28:03 Activity alive
2016-06-19 09:50:01 CommandAccepted yes
2016-06-19 09:50:14 D-firmware 2.4
2016-06-19 09:50:14 D-serialNr MEQ1591841
2019-06-29 15:17:05 PairedTo 0x32251E
2016-06-19 09:50:07 R-cyclicInfoMsg off
2016-06-19 09:50:07 R-eventDlyTime 0 s
2016-06-19 09:50:07 R-pairCentral 0x32251E
2016-06-19 09:50:07 R-sabotageMsg on
2016-06-19 09:50:07 R-sign off
2019-06-29 15:17:05 RegL_00. 02:01 09:00 0A:32 0B:25 0C:1E 10:01 14:06 00:00
2019-06-29 15:17:06 RegL_01. 08:00 20:60 21:00 22:64 30:06 00:00
2019-06-29 15:17:11 alive yes
2019-06-30 14:28:18 battery low
2019-06-30 14:21:25 contact closed (to HMLAN1)
2019-06-29 15:16:36 powerOn 2019-06-29 15:16:36
2019-06-29 15:17:11 recentStateType info
2019-06-29 15:17:11 sabotageError off
2019-06-30 14:22:25 state IOerr
2019-06-30 14:21:25 trigDst_32251E noConfig
2019-06-30 14:21:25 trigger_cnt 90
helper:
HM_CMDNR 161
mId 00B1
regLst ,0,1,4p
rxType 28
expert:
def 1
det 0
raw 1
tpl 0
io:
newChn +40469E,00,00,00
prefIO
rxt 2
vccu
p:
40469E
00
00
00
mRssi:
mNo
prt:
bErr 0
sProc 0
q:
qReqConf
qReqStat
role:
chn 1
dev 1
Attributes:
IODev HMLAN1
actCycle 028:00
actStatus alive
autoReadReg 4_reqStatus
expert 2_raw
firmware 2.4
fp_Grundriss 425,391,1,Balkon
model HM-SEC-SC-2
peerIDs 00000000,
room Wohnzimmer
serialNr MEQ1591841
subType threeStateSensor
ersteinmal vielen Dank für die Hilfe.
VG Joerg
DU hast bestimmt in Log "n_batt_chk return value: IF: no left bracket: {}"
Dein notify ist auf Perl Ebene. Dann musst Du mit { anfangen (vor dem if) und da Du dann ein zusätzliches { haben wirst, musst Du es am Ende auch zusätzlich schliessen
jetzt sieht der Code so aus.
define n_batt_chk notify .*:[Bb]attery.* { if ($EVENT !~ m/ok/)}
habe mal probiert im Notify diesen code zu speichern, da kommt ein systax error zurück.
VG Joerg
Ja klar, Du hast eine if (Bedingung), aber kein {Befehl}
der komplette im DEF vom Notify code sieht so aus.
.*:[Bb]attery.* {if ($EVENT !~ m/ok/)}{
{ DebianMail('joergdoege@t-online.de', 'FHEM Batteriewarnung', $NAME.': '.$EVENT)};
Log 1, "$NAME : Batteriewarnung $EVENT";
}
ist das richtig. wenn ich abspeichern will, gibt es trotzdem einen Syntaxfehler
Und das ist immer noch falsch. Siehe https://forum.fhem.de/index.php/topic,101893.msg953969.html#msg953969
Gehen wir mal im Detail durch:
define n_batt_chk notify .*:[Bb]attery.*
Bisher alles gut. Es wird ein notify definiert, und der Trigger davon ist .*:[Bb]attery.*
{
Hier fängt an, was der notify auf Perl Ebene machen muss, wenn getriggert
if ($EVENT !~ m/ok/)
Anfang eines Perl-if...
}
Hier endet, was der notify machen muss, obwohl der if noch nicht vollständig ist
{
{ DebianMail('joergdoege@t-online.de', 'FHEM Batteriewarnung', $NAME.': '.$EVENT)};
Log 1, "$NAME : Batteriewarnung $EVENT";
}
Dieses Block gehört nichts und hängt in der Luft
kannst du mir das mal bitte in einen codeschnipsel schreiben also ungefähr so
define n_batt_chk notify .*:[Bb]attery.* { if ($EVENT !~ m/ok/) { \
{ DebianMail('recipient@internet.de', 'FHEM Batteriewarnung', $NAME.': '.$EVENT)};; \
Log 3, "$NAME : Batteriewarnung $EVENT";; \
} \
}
vielen dank VG Joerg
So sieht es schon besser aus.
Ich habe mich mittlerweile zu einer anderen Lösung entschieden. Den Code dazu werde ich in ein paar Stunden posten.
Der Mailversand funktioniert jetzt. Habe es gerade ausgetestet.
vielen Dank für die gute Unterstützung.
VG Joerg
Hier nun der Code den ich jetzt verwende, ....
define BatteryLowDebianMail at *20:00:00 { if ( $mday <= 6 && $wday == 1 )\
{if (ReadingsVal("Balkon", "battery", "-1") eq "low")\
{DebianMail('joergdoege@t-online.de','Balkon Batterie','Batterie ist schwach bitte tauschen','');;}\
};;\
{if (ReadingsVal("EingangsBereich", "battery", "-1") eq "low")\
{DebianMail('joergdoege@t-online.de','EingangsBereich Batterie','Batterie ist schwach bitte tauschen','');;}\
};;\
{if (ReadingsVal("HMremote", "battery", "-1") eq "low")\
{DebianMail('joergdoege@t-online.de','HM Fernbedienung Batterie','Batterie ist schwach bitte tauschen','');;}\
};;\
{if (ReadingsVal("HM_Sirene_innen", "battery", "-1") eq "low")\
{DebianMail('joergdoege@t-online.de','HM Sirene Batterie','Batterie ist schwach bitte tauschen','');;}\
};;\
{if (ReadingsVal("Klingelsensor", "battery", "-1") eq "low")\
{DebianMail('joergdoege@t-online.de','Klingelsensor Batterie','Batterie ist schwach bitte tauschen','');;}\
};;\
}
Das funzt einwandfrei.
und noch mal vielen dank an alle die geholfen haben.
VG Joerg
Schön, wenn es geht...
Musst halt immer für neue Geräte erweitern/anpassen...
Ging vielleicht unter ;)
Aber das hier wäre "generisch": https://forum.fhem.de/index.php/topic,82637.msg747514.html#msg747514
Viel Spaß noch, Joachim