eventMap mapt nur in eine Richtung

Begonnen von Hanjo, 07 September 2019, 23:28:27

Vorheriges Thema - Nächstes Thema

Hanjo

Hallo,

ich habe ein KNX Device, welches den Modus für die Heizung bedingt. Das Reading liefert eine Zahl von 0-4 zurück und jede Zahl steht dabei für einen anderen Heizungsmodus.

Um das Ganze nutzerfreundlich zu machen, habe ich ein Mapping wie folgt erstellt:
attr KNX.Modus eventMap /modus 0:modus Auto/modus 1:modus Komfort/modus 2:modus Standby/modus 3:modus Nacht/modus 4:modus Frost/
und dazu noch ein
attr KNX.Modus widgetOverride modus:select,Auto,Komfort,Standby,Nacht,Frost

Den Modus zu setzen funktioniert nun wie gewünscht über die Namen.

Leider wird der Wert des Readings immer noch als Zahl 0-4 angezeigt und nicht der Name, wie ich das eigentlich erwarten würde.
Gibt es dafür einen Trick?

Danke & Gruß
Hanjo

rudolfkoenig

Um eine sinnvolle Antwort geben zu koennen muesste man die Eingangs-Events (ohne eventMap) sehen.

Uebrigens: es gibt auch eine komplexere Variante von eventMap (siehe commandref), wo man das Mapping je Richtung separat definieren kann.

Hanjo

Vielen Dank für deine Antwort.

Die expliziete Variante hatte ich vorher tatsächlich auch schon probiert, jedoch war das Verhalten identisch zur einfachen Variante.

Der Tipp mit den Eingangs-Events war Gold wert. So habe ich bemerkt, dass ich bei der Richtung "dev" die notwendigen Doppelpunkte vergessen hatte. Die korrekte Lösung lautet somit:
{
usr => {
'^modus Auto' => 'modus 0',
'^modus Komfort' => 'modus 1',
'^modus Standby' => 'modus 2',
'^modus Nacht' => 'modus 3',
'^modus Frost' => 'modus 4'
},
dev => {
'^modus: 0' => 'modus: Auto',
'^modus: 1' => 'modus: Komfort',
'^modus: 2' => 'modus: Standby',
'^modus: 3' => 'modus: Nacht',
'^modus: 4' => 'modus: Frost'
},
fw => {
'^modus Auto' => 'modus',
'^modus Komfort' => 'modus',
'^modus Standby' => 'modus',
'^modus Nacht' => 'modus',
'^modus Frost' => 'modus'
}
}


Danke & Gruß
Hanjo

Hanjo

Ich hatte wohl zu früh Entwarnung gegeben...

Der Modus wird zwar per Event auf den Namen (also z.B. "Komfort") gesetzt, aber wenn ich auf den Wert zugreifen möchte oder auch nur die Seite im Browser aktualisiere, steht da dann doch "1".

Hier mal die Events mit eventMap:
2019-09-08 16:39:13 KNX KNX.Heizung.Modus modus: Komfort
2019-09-08 16:39:13 KNX KNX.Heizung.Modus 1
2019-09-08 16:39:13 KNX KNX.Heizung.Modus last-sender: fhem


und ohne:
2019-09-08 16:51:51 KNX KNX.Heizung.Modus modus: 1
2019-09-08 16:51:51 KNX KNX.Heizung.Modus 1
2019-09-08 16:51:51 KNX KNX.Heizung.Modus last-sender: fhem


Danke & Gruß
Hanjo

rudolfkoenig

eventMap aendert nur die Events (das, womit alle anderen Module benachrichtigt werden), aber nicht die Readings.
Readings gehoeren dem Modul, etliche Module brauchen diese Werte, um Arbeiten zu koennen.
Wenn man sicher ist, dass das Modul sie nur als Info ablegt, dann kann man die Werte mit dem readingsChange Modul aendern.

Beim Setzen eines Wertes in FHEMWEB wird die Seite nicht neu aufgebaut, sie wird nur aktualisiert, mit Hilfe der (auch von FHEMWEB empfangenen, und womoeglich per eventMap modifizierten) Events.

Hanjo

Herzlichen Dank - das war der entscheidende Hinweis. Das KNX-Modul scheint mit den geänderten Readings keine Problem zu haben.

Viele Grüße
Hanjo