SetList für FBDECT ermöglichen

Begonnen von Jostar, 12 November 2022, 15:11:18

Vorheriges Thema - Nächstes Thema

Jostar

Hallo zusammen,

kennt ihr den Wunsch, den letzten Batteriewechsel an mobilen Geräten zu protokollieren, um z.B. zu sehen, wie lange welche Art von Batterien oder je nach Einsatzmodus halten?

Ich behelfe mich aktuell mit einem:
setreading Heizkoerper_Wintergarten Batteriewechsel 12.11.2022
(damit kann ich auch den Batteriewechsel leicht am Folgetag nachtragen, bin also nicht vom Systemdatum abhängig)

Für DUMMY
setList Batterietest Batteriewechsel
(damit erscheint ein Eingabefeld im "Device Overview")

webCmd Batterietest:Batteriewechsel
(damit habe ich zwei Links hinter dem Gerätenamen) Zusammem mit einem Notify setze ich das Reading.
Leider klappt das bei FBDECT Geräten nicht:
ZitatUnknown argument Batteriewechsel, choose one of boost:textField close:noArg desired-temp:slider,7.5,0.5,28.5,1 open:noArg raw:textField windowopen:textField

Kann man "setList" bitte aktiveren für den Gerätetyp? Dieser soll einfach die bestehende Liste von Argumenten entsprechend verlängern, also in dem Fall zu
* boost
* close
* desired-temp
* open
* raw
* windowopen
* Batteriewechsel

Danke und Gruß
Raspberry Pi(s) mit FHEM auf Rasbian Jessie/Strech, DbLog/DbRep mit mySQL, piface, 1Wire-USB-Master von SMS-GUARD, RFXtrx433E

MadMax-FHEM

#1
Warum nicht einfach:

setreading Devicename Readingname Wert

Dann brauchst du keine setList...
Bzw. muss das doch bei jedem Device gehen.
EDIT: bzw. was machst du bei den FBDECT-Devices? Wie wäre es lists der Devices inkl. notify zu posten?

Ich nutze ja das hier bzw. (immer noch meine Variante, inkl. Batterievorat und Berechnung des neuen Vorats wenn erneuert usw.): https://forum.fhem.de/index.php/topic,82637.msg747514.html#msg747514

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)

Jostar

Guten Abend! Na, weil ich ich da soviel tippen muss (z.B. den exakten Namen vom Device). Schöner ist ein Feld fürs Datum bzw. Ein "Knopf", wo man nach Batteriewechsel einfach draufklickt.

Reding vom DECT Heizkörper hast du im übrigen in deinem Link vom
Antw:Batteriestatus und Speicherung des letzten Wechsel
« Antwort #355 am: 19 Oktober 2022, 12:02:00 schon. Sieht bei mir auch nicht anders aus. Text vom Notify kann ich gerne hier noch teilen, hat aber mit der ursprünglichen Frage auch nichts zu tun.

Viele Grüße
Raspberry Pi(s) mit FHEM auf Rasbian Jessie/Strech, DbLog/DbRep mit mySQL, piface, 1Wire-USB-Master von SMS-GUARD, RFXtrx433E

MadMax-FHEM

Du musst doch nichts tippen, wenn du ein notify hast (das ich ja nicht kenne)...

Ich schau mir das im anderen Thread mal an.

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)

MadMax-FHEM

Zitat von: MadMax-FHEM am 12 November 2022, 21:51:31
Du musst doch nichts tippen, wenn du ein notify hast (das ich ja nicht kenne)...

Ich schau mir das im anderen Thread mal an.

Gruß, Joachim

So, ich hab da mal was versucht... :)

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)

Jostar

define notify_Batteriewechsel notify .*Batterie(wechsel|test) { \
  if ($EVTPART0 eq "Batteriewechsel") {\
    fhem("sleep 0.1;; setreading $NAME Batteriewechsel ".strftime('%d.%m.%Y', localtime));;\
  }\
  if ($EVTPART0 eq "Batterietest") {\
    fhem("sleep 0.1;; setreading $NAME battery ok");;\
  }\
}
attr notify_Batteriewechsel comment schreibt das reading "Batteriewechsel" ins Device falls event "Batteriewechsel", z.B. wenn via webcmd gesendet\
\
Alternative, falls "set" im "device" nicht implementiert wurde:\
setReadingsVal($defs{$NAME},"Batteriewechsel",strftime('%d.%m.%Y', localtime),TimeNow())\
\
In der Kommandozeile\
{ setReadingsVal($defs{"Wintergarten_Klein"},"Batteriewechsel",strftime('%d.%M.%Y', localtime),TimeNow()) }\
\
das aktualisiert aber nicht das log, das geht nur via:\
setReading Wintergarten_Klein Batteriewechsel 03.11.2018
#   DEF        .*Batterie(wechsel|test) {
#  if ($EVTPART0 eq "Batteriewechsel") {
#    fhem("sleep 0.1; setreading $NAME Batteriewechsel ".strftime('%d.%m.%Y', localtime));
#  }
#  if ($EVTPART0 eq "Batterietest") {
#    fhem("sleep 0.1; setreading $NAME battery ok");
#  }
#}
#   FUUID      5c548992-f33f-bea7-8ef4-6b621af52f7c7878
#   NAME       notify_Batteriewechsel
#   NR         356
#   NTFY_ORDER 50-notify_Batteriewechsel
#   REGEXP     .*Batterie(wechsel|test)
#   STATE      2022-11-12 15:15:13
#   TYPE       notify
#   READINGS:
#     2022-11-14 22:23:58   state           active
#     2022-11-12 15:15:13   triggeredByDev  global
#     2022-11-12 15:15:13   triggeredByEvent ATTR Heizkoerper_Wintergarten event-on-change-reading FBNAME,temperatur:0.1,batteryState,window,windowopenactiv,batteryPercent:5,Batteriewechsel
#
setstate notify_Batteriewechsel 2022-11-12 15:15:13
setstate notify_Batteriewechsel 2022-11-14 22:23:58 state active
setstate notify_Batteriewechsel 2022-11-12 15:15:13 triggeredByDev global
setstate notify_Batteriewechsel 2022-11-12 15:15:13 triggeredByEvent ATTR Heizkoerper_Wintergarten event-on-change-reading FBNAME,temperatur:0.1,batteryState,window,windowopenactiv,batteryPercent:5,Batteriewechsel

