angezeigtes stateFormat Aktuallisiert sich nicht automatisch

Begonnen von onkeloki, 16 Februar 2017, 14:58:54

Vorheriges Thema - Nächstes Thema

onkeloki

ich habe zwei Temperatur Sensoren:
HEIZUNG_A und HEIZUNG_B

Dazu ein weiteres Dummy welches die Differenz der Sensoren anzeigen soll
das mache ich so:


define dif.vl.rl dummy
attr dif.vl.rl stateFormat {ReadingsVal("HEIZUNG_B","temperature",0)-ReadingsVal("HEIZUNG_A","temperature",0)}


damit sich der state von dif.vl.rl aktualisiert, haben ich zusätzlich folgendes notify angelegt:


HEIZUNG_A:.*|HEIZUNG_B:.* {
  fhem "attr dif.vl.rl  stateFormat {ReadingsVal('HEIZUNG_B','temperature',0)-ReadingsVal('HEIZUNG_A','temperature',0)} ";

}


Alles funktioniert nun bereits wie erwartet.
Allerdings Aktualisiert sich die anzeige von  dif.vl.rl nicht automatisch (longpoll)
sondern ich muss erst f5 (Browser refresh) drucken damit ich einen neuen Wert sehe.
Was muss ich tun dammit sich auch dieser Wert (bzw die Anzeige) automatisch aktualisiert?

marvin78

stateFormat setzen muss man nur einmal. Das ist zur Aktualisierung nicht notwendig. Besser wäre es, wenn du per set den Wert im dummy direkt setzt.

DeeSPe

Verstehe ich nicht!

Du weist manuell stateFormat zu!
Dann weist Du das selbe Attribut noch einmal per notify bei jedem Event zu??
Warum?
Ein Attribut was 1x vergeben wurde und nicht verändert wird muss auch nicht bei jedem Event neu gesetzt werden!

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

marvin78

Er ezwingt damit die Aktualisierung. Das stateFormat ist aber gar nicht notwendig, wenn man über das notify den Wert des dummys einfach direkt setzt. Und hier ist vermutlich der Denkfehler.

DeeSPe

Ich tendiere zu einem entsprechenden userReading welches dann per stateFormat angezeigt wird.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

marvin78

#5
userReading macht dann keinen Sinn, wenn die Werte von einem oder mehreren anderen Devices kommen (wie in diesem Fall).

Er kann einfach direkt im notify auf Heizung A und B den Wert des dummys setzen:

HEIZUNG_A:.*|HEIZUNG_B:.* {$a=ReadingsVal("HEIZUNG_B","temperature",0)-ReadingsVal("HEIZUNG_A","temperature",0);fhem("set dif.vl.rl $a)}

Edit: Man kann natürlich in einem der Devices das userReading unterbringen, der Trigger für das 2. fehlt aber dann.

onkeloki

danke, das probiere ich aus..
richtig erkannt mit dem neuen setzen des stateFormat habe ich den refresh erzwungen ;)

onkeloki

#7
vielen dank hat funktioniert ich habe einfach aus
HEIZUNG_A:.*|HEIZUNG_B:.* {
  fhem "attr dif.vl.rl  stateFormat {ReadingsVal('HEIZUNG_B','temperature',0)-ReadingsVal('HEIZUNG_A','temperature',0)} ";

}


dies gemacht
HEIZUNG_A:.*|HEIZUNG_B:.* {
  fhem "set dif.vl.rl  {ReadingsVal('HEIZUNG_B','temperature',0)-ReadingsVal('HEIZUNG_A','temperature',0)} ";

}


wusste nicht dass man auch direkt "set" machen kann.. aber logisch .. tu ich ja mit anderen Schaltern auch ;) danke

**update**
ps: war eine doofe Idee.. merke ich gerade an den event logs ;)
werde nun doch erst rechnen und dann den wert setzen ..

DeeSPe

Zitat von: onkeloki am 16 Februar 2017, 15:33:56
vielen dank hat funktioniert ich habe einfach aus
HEIZUNG_A:.*|HEIZUNG_B:.* {
  fhem "attr dif.vl.rl  stateFormat {ReadingsVal('HEIZUNG_B','temperature',0)-ReadingsVal('HEIZUNG_A','temperature',0)} ";

}


dies gemacht
HEIZUNG_A:.*|HEIZUNG_B:.* {
  fhem "set dif.vl.rl  {ReadingsVal('HEIZUNG_B','temperature',0)-ReadingsVal('HEIZUNG_A','temperature',0)} ";

}


wusste nicht dass man auch direkt "set" machen kann.. aber logisch .. tu ich ja mit anderen Schaltern auch ;) danke

**update**
ps: war eine doofe Idee.. merke ich gerade an den event logs ;)
werde nun doch erst rechnen und dann den wert setzen ..


HEIZUNG_A:.*|HEIZUNG_B:.* {
  fhem "setreading dif.vl.rl temperature ".ReadingsVal('HEIZUNG_B','temperature',0)-ReadingsVal('HEIZUNG_A','temperature',0)}
}


Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe