FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: kmidt am 17 Februar 2019, 17:46:38

Titel: Xiaomi Temperatur Sensor State übernehmen aus reading [GELÖST]
Beitrag von: kmidt am 17 Februar 2019, 17:46:38
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
Titel: Antw:Xiaomi Temperatur Sensor State übernehmen aus reading
Beitrag von: KernSani am 17 Februar 2019, 17:52:25
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 :-)

Titel: Antw:Xiaomi Temperatur Sensor State übernehmen aus reading
Beitrag von: kmidt am 17 Februar 2019, 17:54:01
Danke dir. Dann studiere ich Mal stateformat
Titel: Antw:Xiaomi Temperatur Sensor State übernehmen aus reading
Beitrag von: kmidt am 18 Februar 2019, 08:59:15
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 ?
Titel: Antw:Xiaomi Temperatur Sensor State übernehmen aus reading
Beitrag von: kmidt am 19 Februar 2019, 00:13:42
Keiner eine Idee ?:(
Gerade wieder 3 Stunden rumprobiert
Titel: Antw:Xiaomi Temperatur Sensor State übernehmen aus reading
Beitrag von: mi.ke am 19 Februar 2019, 00:32:25
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
Titel: Antw:Xiaomi Temperatur Sensor State übernehmen aus reading
Beitrag von: Nighthawk am 19 Februar 2019, 05:25:30
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
Titel: Antw:Xiaomi Temperatur Sensor State übernehmen aus reading
Beitrag von: kmidt am 19 Februar 2019, 08:28:16
Probiere ich aus. Schon Mal danke
Titel: Antw:Xiaomi Temperatur Sensor State übernehmen aus reading
Beitrag von: kmidt am 19 Februar 2019, 10:23:56
Funktioniert alles, danke euch !!!
Titel: Antw:Xiaomi Temperatur Sensor State übernehmen aus reading
Beitrag von: KernSani am 19 Februar 2019, 11:56:39
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)
Titel: Antw:Xiaomi Temperatur Sensor State übernehmen aus reading
Beitrag von: kmidt am 19 Februar 2019, 12:14:17
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))}
Titel: Antw:Xiaomi Temperatur Sensor State übernehmen aus reading
Beitrag von: Jamo am 19 Februar 2019, 12:25:23
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))}
Titel: Antw:Xiaomi Temperatur Sensor State übernehmen aus reading
Beitrag von: jkriegl am 19 Februar 2019, 15:34:30
und im Modul kann man die Rundung einstellen.
Zitatrnd_tmp