Ich suche derzeit nach einer Möglichkeit, den Batteriestatus im Shelly flood auslesen zu können.
Nachfolgendes list zeigt mir leider den Batteriestatus nicht an. Ihn würde ich gerne bei Unterschreitung eines Schwellwertes "x" melden können.
Internals:
DEF 192.168.x.yyy
DURATION 0
FUUID 62137eed-f33f-aab4-0223-30aa72dbc8ff5c7c
INTERVAL 1
NAME Wassermelder
NR 523
STATE Error
TCPIP 192.168.2.189
TYPE Shelly
READINGS:
2022-02-21 13:04:52 cloud enabled(connected)
2022-02-21 13:01:13 firmware v1.11.8
2022-02-21 13:04:51 network <html>connected to <a href="http://192.168.x.yyy">192.168.x.yyy</a></html>
2022-02-21 13:04:48 state Error
Attributes:
devStateIcon on.*:black_Steckdose.on off.*:black_Steckdose.off
icon sani_water_tap
interval 1
room Heizung,Shelly-Devices
Hat dies Problem schon jemand gelöst - z.B. mit notyfy o.ä.
Hmm, irgendwie meinte ich mich zu entsinnen, dass pah der Ansicht war, sein Modul wäre nicht die optimale Lösung für Batterie-Gadgets...
Wie dem auch sei: Für die MQTT-Einbindung gab es hier mal eine ähnliche Diskussion betr. des Anschubsens von updates: https://forum.fhem.de/index.php/topic,106986.0.html
(Merke: Das ist der einzige Treffer mit shellyflood + notify...).
Oh Danke, hatte ich nicht gefunden.
BTW, MQTT habe ich noch nicht in meinem System und bin deshalb total ahnungslos.
Kann man MQTT auch nur für ein Device aktivieren?
Zitat von: uron am 21 Februar 2022, 13:43:28
Kann man MQTT auch nur für ein Device aktivieren?
Jein. Du brauchst immer einen Server (empfohlen: MQTT2_SERVER), aber dann geht es auch mit nur einem weiteren Stück Hardware wie dem Shellyflood. Mind. also zwei FHEM-Devices ;) .
könnte diesen MQTT-Server auf dem gleichen RasPi mit installieren, der mir auch als FHEM-Server dient.
Wenn das ginge, würde ich mich selbst um weitere Voraussetzungen kümmern und käme dem Thema MQTT endlich einmal näher!
Für Ungeduldige (und Einsteiger) geht das auch innerhalb von FHEM:
define MQTT2_FHEM_Server MQTT2_SERVER 1883 global
https://wiki.fhem.de/wiki/MQTT2-Module_-_Praxisbeispiele#Einf.C3.BChrung:_MQTT_bzw._MQTT2_in_FHEM
Im Shelly dann MQTT aktivieren und die IP-Adresse des FHEM-Servers als MQTT-Server eintragen, Port sollte passen.
Dann, wenn das MQTT2_DEVICE angelegt worden ist:
attr <device> attrTemplate shellyflood
Das scheint genau das Richtige für mich als Einsteiger zu sein - Danke vielmals!
Nun bin ich platt!
Die MQTT-Einrichtung hat super funktioniert und der Batteriestatus kann ausgelesen werden - nochmals Danke!
Zitat von: uron am 21 Februar 2022, 16:41:02
Nun bin ich platt!
Die MQTT-Einrichtung hat super funktioniert und der Batteriestatus kann ausgelesen werden - nochmals Danke!
:)
Danke für die Rückmeldung, freut mich, wenn es eine "angenehme Reise" war 8) . MQTT (bzw. die MQTT2-Module) ist halt ein Thema, in das man sich etwas eindenken muss und relativ viel Freiheit hat bei der Einrichtung, aber wenn es mal "geschnackelt" hat, wie das prinzipiell funktioniert, ist es super flexibel und meistens nicht mehr das große Problem (wenn nicht grade eine "komische Gegenstelle" vorliegt, sowas gibt es leider auch)...
Sorry, jetzt muss ich den Thread doch nochmals öffnen, da ich unerwartete Probleme mit der Signalisierung der Batterieladung habe:
Hier zunächst das list des MQTT2-Device
Internals:
CID shellyflood_694xxx
DEF shellyflood_694xxx
DEVICETOPIC MQTT2_shellyflood_694xxx
FUUID 6213b76c-f33f-aab4-3b6f-86ab44159ec553d5
IODev MQTT2_FHEM_Server
LASTInputDev MQTT2_FHEM_Server
MQTT2_FHEM_Server_CONN MQTT2_FHEM_Server_192.168.x.yyy_17648
MQTT2_FHEM_Server_MSGCNT 40
MQTT2_FHEM_Server_TIME 2022-02-24 17:09:20
MSGCNT 40
NAME MQTT2_shellyflood_694xxx
NR 532
STATE false (bat batteryPercent%)
TYPE MQTT2_DEVICE
JSONMAP:
1 report
READINGS:
2022-02-24 17:07:49 1 sensor
2022-02-24 06:42:02 IODev MQTT2_FHEM_Server
2022-02-24 17:07:00 act_reasons_1 sensor
2022-02-24 17:07:00 actions_stats_skipped 0
2022-02-21 17:03:34 attrTemplateVersion 20211019
2022-02-24 17:07:00 bat_value 100
2022-02-24 17:07:00 bat_voltage 2.99
2022-02-24 17:07:46 battery 100
2022-02-24 17:07:00 cfg_changed_cnt 0
2022-02-24 17:07:00 cloud_connected false
2022-02-24 17:07:00 cloud_enabled true
2022-02-24 17:07:47 error 0
2022-02-24 17:07:45 flood false
2022-02-24 17:07:00 fs_free 144827
2022-02-24 17:07:00 fs_size 233681
2022-02-24 17:06:52 fw_ver 20220209-093411/v1.11.8-g8c7bb8d
2022-02-24 17:07:00 has_update false
2022-02-24 17:06:52 id shellyflood-694xxx
2022-02-24 17:06:52 ip 192.168.x.yyy
2022-02-24 17:07:00 is_valid true
2022-02-24 17:07:00 mac 2CF432694xxx
2022-02-24 17:06:52 model SHWT-1
2022-02-24 17:07:00 mqtt_connected true
2022-02-24 17:06:52 new_fw false
2022-02-24 17:09:20 online false
2022-02-24 17:07:00 rain_sensor false
2022-02-24 17:07:00 ram_free 40520
2022-02-24 17:07:00 ram_total 51528
2022-02-24 17:07:00 sensor_error 0
2022-02-24 17:07:00 serial 1
2022-02-21 17:03:34 state x_mqttcom
2022-02-24 17:07:44 temperature 22.88
2022-02-24 17:07:00 time
2022-02-24 17:07:00 tmp_is_valid true
2022-02-24 17:07:00 tmp_tC 22.88
2022-02-24 17:07:00 tmp_tF 73.18
2022-02-24 17:07:00 tmp_units C
2022-02-24 17:07:00 tmp_value 22.88
2022-02-24 17:07:00 unixtime 0
2022-02-24 17:07:00 update_has_update false
2022-02-24 17:07:00 update_new_version
2022-02-24 17:07:00 update_old_version 20220209-093411/v1.11.8-g8c7bb8d
2022-02-24 17:07:00 update_status unknown
2022-02-24 17:07:00 uptime 0
2022-02-24 17:07:00 wifi_sta_connected true
2022-02-24 17:07:00 wifi_sta_ip 192.168.x.yyy
2022-02-24 17:07:00 wifi_sta_rssi -42
2022-02-24 17:07:00 wifi_sta_ssid
Attributes:
icon humidity
jsonMap 1:report
model shellyflood
readingList shellies/MQTT2_shellyflood_694xxx/online:.* online
shellies/MQTT2_shellyflood_694xxx/announce:.* { json2nameValue($EVENT,'',$JSONMAP) }
shellies/MQTT2_shellyflood_694xxx/sensor/temperature:.* temperature
shellies/MQTT2_shellyflood_694xxx/sensor/flood:.* flood
shellies/MQTT2_shellyflood_694xxx/sensor/battery:.* batteryPercent
shellies/MQTT2_shellyflood_694xxx/sensor/error:.* error
shellies/MQTT2_shellyflood_694xxx/sensor/act_reasons:.* { json2nameValue($EVENT,'',$JSONMAP) }
shellyflood_694xxx:shellies/shellyflood-694xxx/online:.* online
shellyflood_694xxx:shellies/announce:.* { json2nameValue($EVENT) }
shellyflood_694xxx:shellies/shellyflood-694xxx/announce:.* { json2nameValue($EVENT) }
shellyflood_694xxx:shellies/shellyflood-694xxx/info:.* { json2nameValue($EVENT) }
shellyflood_694xxx:shellies/shellyflood-694xxx/sensor/temperature:.* temperature
shellyflood_694xxx:shellies/shellyflood-694xxx/sensor/flood:.* flood
shellyflood_694xxx:shellies/shellyflood-694xxx/sensor/battery:.* battery
shellyflood_694xxx:shellies/shellyflood-694xxx/sensor/error:.* error
shellyflood_694xxx:shellies/shellyflood-694xxx/sensor/act_reasons:.* { json2nameValue($EVENT) }
room Heizung,MQTT2
setList x_update:noArg shellies/MQTT2_shellyflood_694xxx/command update_fw
x_mqttcom shellies/MQTT2_shellyflood_694xxx/command $EVTPART1
stateFormat flood (bat batteryPercent%)
Ich "beobachte" per notify dieses Device und möchte eine DebianMail erhalten, sobald die Batterieladung unter einen Schwellwert sinkt (testweise im Moment unter 90%)
hier auch dazu das list
Internals:
DEF MQTT2_shellyflood_694xxx {if (Value("battery") lt "90") {DebianMail('aaaaa@bbbbbb.ccc','Dier Batterie im Schelly flood im Heizraum ist bald leer (weniger als 90% der Kapazität).','Bitte neue 3V-Lithium-Batterie EL123, CR123 oder CR17345 beschaffen!')}}
FUUID 6213cabb-f33f-aab4-8f75-981136845aba9681
NAME Warnmail_Shelly_flood_Batterie
NOTIFYDEV MQTT2_shellyflood_694xxx
NR 538
NTFY_ORDER 50-Warnmail_Shelly_flood_Batterie
REGEXP MQTT2_shellyflood_694xxx
STATE 2022-02-24 17:09:20
TRIGGERTIME 1645718960.30241
TYPE notify
READINGS:
2022-02-24 06:41:58 state active
2022-02-24 17:09:20 triggeredByDev MQTT2_shellyflood_694xxx
2022-02-24 17:09:20 triggeredByEvent online: false
Attributes:
room Heizung,MQTT2,Shelly-Devices
Als Ergebnis erhalte ich alle 30-120 Minuten ca. 50 Mails mit dem vorgegebenen Text obwohl das Reading die Batterieladung mit 100% ausweist!
Der Shelly flood liegt derzeit auf meinem Schreibtisch und hat zu 100% "trockene Füße".
Wo liegt das Problem oder welchen Fehler übersehe ich?
Noch viel wichtiger ist aber die Freiheit für die Ukraine!!!
Value "frägt" STATE (das Internal) eines Devices: Value("Devicename")
Bei dir würde also STATE des Devices "battery" abgefragt werden. Da es das Device nicht gibt (nehme ich an ;) ) wird da wohl "0" zurück kommen? Das ist dann kleiner als "90" und somit bekommst du eben (korrekterweise ;) ) eine Mail...
Was du willst ist der Wert eines Readings: ReadingsVal("Devicename", "Readingname", "Ersatzwert")
EDIT: bzw. hier sogar besser ReadingsNum
Ich würde aber die Regex des notify etwas "schärfer" machen.
Eventmonitor öffnen, auf das Batterie-Event warten und dann ein passendes notify anlegen lassen: https://wiki.fhem.de/wiki/Event_monitor
Du solltest auch mal event-on-change-reading anschauen, weil sonst bekommst du bei jedem Update des Batterie-Readings eine Mail sobald der Stand mal unter der Schwelle ist. (wobei ich jetzt nicht weiß , wie oft so ein Update erfolgt)...
Gruß, Joachim
Danke für den Hinweis, ich habe soeben das ReadingsNum realisiert.
Den weitergehenden Vorschlag zum Schärfen des Regex werde ich mir mal morgen anschauen.
Nachdem ich nun ReadingsNum im notify eingesetzt habe, hat sich das Benachrichtigungsproblem per Mail leider nicht gelöst!
Schaue ich mir die Eintragungen des zeitgleichen Eventmonitors (zeitgleich mit den Mails) an, entdecke ich auch keine Besonderheiten zum Zeitpunkt des Events. Sowohl "battery" als auch "bat_value" hat 100 (%) und trotzdem erkennt das notify eine Schwellwertunterschreitung!
2022-02-26 09:37:29.187 MQTT2_SERVER MQTT2_FHEM_Server nrclients: 1
2022-02-26 09:37:30.631 MQTT2_DEVICE MQTT2_shellyflood_694XXX online: true
2022-02-26 09:37:38.754 MQTT2_DEVICE MQTT2_shellyflood_694XXX fw_ver: 20220209-093411/v1.11.8-g8c7bb8d
2022-02-26 09:37:38.754 MQTT2_DEVICE MQTT2_shellyflood_694XXX new_fw: false
2022-02-26 09:37:38.754 MQTT2_DEVICE MQTT2_shellyflood_694XXX model: SHWT-1
2022-02-26 09:37:38.754 MQTT2_DEVICE MQTT2_shellyflood_694XXX ip: 192.168.x.yyy
2022-02-26 09:37:38.754 MQTT2_DEVICE MQTT2_shellyflood_694XXX id: shellyflood-694XXX
2022-02-26 09:37:38.754 MQTT2_DEVICE MQTT2_shellyflood_694XXX mac: 2CF432694XXX
2022-02-26 09:37:46.886 MQTT2_DEVICE MQTT2_shellyflood_694XXX id: shellyflood-694XXX
2022-02-26 09:37:46.886 MQTT2_DEVICE MQTT2_shellyflood_694XXX mac: 2CF432694XXX
2022-02-26 09:37:46.886 MQTT2_DEVICE MQTT2_shellyflood_694XXX ip: 192.168.x.yyy
2022-02-26 09:37:46.886 MQTT2_DEVICE MQTT2_shellyflood_694XXX model: SHWT-1
2022-02-26 09:37:46.886 MQTT2_DEVICE MQTT2_shellyflood_694XXX new_fw: false
2022-02-26 09:37:46.886 MQTT2_DEVICE MQTT2_shellyflood_694XXX fw_ver: 20220209-093411/v1.11.8-g8c7bb8d
2022-02-26 09:38:35.115 MQTT2_DEVICE MQTT2_shellyflood_694XXX unixtime: 0
2022-02-26 09:38:35.115 MQTT2_DEVICE MQTT2_shellyflood_694XXX actions_stats_skipped: 0
2022-02-26 09:38:35.115 MQTT2_DEVICE MQTT2_shellyflood_694XXX tmp_value: 22.88
2022-02-26 09:38:35.115 MQTT2_DEVICE MQTT2_shellyflood_694XXX time:
2022-02-26 09:38:35.115 MQTT2_DEVICE MQTT2_shellyflood_694XXX flood: false
2022-02-26 09:38:35.115 MQTT2_DEVICE MQTT2_shellyflood_694XXX update_status: unknown
2022-02-26 09:38:35.115 MQTT2_DEVICE MQTT2_shellyflood_694XXX tmp_tF: 73.18
2022-02-26 09:38:35.115 MQTT2_DEVICE MQTT2_shellyflood_694XXX wifi_sta_rssi: -42
2022-02-26 09:38:35.115 MQTT2_DEVICE MQTT2_shellyflood_694XXX ram_total: 51528
2022-02-26 09:38:35.115 MQTT2_DEVICE MQTT2_shellyflood_694XXX tmp_tC: 22.88
2022-02-26 09:38:35.115 MQTT2_DEVICE MQTT2_shellyflood_694XXX bat_value: 100
2022-02-26 09:38:35.115 MQTT2_DEVICE MQTT2_shellyflood_694XXX ram_free: 39148
2022-02-26 09:38:35.115 MQTT2_DEVICE MQTT2_shellyflood_694XXX update_new_version:
2022-02-26 09:38:35.115 MQTT2_DEVICE MQTT2_shellyflood_694XXX bat_voltage: 3.00
2022-02-26 09:38:35.115 MQTT2_DEVICE MQTT2_shellyflood_694XXX fs_size: 233681
2022-02-26 09:38:35.115 MQTT2_DEVICE MQTT2_shellyflood_694XXX wifi_sta_ip: 192.168.x.yyy
2022-02-26 09:38:35.115 MQTT2_DEVICE MQTT2_shellyflood_694XXX has_update: false
2022-02-26 09:38:35.115 MQTT2_DEVICE MQTT2_shellyflood_694XXX wifi_sta_ssid:
2022-02-26 09:38:35.115 MQTT2_DEVICE MQTT2_shellyflood_694XXX tmp_is_valid: true
2022-02-26 09:38:35.115 MQTT2_DEVICE MQTT2_shellyflood_694XXX mac: 2CF432694XXX
2022-02-26 09:38:35.115 MQTT2_DEVICE MQTT2_shellyflood_694XXX cloud_connected: false
2022-02-26 09:38:35.115 MQTT2_DEVICE MQTT2_shellyflood_694XXX act_reasons_1: sensor
2022-02-26 09:38:35.115 MQTT2_DEVICE MQTT2_shellyflood_694XXX mqtt_connected: true
2022-02-26 09:38:35.115 MQTT2_DEVICE MQTT2_shellyflood_694XXX rain_sensor: false
2022-02-26 09:38:35.115 MQTT2_DEVICE MQTT2_shellyflood_694XXX sensor_error: 0
2022-02-26 09:38:35.115 MQTT2_DEVICE MQTT2_shellyflood_694XXX update_has_update: false
2022-02-26 09:38:35.115 MQTT2_DEVICE MQTT2_shellyflood_694XXX uptime: 0
2022-02-26 09:38:35.115 MQTT2_DEVICE MQTT2_shellyflood_694XXX serial: 1
2022-02-26 09:38:35.115 MQTT2_DEVICE MQTT2_shellyflood_694XXX update_old_version: 20220209-093411/v1.11.8-g8c7bb8d
2022-02-26 09:38:35.115 MQTT2_DEVICE MQTT2_shellyflood_694XXX cfg_changed_cnt: 0
2022-02-26 09:38:35.115 MQTT2_DEVICE MQTT2_shellyflood_694XXX tmp_units: C
2022-02-26 09:38:35.115 MQTT2_DEVICE MQTT2_shellyflood_694XXX wifi_sta_connected: true
2022-02-26 09:38:35.115 MQTT2_DEVICE MQTT2_shellyflood_694XXX fs_free: 144827
2022-02-26 09:38:35.115 MQTT2_DEVICE MQTT2_shellyflood_694XXX cloud_enabled: true
2022-02-26 09:38:35.115 MQTT2_DEVICE MQTT2_shellyflood_694XXX is_valid: true
2022-02-26 09:38:36.468 MQTT2_DEVICE MQTT2_shellyflood_694XXX temperature: 22.88
2022-02-26 09:38:37.814 MQTT2_DEVICE MQTT2_shellyflood_694XXX flood: false
2022-02-26 09:38:39.147 MQTT2_DEVICE MQTT2_shellyflood_694XXX battery: 100
2022-02-26 09:38:40.477 MQTT2_DEVICE MQTT2_shellyflood_694XXX error: 0
2022-02-26 09:38:41.824 MQTT2_DEVICE MQTT2_shellyflood_694XXX 1: sensor
Das list des notify lautet:
Internals:
DEF MQTT2_shellyflood_694XXX {if (ReadingsNum("MQTT2_shellyflood_694XXX","battery","95") lt "90") {DebianMail('norbert@ruckhaber.com','Dier Batterie im Schelly flood im Heizraum ist bald leer (weniger als 90% der Kapazität).','Bitte neue 3V-Lithium-Batterie EL123, CR123 oder CR17345 beschaffen!')}}
FUUID 6213cabb-f33f-aab4-8f75-981136845aba9681
NAME Warnmail_Shelly_flood_Batterie
NOTIFYDEV MQTT2_shellyflood_694XXX
NR 538
NTFY_ORDER 50-Warnmail_Shelly_flood_Batterie
REGEXP MQTT2_shellyflood_694XXX
STATE 2022-02-26 09:40:11
TRIGGERTIME 1645864811.87892
TYPE notify
READINGS:
2022-02-25 21:00:36 state active
2022-02-26 09:40:11 triggeredByDev MQTT2_shellyflood_694XXX
2022-02-26 09:40:11 triggeredByEvent online: false
Attributes:
room Heizung,MQTT2,Shelly-Devices
Was könnte das notify zum Auslösen des Mails veranlassen?
Warum im if einen String-Vergleich und nicht einen numerischen Vergleich??
Ich würde die def mal so ändern:
DEF MQTT2_shellyflood_694XXX:battery:.* {if (ReadingsNum("MQTT2_shellyflood_694XXX","battery",95) < 90) ......
Die ganze Konstruktion ist überdenkenswert... Stichwort: monitoring, z.B.
Hmm, weiß nicht worauf Beta-User hinaus will.
Ich jedenfalls habe die Empfehlung von Nobbynews zunächst einmal umgesetzt und schaue wir mal, was passiert, bzw. ob überhaupt eine Meldung kommt - Danke Nobbynews!
Ein wenig verwundert es mich noch, dass der Ladezustand der Batterie "noch" auf 100 steht - das wäre die erste Batterie, die beim Kauf wirklich voll ist.
Anfänglich, also direkt nach Einsetzen der neuen Batterie, erschien in der Shelly-App und im UI der Wert 94 oder 95, später dann so wie jetzt 100!
Evtl. meint Beta-User dass es bzgl. Monitoring andere Möglichkeiten gibt, z.B. ReadingsWatcher (oder heißt das jetzt anders) oder auch watchdog oder...
Ich würde auf jeden Fall das notify "schärfen"!
(also wenn du bei notify bleibst)
Weil das notify bei jedem Eintrag des EventMonitors den du gepostet hast "loslegt"...
EDIT: und zu fast 100% unnötig. Weil es nur 3 Einträge (oder so) bzgl. Batterie gab. Und selbst die wären unnötig, weil es ja immer noch 100% sind. Und solange sich das nicht ändert ist es doch uninteressant!? (event-on-change-...)
Ich würde auch event-on-change (noch mal) ansehen, sonst bekommst du auch mehr Nachrichten als du willst...
...und erzeugst unnötige Last im System...
EDIT: naja, wenn korrekt gemessen wird/wurde: 3V sind halt für die Schaltung 100%. Neu haben die Batterien aber meist 3,2V... Also vielleicht nicht ganz voll bei Lieferung aber halt immer noch 100% bezogen auf die "Schaltung"... ;)
Gruß, Joachim
Ja, ich habe ja deinen Vorschlag umgesetzt und auch das
att MQTT2_shellyflood_694xxx event-on-change-reading flood,battery,bat_value
gesetzt.
ReadingsWatcher kenne ich noch nicht, muss ich mir erst mal anschauen - ist vielleicht ja eine Alternative falls der aktuelle Weg nicht zum Ziel führt.
help monitoring
Würde Spekulationen erübrigen.
Zitat von: uron am 26 Februar 2022, 11:42:13
Ja, ich habe ja deinen Vorschlag umgesetzt und auch das
att MQTT2_shellyflood_694xxx event-on-change-reading flood,battery,bat_value
gesetzt.
ReadingsWatcher kenne ich noch nicht, muss ich mir erst mal anschauen - ist vielleicht ja eine Alternative falls der aktuelle Weg nicht zum Ziel führt.
War halt in keinem deiner lists zu sehen...
ABER (für Tests): dir ist klar, dass nur nur noch Events für diese Readings kommen UND das auch nur bei Änderung dieser!
(d.h. für Tests evtl. "kontraproduktiv", da ja sonst das notify nicht wirklich [oft] getriggert wird)
Gruß, Joachim
Zitat von: Beta-User am 26 Februar 2022, 12:12:23
help monitoring
Würde Spekulationen erübrigen.
Sorry ;)