[gelöst] userreading zu den vorh. userreadings für eine große Anz devices zufüge

Begonnen von McShire, 16 Juli 2022, 22:43:30

Vorheriges Thema - Nächstes Thema

McShire

Hallo zusammen,

ich möchte gerne zu einer großen Anzahl von devices (alle devices mit Batterie) zu den bereits in den devices unterschiedlich vorhandenen
userreadings ein userreading (mybattalarm) zufügen.

Ich habe ein notify, dass bei dem event battery low eines devices einen Eintrag in ein Logfile vornimmt und mir eine Email mit der Info, dass das
betreffende device low batt hat, zuschickt. Wenn dann nicht sofort die Batterien gewechselt werden, senden die devices dann
häufig wiederholt den Alarm und damit eine Email, besonders viele bei den MAX! Thermostaten.

Das zusätzliche userreading möchte ich nutzen, um beim battery low ein Flag zu setzen, das im notify gelesen wird und dann keine neue Email abschickt, nach Batteriewechsel wird das Flag zurückgesetzt. Soweit der Hintergrund, warum ich das userreading einfügen möchte.

Das kann ich einzeln tun, indem ich jeweils im device unter attr <device>  userreading ein weiteres userreading zu den vorhandenen zufüge.
Das muss ich dann bei vielen devices tun, Thermostate, Fensterkontakte, Sensoren (Temperatur, Helligkeit, ..),Schalter usw.

Um den Aufwand zu vermeiden, würde ich das userreading durch eine Anweisung in der KommandoZeile zu allen devices gemäss der Selektion
der devices (mit * in der Auswahl) zufügen. Wenn ich dann nur das neue userreading angebe, werden die vorhandenen vermutlich gelöscht, da ich ja nur ein reading angebe.
Gibt es eine Anweisung, mit der man ein userreading zufügen statt setzen kann?

Vielen Dank für Eure Hilfe
mfg
Werner

MadMax-FHEM

Warum ein userReadings?

Setze doch einfach da wo du die Nachricht schickst mittels setreading Device Readingname Wert

Den frägst du ab und wenn gesetzt, dann keine Nachricht mehr, bis Batterie gewechselt und dann das Reading mittels setreading zurücksetzen...

Beispiel:

setreading Device sent yes

setreading Device sent no

Ich mache das hier ähnlich: https://forum.fhem.de/index.php/topic,82637.msg747514.html#msg747514
Also hier evtl. anders aber in meinem Originalcode mache ich das so...

EDIT: bzgl. Attribut erweitern gab es mal Beiträge bzgl. des attr room vielleicht geht das auch hier, wenn du es (trotzdem) per userReadings machen willst...

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)

Nobbynews

Zitat von: McShire am 16 Juli 2022, 22:43:30
ich möchte gerne zu einer großen Anzahl von devices (alle devices mit Batterie) zu den bereits in den devices unterschiedlich vorhandenen
userreadings ein userreading (mybattalarm) zufügen.

Das kann ich einzeln tun, indem ich jeweils im device unter attr <device>  userattr ein weiteres userattribut zu den vorhandenen zufüge.
Was möchtest Du denn jetzt eigentlich machen?
Ein zusätzliches userReading oder ein zusätzliches Attribut?

Was das zusätzliche Attribut angeht, ist die commandref Dein Freund.

Zitatattr [-a|-r|-silent] <devspec> <attrname> [<value>]

Dieser Befehl setzt ein Attribut für ein Gerät welches mit define definiert wurde. value ist optional, und ist 1 falls nicht spezifiziert. Sie können auch Ihre eigenen Attribute definieren, um sie in anderen Applikationen anzuwenden. Geben Sie "<attr <name> ?" ein, um eine Liste verfügbarer Attribute anzuzeigen. Siehe den Abschnitt über Geräte-Spezifikation für Details der <devspec>.
Gerätespezifische Attribute sind in der Beschreibung zum jeweiligen Gerät aufgeführt. Nach der Durchführung das globale Ereignis "ATTR" wird generiert.
Falls die Option -a spezifiziert ist, dann wird value zum aktuellen Wert hinzugefügt.
Achtung: falls value nicht mit einem Komma (,) anfängt, dann wird es mit einem Leerzeichen angehängt.
Mit der -r Option kann man Teile eines Attributes wieder entfernen.
Mit der silent Option wird der Befehl nicht in die "save -?" Liste eingetragen.

attr -a Shelly([\d]+) userattr Erfassung


rudolfkoenig

Es gibt auch ein "attr global userattr", das sollte man aber erweitern, und nicht ersetzen.

MadMax-FHEM

Zitat von: Nobbynews am 17 Juli 2022, 05:59:01
Zitat von: McShire am Gestern um 22:43:30

    ich möchte gerne zu einer großen Anzahl von devices (alle devices mit Batterie) zu den bereits in den devices unterschiedlich vorhandenen
    userreadings ein userreading (mybattalarm) zufügen.

    Das kann ich einzeln tun, indem ich jeweils im device unter attr <device>  userattr ein weiteres userattribut zu den vorhandenen zufüge.



Was möchtest Du denn jetzt eigentlich machen?
Ein zusätzliches userReading oder ein zusätzliches Attribut?

Guter Punkt.
Ist mir nachts auf dem Handy gar nicht (so) aufgefallen ;)

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)

McShire

Danke für die Infos.
Ich war immer davon ausgegangen, dass ein (neues) reading immer erst in den Attributen unter userReadings definiert werden muss, bevor man es benutzen (setreading, ReadingsVal) kann.
Der Vorschlag mit setreading <device> AlSent yes /no funktioniert einwandfrei.
Viele Grüße
Werner

MadMax-FHEM

Wie du jetzt weißt, kannst du mit setreading tun was du willst (sofern es gültig ist) ;)

userReadings hingegen "berechnen" sich ja aufgrund von Events/Triggern des Devices in dem sie definiert sind.

Bei einem setreading musst du halt selber sorgen, dass es aufgerufen wird...

Wie wäre ein [gelöst] o.ä. vorne dran? :)

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)