ich bekomme es leider nicht auf kette denn Code statt mit Pushover sondern mit pushbullet zu versenden , ich hatte schon 1zu1 getauscht aber es hatte nicht funktioniert.
hat jemand das ganze schon umgesetzt.
lg fu
#Pushover-Benachrichtigung bei leeren Batterien
define BatteryLowPushover at *19:00:00 { if ( $mday <= 6 && $wday == 0 )\
{if (ReadingsVal("AZ.Fenster.Geschlossen", "battery", "-1") eq "low")\
{fhem ("set PushoverJayFHEM msg 'Arbeitszimmer Fenster' 'Bitte Batterie tauschen' '' 0 ''")}\
};;\
{if (ReadingsVal("BZ.Fenster.Geschlossen", "battery", "-1") eq "low")\
{fhem ("set PushoverJayFHEM msg 'Badezimmer Fenster' 'Bitte Batterie tauschen' '' 0 ''")}\
};;\
{if (ReadingsVal("BZ.KlimaClimate", "battery", "-1") eq "low")\
{fhem ("set PushoverJayFHEM msg 'Badezimmer Klimasensor' 'Bitte Batterie tauschen' '' 0 ''")}\
};;\
{if (ReadingsVal("BZ.Tuer.Geschlossen", "battery", "-1") eq "low")\
{fhem ("set PushoverJayFHEM msg 'Badezimmer Tür' 'Bitte Batterie tauschen' '' 0 ''")}\
};;\
{if (ReadingsVal("FL.Tuerschloss", "battery", "-1") eq "low")\
{fhem ("set PushoverJayFHEM msg 'Flur Türschloss' 'Bitte Batterie tauschen' '' 0 ''")}\
};;\
}
Hi,
was genau ist denn das Problem? Was sagt das log?
Grüße,
Oli
hi das Problem ist das ich nur pushbullet nutze, aber er nichts versendet
auch wenn ich mich wiederhole... Was sagt das Log? Funktioniert pushbullet generell? Ist PushoverJayFHEM dein Pushbullet-Device? (Dann denke mal über die Benamsung nach)
sorry ich stelle mich immer etwas an mit dem log, Pushbullet funktioniert ich pushe schon eine andere sache und die kommt sauber an.
jetzt wollte ich diesen code als batterieüberwachung nutzen aber der versendet nur mit Pushover wie man in dem code oben sieht.
das ist der den ich gerne benutzen würde.
{ {if (ReadingsVal("ESPEasy_ESP_Ella:", "batteryLevel", "-1") eq "low")\
{fhem ("set Push message 'Ella' 'Bitte Batterie tauschen' '' 0 ''")}\
};;\
{if (ReadingsVal("ESPEasy_ESP_Mia", "batteryLevel", "-1") eq "low")\
{fhem ("set Push message 'Badezimmer Fenster' 'Bitte Batterie tauschen' '' 0 ''")}\
};;\
{if (ReadingsVal("ESPEasy_ESP_gast", "batteryLevel", "-1") eq "low")\
{fhem ("set Push message 'Badezimmer Klimasensor' 'Bitte Batterie tauschen' '' 0 ''")}\
};;\
{if (ReadingsVal("ESPEasy_ESP_Schlafzimmer", "batteryLevel", "-1") eq "low")\
{fhem ("set Push message 'Badezimmer Tür' 'Bitte Batterie tauschen' '' 0 ''")}\
};;\
{if (ReadingsVal("ESPEasy_ESP_bad", "batteryLevel", "-1") eq "low")\
{fhem ("set Push message 'Flur Türschloss' 'Bitte Batterie tauschen' '' 0 ''")}\
}
}
da mekert er rum das :
dif_Batteriewarnung DOIF: no left bracket of condition: { {if (ReadingsVal("ESPEasy_ESP_Ella:", "batteryLevel", "-1") eq "low")\ {fhem ("set Push message 'Ella' 'Bitte Batterie tauschen' '' 0 ''")}\ };;\ {if (ReadingsVal("ESPEasy_ESP_Mia", "batteryLevel", "-1") eq "low")\ {fhem ("set Push message 'Badezimmer Fenster' 'Bitte Batterie tauschen' '' 0 ''")}\ };;\ {if (ReadingsVal("ESPEasy_ESP_gast", "batteryLevel", "-1") eq "low")\ {fhem ("set Push message 'Badezimmer Klimasensor' 'Bitte Batterie tauschen' '' 0 ''")}\ };;\ {if (ReadingsVal("ESPEasy_ESP_Schlafzimmer", "batteryLevel", "-1") eq "low")\ {fhem ("set Push message 'Badezimmer Tür' 'Bitte Batterie tauschen' '' 0 ''")}\ };;\ {if (ReadingsVal("ESPEasy_ESP_bad", "batteryLevel", "-1") eq "low")\ {fhem ("set Push message 'Flur Türschloss' 'Bitte Batterie tauschen' '' 0 ''")}\ } }
in welchen log soll ich nachschauen?
Nun, das ist doch schon hilfreicher :-) Die Fehlermeldung ist ja ziemlich eindeutig... Die Syntax des DOIF passt nicht, sowohl die Bedingung als auch der Ausführungsteil müssen immer von runden Klammern umschlossen sein.
ok danke hat geklappt das er es annimmt aber im log steht nichts und ankommen tut auch nichts.
({if (ReadingsVal("ESPEasy_ESP_Ella:", "batteryLevel", "-1") eq "low")
{fhem ("set Push message 'Ella' 'Bitte Batterie tauschen' '' 0 ''")}
};;
{if (ReadingsVal("ESPEasy_ESP_Mia", "batteryLevel", "-1") eq "low")
{fhem ("set Push message 'Badezimmer Fenster' 'Bitte Batterie tauschen' '' 0 ''")}
};;
{if (ReadingsVal("ESPEasy_ESP_gast", "batteryLevel", "-1") eq "low")
{fhem ("set Push message 'Badezimmer Klimasensor' 'Bitte Batterie tauschen' '' 0 ''")}
};;
{if (ReadingsVal("ESPEasy_ESP_Schlafzimmer", "batteryLevel", "-1") eq "low")
{fhem ("set Push message 'Badezimmer Tür' 'Bitte Batterie tauschen' '' 0 ''")}
};;
{if (ReadingsVal("ESPEasy_ESP_bad", "batteryLevel", "-1") eq "low")
{fhem ("set Push message 'Flur Türschloss' 'Bitte Batterie tauschen' '' 0 ''")}
})
Auszug aus dem Eventmonitor
2018-01-07 12:25:31 DOIF dif_Batteriewarnung cmd_nr: 1
2018-01-07 12:25:31 DOIF dif_Batteriewarnung cmd: 1
2018-01-07 12:25:31 DOIF dif_Batteriewarnung cmd_event: set_cmd_1
2018-01-07 12:25:31 DOIF dif_Batteriewarnung cmd_1
2018-01-07 12:25:31 DOIF dif_Batteriewarnung delayCounter: 2
Die geschweiften Klammern stimmen so auch nicht... Warum verwendest du überhaupt so viel perl? Das ist bei FHEM Kommandos nicht notwendig (und macht die Klammerung nicht einfacher)
;D ich bin nur auf das gestoßen, ich möchte wen der wert der Batterie von 3.3v unterschritten wird einfach eine Push nachricht via Pushbullet haben, aber ich glaube das ich etwas unfähig bin :/
Zitat von: mynameisfu am 07 Januar 2018, 12:50:34
;D ich bin nur auf das gestoßen, ich möchte wen der wert der Batterie von 3.3v unterschritten wird einfach eine Push nachricht via Pushbullet haben, aber ich glaube das ich etwas unfähig bin :/
Glaub ich nicht.
Ich hatte das Problem auch mit Pushbullet.
Bei mir kam es nur bis zu Webseite, aber am Smartphone nie angekommen.
Bin jetzt zu Pushover gewechselt, Kostet zwar einmalig ein paar Euro, aber dafür funktioniert es.
Probier's mal so ungefähr
([ESPEasy_ESP_Ella:batteryLevel] eq "low")
(set Push message 'Ella' 'Bitte Batterie tauschen')
DOELSEIF (..)
Wenn's nicht funktioniert bitte ein komplettes list des doifs (list <devicename> in der Kommandozeile,
Grüße,
Oli
hi das ist mir wirklich unangenehm aber wenn ich list <dif_Batteriewarnung> in die Komandozeile eingebe dan kommt nichts :/
der Push löst nicht automatisch aus sondern nur sen ich ihn mit set cmd1 auslöse. sorry für meine inkompetens.
lg Fu
defmod dif_Batteriewarnung DOIF ([ESPEasy_ESP_Ella:batteryLevel] eq "low")\
(set Push message 'Ella' 'Bitte Batterie tauschen')\
([ESPEasy_ESP_Mia:batteryLevel] eq "low")\
(set Push message 'Mia' 'Bitte Batterie tauschen')\
([ESPEasy_ESP_gast:batteryLevel] eq "low")\
(set Push message 'Gast' 'Bitte Batterie tauschen')\
([ESPEasy_ESP_bad:batteryLevel] eq "low")\
(set Push message 'Bad' 'Bitte Batterie tauschen')\
([ESPEasy_ESP_Schlafzimmer:batteryLevel] eq "low")\
(set Push message 'Schlafzimmer' 'Bitte Batterie tauschen')\
DOELSEIF (..)
attr dif_Batteriewarnung userattr delayCounter
attr dif_Batteriewarnung delayCounter 2
attr dif_Batteriewarnung do always
attr dif_Batteriewarnung notexist "novalue"
attr dif_Batteriewarnung userReadings delayCounter { AttrVal($name,"delayCounter",0);; }
setstate dif_Batteriewarnung cmd_1
setstate dif_Batteriewarnung 2018-01-07 01:57:07 Mi_Vacuum ok
setstate dif_Batteriewarnung 2018-01-07 17:49:11 cmd 1.9
setstate dif_Batteriewarnung 2018-01-07 17:49:11 cmd_event set_cmd_1
setstate dif_Batteriewarnung 2018-01-07 17:49:11 cmd_nr 1
setstate dif_Batteriewarnung 2018-01-07 17:49:11 cmd_seqnr 9
setstate dif_Batteriewarnung 2018-01-07 17:49:11 delayCounter 2
setstate dif_Batteriewarnung 2018-01-07 17:49:11 state cmd_1
ich hoffe das hilft irgendwie :D
du musst list dif_Batteriewarnung
eingeben ;-)
und du musst dir wirklich mal die sehr umfangreiche DOIF-Doku in der commandref ansehen, sonst wird das nix...
Grüße,
Oli
wird erledigt :D wenn ich etwas zeit finde.
Internals:
DEF ([ESPEasy_ESP_Ella:batteryLevel] eq "low")
(set Push message 'Ella' 'Bitte Batterie tauschen')
([ESPEasy_ESP_Mia:batteryLevel] eq "low")
(set Push message 'Mia' 'Bitte Batterie tauschen')
([ESPEasy_ESP_gast:batteryLevel] eq "low")
(set Push message 'Gast' 'Bitte Batterie tauschen')
([ESPEasy_ESP_bad:batteryLevel] eq "low")
(set Push message 'Bad' 'Bitte Batterie tauschen')
([ESPEasy_ESP_Schlafzimmer:batteryLevel] eq "low")
(set Push message 'Schlafzimmer' 'Bitte Batterie tauschen')
DOELSEIF (..)
NAME dif_Batteriewarnung
NR 1023
NTFY_ORDER 50-dif_Batteriewarnung
STATE cmd_1
TYPE DOIF
Readings:
2018-01-07 20:20:05 Device ESPEasy_ESP_Ella
2018-01-07 01:57:07 Mi_Vacuum ok
2018-01-07 17:49:11 cmd 1.9
2018-01-07 17:49:11 cmd_event set_cmd_1
2018-01-07 17:49:11 cmd_nr 1
2018-01-07 17:49:11 cmd_seqnr 9
2018-01-07 20:20:05 delayCounter 2
2018-01-07 20:20:05 e_ESPEasy_ESP_Ella_batteryLevel 4.00
2018-01-07 17:49:11 state cmd_1
Condition:
0 ReadingValDoIf($hash,'ESPEasy_ESP_Ella','batteryLevel') eq "low"
1 ..
Devices:
0 ESPEasy_ESP_Ella
all ESPEasy_ESP_Ella
Do:
0:
0 set Push message 'Ella' 'Bitte Batterie tauschen'
1 [ESPEasy_ESP_Mia:batteryLevel] eq "low"
2 set Push message 'Mia' 'Bitte Batterie tauschen'
3 [ESPEasy_ESP_gast:batteryLevel] eq "low"
4 set Push message 'Gast' 'Bitte Batterie tauschen'
5 [ESPEasy_ESP_bad:batteryLevel] eq "low"
6 set Push message 'Bad' 'Bitte Batterie tauschen'
7 [ESPEasy_ESP_Schlafzimmer:batteryLevel] eq "low"
8 set Push message 'Schlafzimmer' 'Bitte Batterie tauschen'
1:
0
2:
Helper:
event absent
globalinit 1
last_timer 0
sleeptimer -1
triggerDev ESPEasy_ESP_Ella
triggerEvents:
absent
triggerEventsState:
state: absent
Internals:
Itimer:
Readings:
0 ESPEasy_ESP_Ella:batteryLevel
all ESPEasy_ESP_Ella:batteryLevel
Regexp:
0:
1:
All:
State:
State:
Trigger:
Attributes:
delayCounter 2
do always
notexist "novalue"
userReadings delayCounter { AttrVal($name,"delayCounter",0); }
userattr delayCounter
ich habe es jetzt mal zum testen einfach mal so gemacht.
(["ESPEasy_ESP_Ella:batteryLevel"] < 3.5 ) (set Push message 'Ella' 'Bitte Batterie tauschen')
dadurch das es ein Paar viele Tage dauert ehe ich die batterie runter habe hab ich es mal mit dem unteren code zum testen gemacht, da habe ich aber das Problem das er permanent Push Narichten Versendet.
(["Terrasse"] .*ON ) (set Push message 'Ella' 'Bitte Batterie tauschen')
der push kommt also funktioniren
oder habe ich einen Denkfehler, aber wen zb die temperatur auf unter 3.3 geht dann Triggert er doch auch permanent oder?
LG Fu
du kannst beim auslösendem Device das Attribut event-on-change-reading setzen, dann wird nur getriggert, wenn es sich ändert (also im Batterie-Fall - wenn er einmal auf low ist, bleibt er da wohl auch und es werden keine neuen Events generiert)
Oder: Du nimmst das "do always" im DOIF raus, dann wird das DOIF auch nur ausgeführt, wenn zwischendrin eine Änderung stattgefunden hat
hi er sendet mir jetzt nur noch 3 Nachrichten pro Auslöser :D