readingsProxy wird nicht aktualisiert

Begonnen von ThomasRamm, 28 Februar 2015, 10:46:28

Vorheriges Thema - Nächstes Thema

ThomasRamm

Hallo,
das Modul MCP23017 hat für jeden Ausgang ein Reading mit state on/off.
Ich habe für jedes ein Readingsproxy angelegt um die Ausgänge als Device verwalten zu können.
Über einen Taster wird mittels DOIF der readingsProxy angewiesen ein toggle auszuführen.
Das funktioniert aber nur 1x, da der readingsProxy nicht aktualisiert wird.
Wenn ich den Befehl über die Oberfläche ausführe wird der ReadingsProxy immer aktualisiert (klick auf Symbol oder auf on/off)
jemand eine Idee?

Ausgang
define Led_B0 readingsProxy myMcp20:PortB0
attr Led_B0 setFn {($CMD eq "on")?"PortB0 on":"PortB0 off"}
attr Led_B0 setList on off


Taster
define SchalterA0 readingsProxy myMcp20:PortA0
attr SchalterA0 valueFn { Longpress("SchalterA0",$VALUE);;}


Die Funktion Longpress zählt die Milisekunden wie lange der Taster gedrückt wurde und gibt short oder long zurück. Zum testen habe ich die Funktion umgestellt das er immer short zurück gibt. Der Taster hat damit 3 stati: short oder long (wenn er nicht gedrückt ist),on (während des drückens)

Verknüpfung Taster-Ausgang
define port0.di DOIF ([SchalterA0:?short]) (set Led_B0 toggle)


Events nach erstem drücken des Tasters (Ausgang von off auf on umgeschaltet, wird ausgeführt aber auf der Oberfläche nicht aktualisiert)
2015-02-28 10:33:26 DOIF port0.di cmd_nr: 2
2015-02-28 10:33:26 DOIF port0.di cmd_event: SchalterA0
2015-02-28 10:33:26 DOIF port0.di cmd_2
2015-02-28 10:33:26 readingsProxy SchalterA0 toggle: 1425116006.71585
2015-02-28 10:33:26 readingsProxy SchalterA0 on
2015-02-28 10:33:26 I2C_MCP23017 myMcp20 PortA0: on
2015-02-28 10:33:26 I2C_MCP23017 myMcp20 Ok
2015-02-28 10:33:26 RPI_GPIO INTA Pinlevel: high
2015-02-28 10:33:26 RPI_GPIO INTA on
2015-02-28 10:33:26 RPI_GPIO INTA Toggle: on
2015-02-28 10:33:26 RPI_GPIO INTA Counter: 1133
2015-02-28 10:33:26 readingsProxy SchalterA0 toggle: 0.14379096031189
2015-02-28 10:33:26 DOIF port0.di cmd_nr: 1
2015-02-28 10:33:26 DOIF port0.di cmd_event: SchalterA0
2015-02-28 10:33:26 DOIF port0.di cmd_1
2015-02-28 10:33:26 readingsProxy SchalterA0 short
2015-02-28 10:33:26 I2C_MCP23017 myMcp20 PortA0: off
2015-02-28 10:33:26 I2C_MCP23017 myMcp20 Ok
2015-02-28 10:33:26 I2C_MCP23017 myMcp20 PortB0: on  <-- Led auf on geschaltet
2015-02-28 10:33:26 I2C_MCP23017 myMcp20 Ok
2015-02-28 10:33:26 I2C_MCP23017 myMcp20 Ok
2015-02-28 10:33:26 RPI_GPIO INTA Pinlevel: high
2015-02-28 10:33:26 RPI_GPIO INTA on
2015-02-28 10:33:26 RPI_GPIO INTA Toggle: off
2015-02-28 10:33:26 RPI_GPIO INTA Counter: 1134


Status ReadingsProxy Led_B0
lastCmd  on   2015-02-28 10:33:26
state    off  2015-02-28 10:33:02  <-- off


Status Hardware-Device myMcp20
PortA0  off  2015-02-28 10:33:26
PortA1  off  2015-02-27 15:58:46
PortA2  off  2015-02-27 16:34:40
PortA3  off  2015-02-27 15:50:26
PortA4  off  2015-02-27 15:31:25
PortA5  off  2015-02-27 15:31:25
PortA6  off  2015-02-27 15:31:26
PortA7  off  2015-02-27 15:31:27
PortB0  on   2015-02-28 10:33:26 <-- on
PortB1  off  2015-02-28 10:15:10
PortB2  off  2015-02-28 10:05:00
PortB3  off  2015-02-27 13:00:48
PortB4  off  2015-02-27 12:58:21
PortB5  off  2015-02-27 12:59:56
PortB6  off  2015-02-27 12:59:03
PortB7  off  2015-02-27 12:59:02
state   Ok   2015-02-28 10:39:49


Gruß
Thomas

ThomasRamm

Habe das ganze nochmal über einen notify versucht umzusetzen und dort das gleiche Problem.
define SchalterA1.notify notify SchalterA1:short set Led_B1 toggle

Der Status wird ebenfalls nicht aktualisiert.
Wenn ich in der Eingabezeile trigger SchalterA1 short eingebe funktioniert alles korrekt, wenn ich den Taster selber drücke, funktioniert es nicht mehr.

Keine Ahnung wo ich da ansetzen könnte um den Fehler zu finden

Gruß
Thomas

mc

Funktioniert folgendes?

attr Led_B0 setFn {($CMD eq "on")?"PortB0 off":"PortB0 on"}