Xiaomi Temperatur Sensor State übernehmen aus reading [GELÖST]

Begonnen von kmidt, 17 Februar 2019, 17:46:38

Vorheriges Thema - Nächstes Thema

kmidt

Hallo zusammen,

Ich bin am verzweifeln. Nach einer Woche probieren und suchen komme ich nicht weiter und hoffe ihr könnt mir helfen.

Ich habe Xiaomi Geräte ohne Cloud in FHEM am laufen.
Habe mir nur einProblem das die readings nicht direkt an State weitergehen werden.
Bei jeelink Temperatur Sensoren ist das Out of the Box so.

Anbei die screens Schilder das Problem .
Ich würde gerne wie beim jeelink (Arbeitszimmer ) auch die stati beim Xiaomi (arbeitszimmer_XT) angezeigt bekommen

Wie bekomme ich die vorhanden readings von Temperatur und Luftfeuchtigkeit direkt als state angezeigt.

Danke euch und Gruss ,
Andi

KernSani

Hi,

zuerst mal bitte keine Screenshots, sondern ein "list" des devices (in code tags) - siehe auch hier: https://forum.fhem.de/index.php/topic,71806.0.html (Das kann man auch nachträglich ändern)

Als nächstes empfehle ich die Lektüre zum Attribut "stateFormat" in der commandRef. (Da musst du allerdings ein wenig Perl basteln) Wenn du damit nicht weiter kommst, gerne wieder hier melden :-)

RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

kmidt


kmidt

So danke für den TIP habe es hinbekommen mit Stateformat.

Nur wie bekomme ich nun auf eine Nachkommastelle abgerundet ?

Habe einige Sachen mit Sprinf versucht aber komme nicht zum erfolg.

Der Code meines Stateformat sieht nun so aus :

T:temperature H:humidity D:dewpoint

Was muss ich wo dazuschreiben damit ich nur eine Nachkommastelle habe ?

kmidt

Keiner eine Idee ?:(
Gerade wieder 3 Stunden rumprobiert

mi.ke

sprintf war eine gute Idee.
Es gibt nun mehrere Wege.
Der vom Syntax wahrscheinlich einfachere,
Du könntest Dir ein userreading erstellen, das ein neues Reading erzeugt mit einer Nachkommestelle:
neuesReading {sprintf("%.1f",ReadingsVal($name,"temperature ",0))}

und das neue Reading, dann wieder in's stateFormat

T:neuesReading H:humidity D:dewpoint

Cheers
mi.ke
FHEM 5.9 | RPi4 + 5 x RPi(Z) + FB7590 + FB 6890 LTE via LAN und WAN (VPN) verbunden.
2 x CUL868 + 3 x RFXTRX(e) + 6 x HMwLanGW + 4 x z2tGw + 5 x LGW + 2 x IRBlast + CO2 +++
FS20, FHT, FMS, Elro(mod), CM160, Revolt, LGTV, STV, AVR, withings, HM-sec-*, HM-CC-RT-DN, AMAD, PCA301, arlo, Aqara

Nighthawk

Man kann sprintf direkt in stateformat verwenden:

Hier win Beispiel:
{sprintf("Zustand: %-6s / Zaehlerstand: %.2f W / aktuelle Leistung: %.2f W",ReadingsVal( $name,"state",0),ReadingsVal( $name,"total_consumption",0), ReadingsVal( $name,"power",0))}

Das sieht dann so aus:

Zustand: opened / Zaehlerstand: *****.** W / aktuelle Leistung: *****.** W

kmidt


kmidt


KernSani

Themen bitte nicht schliessen, sondern ins Subject des ersten Posts "[Gelöst]" mit reinschreiben. Schöne wäre es auch, wenn du deine Lösung noch zeigen würdest (für andere, die vielleicht das selbe Problem haben)
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

kmidt

Gelöst .

Anbei die Lösung

{sprintf("T: %.1f H: %.1f D: %.1f ",ReadingsVal( $name,"temperature",0),ReadingsVal( $name,"humidity",0), ReadingsVal( $name,"dewpoint",0))}

Jamo

Da das Ergebnis rein numerisch ist, kannst Du auch ReadingsNum anstatt ReadingsVal nehmen
{sprintf("T: %.1f H: %.1f D: %.1f ",ReadingsNum( $name,"temperature",0),ReadingsNum( $name,"humidity",0), ReadingsNum( $name,"dewpoint",0))}
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/Conbee III, FB7690, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack, Sonos, ESPresence

jkriegl

und im Modul kann man die Rundung einstellen.
Zitatrnd_tmp
Rpi 3/4, buster, Fhem, Cul 868, HM-CC-RT-DN, HM-Sec-Sco, HM-ES-PMSw1-Pl, ebus (Vaillant), ECMD, Telegram, HTTPMOD, Xiaomi, Shelly