[Gelöst] Wenn die Akkuspannung zu niedrig ist Notify per TeleBot

Begonnen von Gear, 17 März 2018, 03:26:59

Vorheriges Thema - Nächstes Thema

Gear

Guten Morgen Zusammen,

ich verzweifle gerade mit meinem ersten Notify.
Ich habe aktuell einen NodeMCU mit nem LiPo Akku um Temperaturen zu messen.

Nun möchte ich mir gerne per TeleBot eine MSG zukommenlassen, wenn der Akku z.B. 3,5V erreicht.
Der NodeMCU ist im DeepSleep und wacht alle 5 Minuten auf und überträgt die Daten.

Nun will ich das ganze gerne so einrichten, dass ich eine Nachricht bekomme, wenn der Akku die Spannung erreicht hat, aber nicht alle 5 Minuten.
Wünschenswert wäre ich das so einrichten könnte:

Ich würde gerne ein Flag haben, wenn der Akku 3,5V erreicht, dann soll das Flag gesetzt werden, erst wenn die Akkuspannung wieder über 4,1V steigt, dann soll das Flag wieder deaktiviert werden.
Bei Auslösung des Flag hätte ich gerne eine Nachricht auf dem Handy via Telebot und dann möchte ich alle x Stunden eine Erinnerung, bis der Akku 4,1V erreicht hat.

Ich hoffe Ihr könnt mir weiterhelfen.

Grüße
Gear
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

MadMax-FHEM

#1
Hallo,

vielleicht hilft das:

https://forum.fhem.de/index.php?topic=68765.0

Oder hier "spicken" https://forum.fhem.de/index.php/topic,82637.0.html

Kurz da nur Handy...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Gear

> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

MadMax-FHEM

Warum?

Beides schafft was du willst...
...so wie ich deinen "Wunsch" gelesen hab...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Gear

#4
Weil ich das irgendwie nicht verstehe. =(

edit:
Aus einem anderen Beitrag:
Ich muss mich an dieser Stelle entschuldigen, ich habe eine Lese- Rechtschreibschwäche, die leider nicht behandelbar ist, da sie von einer Behinderung kommt.
Mir fällt es leider schwer mich in neue Themen einzuarbeiten, da es am Anfang wenn man neue ist, einfach zu viel ist für mich.
Ich kann solange ich etwas nicht richtig verstehe, dies auch nicht auf andere Anwendungsbereiche anwenden, da ich erstmal verstehen muss, wie das im Beispiel funktioniert und dann muss ich das irgendwie auf mein vorhaben anwenden. Leider verstehe ich manchmal die Beispiele nicht, dann fällt es mir schwer das in abgewandelter Form anzuwenden.
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

MadMax-FHEM

Aha.

Dafür, dass du dich schwer tust Dinge zu übertragen hast du einen ganz schön "komplexen" Wunsch...

Da würde ich halt erst mal "klein" anfangen...

Also EventMonitor und warten bis der Spannungs-Event kommt.

Dann die Zeile markieren und "modify/create", dann hast du schon mal den Notify den du brauchst...

Wenn du das hast, kannst du den Notify erweitern und erst mal nur eine Logausgabe machen:

define nNotify notify RegEx {Log3(undef, 3, "Das ist der Event $EVENT")}

Also nur ein "pseudo-Beispiel" hier geht es nur um die Logausgabe.

Dann sollte ja alle 5min die Ausgabe im Log erscheinen.

Wenn du das hast, dann kann man ja schrittweise weiter machen...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

CoolTux

Bitte mach mal ein list vom Device

Also oben in der FHEMWEB Eingabezeile list DEVICENAME eingeben.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Gear

@MadMax-FHEM
Werde ich gleich mal testen, Danke.  :)

@CoolThx
Hier ist das Akku Device:
Internals:
   IODev      mqtt
   NAME       WZ.MCU
   NR         43
   STATE      3.628 V
   TYPE       MQTT_DEVICE
   Helper:
     DBLOG:
       Akku:
         DBLogging:
           TIME       1521299081.85071
           VALUE      3.628
   READINGS:
     2018-03-17 16:04:41   Akku            3.628
     2018-03-17 16:04:41   transmission-state incoming publish received
   message_ids:
   sets:
   subscribe:
     /SH/W/WZ/MCU/Volt
   subscribeExpr:
     ^\/SH\/W\/WZ\/MCU\/Volt$
   subscribeReadings:
     /SH/W/WZ/MCU/Volt:
       cmd       
       name       Akku
