event-on-update-reading wird nicht ausgelöst

Begonnen von kampi, 28 August 2020, 21:27:31

Vorheriges Thema - Nächstes Thema

kampi

Hallo zusammen,

ich habe eine ThingsBoard-Instanz als MQTT-Broker hinterlegt und möchte nun die Werte von Sensoren bei einem Update per MQTT an ThingsBoard senden.

Dazu habe ich mir die folgende Funktion zum Testen gebaut

package main;

use strict;
use warnings;

sub ThingsBoard_MQTT_Utils_Initialize($$)
{
my ($hash) = @_;
}

sub ThingsBoardSender($)
{
my ($hash) = @_;

my $Payload =  "{'Bla':'Blub'}";

fhem("set ThingsBoard publish v1/devices/me/telemetry $Payload");
Log3 $hash, 3, "$hash - Update ...";
}

1;


Anschließend habe ich für einen EnOcean-Sensor ein "event-on-update-reading" angelegt um die Funktion bei einem Update aufzurufen:

attr EnO_05160C81 event-on-update-reading .* { ThingsBoardSender($NAME) }

Aber anscheinend passiert nichts. Der Temperaturwert wird regelmäßig ausgelesen, aber die Funktion nicht aufgerufen.

Woran liegt das?

Danke für die Hilfe.


amenomade

#1
Und woher glaubst Du, dass man in event-on-update-reading eine Funktion auslösen kann?

Bitte CommandRef genauer lesen. event-on-update-reading ist nur ein Regex Filter
https://fhem.de/commandref_DE.html#event-on-update-reading

Was Du brauchst ist ein notify. Und dringend eine Einsteigerdoku zu lesen, z.B. https://wiki.fhem.de/wiki/First_steps_in_FHEM oder https://fhem.de/Heimautomatisierung-mit-fhem.pdf

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

dirk.k

Hi,
ich bin ziemlicher Anfänger ... also verzeiht bitte Fehler ...
1.
Ob ein Event triggert, siehst du in der Device-Ansicht. Wenn dort ohne reload der Wert aktialisiert / rot dargestellt wird, gab es ein event.
(im Event Monitor ist das dann auch zu finden)
Wird der Wert immer nur nach page-reload aktualisiert, wird bei Werteaktualisierung kein Event ausgelöst.

2.
Wo hast du diese Syntax her? Soweit ich das verstanden habe, wird mit "event-on-update-reading" nur eingestellt, welche Reading-Aktualisierung ein Event triggert. Den Aufruf einer Funktion habe ich dort noch nie gesehen?
https://wiki.fhem.de/wiki/Event-on-update-reading


kampi

Zitat von: amenomade am 28 August 2020, 21:38:09
Und woher glaubst Du, dass man in event-on-update-reading eine Funktion auslösen kann?

Bitte CommandRef genauer lesen. event-on-update-reading ist nur ein Regex Filter
https://fhem.de/commandref_DE.html#event-on-update-reading

Was Du brauchst ist ein notify. Und dringend eine Einsteigerdoku zu lesen, z.B. https://wiki.fhem.de/wiki/First_steps_in_FHEM oder https://fhem.de/Heimautomatisierung-mit-fhem.pdf

mmh okay. Dann habe ich die Funktion wohl falsch verstanden. Danke dann schaue ich mich mal weiter um :)

amenomade

Zitat von: dirk.k am 28 August 2020, 21:42:26
1.
Ob ein Event triggert, siehst du in der Device-Ansicht. Wenn dort ohne reload der Wert aktialisiert / rot dargestellt wird, gab es ein event.
(im Event Monitor ist das dann auch zu finden)
Wird der Wert immer nur nach page-reload aktualisiert, wird bei Werteaktualisierung kein Event ausgelöst.
Stimmt ungefähr. Eigentlich heisst die rote Farbe, dass das Reading zuletzt geändert wurde. Du weisst aber nicht wieviele Events dazu geführt haben (wie viele Änderungen nacheinander und welche). Und wenn mittlerweile ein anderes Event die Änderung eines anderen Readings verursacht hat, ist das erste gar nicht mehr rot.

Noch besser eignet sich der Eventmonitor, um die Events zu beobachten. Da kannst Du sogar ein Event markieren, und automatisch ein notify / DOIF / FileLog erstellen lassen, der auf diesem Event reagiert.

Eventmonitor steht in beiden von mir verlinkten Dokus für Einsteiger. Übrigens, die erste Doku gibt's auch auf Deutsch https://wiki.fhem.de/wiki/Erste_Schritte_in_FHEM

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus