Problem mit stateFormat

Begonnen von update71, 22 April 2015, 21:41:37

Vorheriges Thema - Nächstes Thema

update71

Nabend,

vermutlich versteh ich mal wieder irgendwas nicht. Ich habe einen Temperatursensor der mir auch schön Temp und Feuchte anzeigt. Nun hab ich ein wenig mit stateFormat gespielt und es wird auch wie gewünscht angezeigt:
Temperatur: x.x °C Luftfeuchte: x.x %
Nur hab ich dann Sorgen mit meinen Pilight Steckdosen ... da haut dann die schalterei nicht mehr hin. Aus gehen sie noch, ändern den Staus aber nicht, einzeln über Icon anschalten nicht mehr.

attr HM_Sensor_Aussen stateFormat {sprintf('Temperatur: %.1f °;C  Luftfeuchte: %.1f %%',ReadingsVal($name,'temperature','0'),ReadingsVal($name,'humidity','0'))}


Kann mir das jemand erklären, bitte?

Danke Th.
Thomas
###########
Raspi mit Fhem, nanoCUL 433 + mehrere Brennstuhl Steckdosen - HM-LAN + Thermostat, 6 fach Taster, Aussensensor - HUEBridge + 3 weiße LEDs ... mehr folgt

JoWiemann

Hallo,

stateFormat verändert den STATE eines Devices. Viele Devices benötigen ein korrektes STATE um zu funktionieren. Also Vorsicht mit stateFormat. Es sollte immer so genutzt werde, wie das Device es erwartet und nicht wie man es möchte.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

update71

Kannst du mir sagen warum es auch Auswirkungen hatte auf andere Devices?

Wo kann ich sehen was ein Device "erwartet" ?

Danke, Th.
Thomas
###########
Raspi mit Fhem, nanoCUL 433 + mehrere Brennstuhl Steckdosen - HM-LAN + Thermostat, 6 fach Taster, Aussensensor - HUEBridge + 3 weiße LEDs ... mehr folgt

JoWiemann

Deine erste Frage verstehe ich nicht. Bei der zweiten, entweder es steht in der Commander.ref oder durch Ausprobieren. Bei aktiven Devices, also Devices die etwas an Aktoren senden würde ich stateFormat nur einsetzen, wenn ich wirklich den STATE verändern möchte und weiß was ich tue. Bei passiven Devices sollte unkritisch sein.



Grüße Jörg

Gesendet von iPhone mit Tapatalk
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

update71

Hi,

ZitatKannst du mir sagen warum es auch Auswirkungen hatte auf andere Devices?
Ich meine damit dass, wenn ich das so wie im ersten Beitrag beschrieben nutze dann gehen meine Steckdosen nicht mehr anzusteuern. Völlig anderes Device als das was ich mit dem Stateformat ändern möchte.
Ich bekomme dann die Anzeige wie gewünscht nur kann ich dann über die Weboberfläche andere Devices nicht mehr schalten. Kommentiere ich das aus dann gehts sofort wieder.

Das was ich ändern will ist nur die Anzeige von einem Temperatur/Feuchte Sensor (Homematic). Also nix was irgendwas schalten muss oder Befehle entgegennimmt.
Thomas
###########
Raspi mit Fhem, nanoCUL 433 + mehrere Brennstuhl Steckdosen - HM-LAN + Thermostat, 6 fach Taster, Aussensensor - HUEBridge + 3 weiße LEDs ... mehr folgt

marvin78

Lagere den Perl-Code mal in eine sub der myUtils aus und schaue, ob es dann wieder funktioniert.

JoWiemann

Nimm doch mal anstatt:


attr HM_Sensor_Aussen stateFormat {sprintf('Temperatur: %.1f °;C  Luftfeuchte: %.1f %%',ReadingsVal($name,'temperature','0'),ReadingsVal($name,'humidity','0'))}


folgendes:


attr HM_Sensor_Aussen stateFormat {sprintf('Temperatur: %.1f °;C  Luftfeuchte: %.1f %%',ReadingsVal('HM_Sensor_Aussen','temperature','0'),ReadingsVal('HM_Sensor_Aussen','humidity','0'))}


Mir ist nämlich nicht klar, welchen Inhalt $Name zum Zeitpunkt des Aufrufs hat.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

Puschel74

#7
Zitat von: JoWiemann am 25 April 2015, 19:14:10

Mir ist nämlich nicht klar, welchen Inhalt $Name zum Zeitpunkt des Aufrufs hat.

Grüße Jörg

IdR sollte $NAME hier (und nur hier) HM_Sensor_Aussen als Inhalt haben da es das auslösende Device ist.
$name sollte auch $NAME geschrieben werden da $name nicht belegt ist - gibt es im Logfile keine Fehlermeldung dazu  :o.
$NAME ist eine FHEM-gültige Variable.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

marvin78

#8
@Puschel74: Das ist leider hier quatsch. In den userReadings enthält $name und nur $name den Namen des Devices ;) $NAME ist dort nicht gesetzt. $NAME gibt es nur in notifies, so weit mir bekannt ist.

Puschel74

#9
Zitat von: marvin78 am 25 April 2015, 19:25:08
@Puschel74: Das ist leider hier quatsch. In den userReadings enthält $name und nur $name den Namen des Devices ;) $NAME ist dort nicht gesetzt.

Man könnte man probieren, $name hier in ' ' zu setzen.
Daher verwende ich keine UserReadings dafür  :P

in einer sub klappt das
my ($DEVICE,$READING,$VALUE) = @_;
nämlich einwandfrei - ok, $NAME kommt dort auch nicht vor da es dort $DEVICE ist (hab ich mit notify verwechselt - mea culpa tut mir leid).
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

marvin78

Ich wollte nicht damit sagen, dass man hier userReadings verwenden sollte ;) Aber dadurch kommt der Threadersteller vermutlich darauf.

Eine sub habe ich ja oben schon empfohlen.

update71

nun bin ich vollends verwirrt  :o

Ich hab mir jetzt auch nochmal die Anfängerdoku vorgenommen ... finde da aber weder eine Erklärung (wann, wieso, weshalb) zu userReadings noch was es mit den Subs auf sich hat und wann die warum einzusetzen sind  :o :o

Ich versuch mich weiter durchzukämpfen  8)

Th.
Thomas
###########
Raspi mit Fhem, nanoCUL 433 + mehrere Brennstuhl Steckdosen - HM-LAN + Thermostat, 6 fach Taster, Aussensensor - HUEBridge + 3 weiße LEDs ... mehr folgt

marvin78

Hast du das hier probiert?

attr HM_Sensor_Aussen stateFormat {sprintf('Temperatur: %.1f °;C  Luftfeuchte: %.1f %%',ReadingsVal('HM_Sensor_Aussen','temperature','0'),ReadingsVal('HM_Sensor_Aussen','humidity','0'))}

update71

Hi,

ja, hab ich grade mal gemacht und es scheint zu funktionieren. Wenn aber doch $name eigentlich HM_Sensor_Aussen enthält was ist daran denn jetzt anders?

Danke, Th.
Thomas
###########
Raspi mit Fhem, nanoCUL 433 + mehrere Brennstuhl Steckdosen - HM-LAN + Thermostat, 6 fach Taster, Aussensensor - HUEBridge + 3 weiße LEDs ... mehr folgt

marvin78

Das stimmt so nicht. $name enthält den Devicenamen in userReadings, offenbar aber nicht in stateFormat (siehe oben).