Attributes:
   DbLogExclude .*
   DbLogInclude Akku
   IODev      mqtt
   room       50 Wohnzimmer
   stateFormat Akku V
   subscribeReading_Akku /SH/W/WZ/MCU/Volt
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

CoolTux

Nimm ein userReading dafür


userReadings batteryWarn:Akku:.* { if(ReadingsVal($name,'Akku',0) < 3.6) { 'low' } elsif(ReadingsVal($name,'Akku',0) > 4.1) { 'high' } }


Und dann halt ein Notify auf das Reading batteryWarn triggern lassen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Gear

Okey, das habe ich soweit verstanden und auch umgesetzt.
Nun habe ich im Notify unter Def folgendes:
WZ.MCU:batteryWarn:.low {}

Nun muss ich warscheinlich in die {} meinen Code reinschreiben, oder?
Ich gehe mal davon aus, es muss Perl sein?

Wenn ich darüber nachdenke, nun steht ja im userReading der Code der low oderr high in die Readings schreibt.
Wäre doch einfacher, wenn das Notify auch meine anderen geplanten Geräte auch gleich mitmacht.

Also würde ich das am besten so anlegen:
defmod AkkuCheck notify .*.MCU:Akku:.* {}

Dann würde ich hier in die {} folgenden machen:
- if else um die Akku Spannung festzustellen
- AkkuStatus (very low, low, ok, high) vergleichen ob der aktuelle AkkuStatus ungleich des gerade ermittelten AkkuStatus ist
-> Wenn ja, dann Nachricht per TeleBot, wenn eine hinterlegt ist
- ermittelten AkkuStatus dem Device hinterlegen

Somit wäre eine erneute Erinnerung bei very low ja auch mit drin.
Nun habe ich wenn das so funktioniert noch eine Frage oder zwei.  ;D
Wie genau sieht der Befehl aus um den AkkuStatus vom Device zu holen und wie der um ihn zu schreiben?
Wenn ich das richtig verstanden habe, dann ist die Akkuspannung im Notify folgende: ReadingsVal($name,'Akku',0)

Vielen Dank für die hilfe, ich glaube ich verstehe das langsam. *freu*  ;D ;D
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

CoolTux

Dann lege in alle anderen geplanten Geräte ein userReading an.
Auf Perlebene solltest Du nicht müssen. Du bekommst mit dem Event welches das Notify triggert das Device mit $NAME mit sowie das Event mit $EVENT und Teile vom Event.

defmod AkkuCheck notify .*.MCU:batteryWarn:.low set telebot msg Achtung Batteriemeldung, $NAME meldet nur [$NAME:Akku] V


Bitte den Code natürlich korrekt anpassen für Dein Telepot

Du musst nicht noch mal irgendwas ermitteln, das Notify triggert ja sofort.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Gear

Ich muss aber etwas machen, sonst bekomme ich doch dann alle 5min eine Nachricht aufs Handy oder?
Zudem muss ich ja das userReading in jedes Device mit Akku reinschreiben oder?
Wenn das alles das Notify macht, dann müsste ich im endeffekt ja nur noch das Device anlegen, bzw. es legt sich ja selber an.
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

CoolTux

Nein bekommst Du eben nicht.
Ok Du musst natürlich am Device selber am besten event-on-change-reading setzen. Aber ansonsten reicht das userReading.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Gear

Ok, das funktioniert soweit.
Vielen Dank!! =D

Nun noch eine Frage zu Notify, die die Tage auch noch aufkommen wird.
Wenn ich mal anhand das Beispiel hier, das so machen möchte, dass wenn die Akkuspannung aktualisiert wird, ein Notify ausgelöst wird.
Wie bekomme ich im Notify die Readings und wie kann ich Readings ändern, bzw. anlegen und überprüfen ob ein Reading angelegt ist und wenn nicht, dieses dann anlegen um einen Fehler vorzubeugen?
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

CoolTux

Wenn du das Reading abfragen möchtest auf das Du eh beim Notify triggert so ist der Wert vom Reading Teil des Events.
Schau dir den Eventmonitor an.

Wenn du ein Reading abfragen willst nimmst du innerhalb eines Set Befehles [DEVICE:READING] oder wenn es kein set Befehl ist nimmst du die Funktion ReadingsVal() dazu musst Du natürlich in Perl gehen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net