eventmap - remapping reading geht nicht?

Begonnen von erwin, 11 Juli 2018, 18:14:58

Vorheriges Thema - Nächstes Thema

erwin

ich hab ein etwas seltsames Problem mit eventmap, und zwar mit einem KNX device, ich hab das jetzt stark vereinfacht mit einem DUMMY reproduzieren können. erstmal die definition:
define x dummy
attr x eventMap { dev=>{'^posstatus:.(.*)'=>'position: $1'}}
attr x readingList position posstatus
attr x setList on off
attr x stateFormat position
### und vorbelegen der readings:
setreading x position 99 %
setreading x posstatus 88 %

bis hierher alles ok, jetzt kommt ein:
tri x posstatus: 22 %
  2018-07-11 17:49:34.889 dummy x position: 22 %

man sieht sehr schön in eventmonitor, dass posstatus auf position gemappt wird.
im device detailview wird das reading position auch upgedatet (in roter schrift).
Jetzt kommt das Problem:
sobald die Seite refreshed wird, oder ein set-cmd, oder einfach auf raum overview und wieder auf detail-seite,
wird die Zeit zurückgedreht, soll heissen das reading hat wieder den value von vorher, inkl. vorigen Timestamp!

hat jemand eine idee?
l.g. erwin
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...

rudolfkoenig

setreading (bzw. die readings*Update Perl Funktionen) aendern ein Reading (falls erlaubt, siehe event-* Attribute), fuehren die userReadings aus, und erzeugen zum Schluss ein Event, was zum Benachrichtigen der anderen Module (wie FHEMWEB, notify, etc) dient.

Du hast mit tri (mit vollstaendigen Namen trigger) nur den Event-Teil simuliert, deswegen die Diskrepanz.

erwin

Hallo Rudolf,

ZitatDu hast mit tri (mit vollstaendigen Namen trigger) nur den Event-Teil simuliert, deswegen die Diskrepanz.
Ja, das war mir klar, aber evtl. ist auch meine Simulation falsch, obwohl die Symtome gleich sind, deßhalb jetzt eine detaillierter Beschreibung:
Es geht um ein KNX device - IODevice ist ein TUL.
Es kommt ein Ereigniss vom KNX-Bus in Richtung FHEM - welche ohne der eventMap das Reading posstatus völlig korrekt updated.
ich wollte allerdings das ebenfalls vorhande reading position ebenfalls mit diesem Wert updaten, weil das die Basis für die Sollwert-Einstellung ist. (Im Prinzip: Damit der position:slider,0,5,100 immer richtig steht, egal von wo der KNX-Befehl gekommen ist.)

Im Prinzip ein klassisch Soll/IST-Wert Problem, wobei in diesem Fall Soll und Ist 2 unterschiedliche Readings sind.

Falls ich da komplett falsch liege, würde ich das mittels notify auf das reading posstatus lösen und im notify ein singleReadingsupdate machen.
Danke für deine Support
erwin
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...

rudolfkoenig

Zitatich wollte allerdings das ebenfalls vorhande reading position ebenfalls mit diesem Wert updaten
eventMap ist nur fuer die Anzeige (STATE Internal) bzw fuer die Events (d.h. das, was die "zuhoerende" Module kriegen) gedacht, nicht zum Erzeugen neuer Readings, oder Aendern von Readings-Werten.

Neue Readings kann man mit userReadings erzeugen, die Werte der Readings mit readingsChange aendern.