Raspberry Pi(s) mit FHEM auf Rasbian Jessie/Strech, DbLog/DbRep mit mySQL, piface, 1Wire-USB-Master von SMS-GUARD, RFXtrx433E

MadMax-FHEM

Ich verstehe ja immer noch nicht, warum eine Anpassung von setList notwendig ist/sein sollte?
(vermutlich bin ich zu doof)

Ein setreading $NAME Batteriewechsel "Datum/Uhrzeit" schreibt doch den erfolgten Wechsel ins Device $NAME, also das "auslösende" Device und erzeugt auch ein Event für das Log?

Und setReadingsVal?

eher: set ReadingsVal()? Aber auch das wird so nicht gehen.

set ist ein fhem-Befehl und ReadingsVal ist Perl...

Im notify bist du mittels { } in Perl -> ReadingsVal funktioniert, set nicht (einfach so), dazu braucht es fhem("set ...") (hast du ja auch bereits verwendet)...

Also ich stehe auf dem Schlauch, weil so wie es jetzt ist, wird doch beim drücken auf den "Link" (webCmd) "Batteriewechsel" doch entsprechend "Datum/Uhrzeit" in das Reading "Batteriewechsel" zum zugehörigen Device geschrieben (oder?).
Und das ist doch das Ziel?

Wobei ich es ja schöner finde, das automatisch tun zu lassen :) (so wie im verlinkten Thread ;) / gut da wird der Wechsel in einem dummy "protokolliert" aber das ist ja auch schon lange her, könnte man genau so gut auch im Device selbst "protokollieren")...

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)

Jostar

Ja, es gibt eine Menge Lösungen, da hast du recht. Im Kommentar steht's eigentlich schon, der Link nutzt das aktuelle Datum, will man einen Batteriewechsel nachtragen, so geht das aktuell nur mit einer Befehlszeile (und der Schwierigkeit den genauen Geräte Namen angeben zu müssen). Darum als dritten Weg ein Eingabefeld, direkt im Device. Klappt bei einigen Typen, z.B. Dummy ganz prima, leider nicht bei FBDECT.

Ich schätze Mal, es ist eine Zeile, die zusätzliche List-Einträge zulässt. Kann aber auch sein, dass man den Teil dann extra im Modul noch einbauen müsste...

Viele Grüße!
Raspberry Pi(s) mit FHEM auf Rasbian Jessie/Strech, DbLog/DbRep mit mySQL, piface, 1Wire-USB-Master von SMS-GUARD, RFXtrx433E

MadMax-FHEM

Zitat von: Jostar am 15 November 2022, 16:58:02
Ja, es gibt eine Menge Lösungen, da hast du recht. Im Kommentar steht's eigentlich schon, der Link nutzt das aktuelle Datum, will man einen Batteriewechsel nachtragen, so geht das aktuell nur mit einer Befehlszeile (und der Schwierigkeit den genauen Geräte Namen angeben zu müssen). Darum als dritten Weg ein Eingabefeld, direkt im Device. Klappt bei einigen Typen, z.B. Dummy ganz prima, leider nicht bei FBDECT.

Ich schätze Mal, es ist eine Zeile, die zusätzliche List-Einträge zulässt. Kann aber auch sein, dass man den Teil dann extra im Modul noch einbauen müsste...

Viele Grüße!

Ah, ok, nachtragen...

Gut, wenn es automatisch beim Wechsel passiert (wie bei mir :)  ), dann stimmt die Uhrzeit usw. ja immer.
Ich muss nichts nachtragen...

Was noch gehen könnte: cmdAlias...

Dann ist mir das jetzt klar... 8)

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)

DeeSPe

Ich wollte auch nochmal auf cmdalias hinweisen! Ist zwar auch nicht "Klick und gut", aber auch einfacher als vorher.
Z.B.:
defmod ca_batw cmdalias batw .* AS {\
  return if !$EVENT;;\
  fhem "setreading $EVENT Batteriewechsel $mday.$month.$year";;\
}


Und dann einfach:
batw <DEVICENAME>

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

DeeSPe

Man könnte es auch mittels eines Dummy und eines Notify lösen.
Z.B.:
defmod Batteriewechsel dummy
attr Batteriewechsel event-on-update-reading device
attr Batteriewechsel readingList device
attr Batteriewechsel setList device

defmod n_Batteriewechsel notify Batteriewechsel:device:.* {fhem "setreading $EVTPART1 Batteriewechsel $mday.$month.$year"}


Dann einfach mit:
set Batteriewechsel device <DEVICENAME>
das Reading "Batteriewechsel" in <DEVICENAME> auf das heutige Datum setzen.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe