Hauptmenü

sprintf mit readingval

Begonnen von horni, 29 März 2019, 15:58:38

Vorheriges Thema - Nächstes Thema

horni

Hallo..
Ich brauche mal Hilfe und zwar habe ich einen Wert (z.b 18650) den ich gerne nur auf 4 Stellen schreiben möchte. Habe ein Userreading auf gemacht das so aussieht

druckineu {sprintf("%4.0f",(ReadingsVal("druckmesser_log","drucki","?")))}

Ich bekomme das sprintf einfach nicht hin damit der Wert 1865 raus kommt. Kann mir da bitte mal jemand helfen ?

Danke

Otto123

#1
Hi,

sprintf formatiert die Ausgabe, es dividiert nicht :)
https://perldoc.perl.org/functions/sprintf.html

{sprintf("%4.0f",("18650")/10)}

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Beta-User

Sehr aufschlußreiches list, das du da geliefert hast...

Ansonsten ist nicht klar, ob du immer nur die vorderen 4 Ziffern haben willst (egal, ob das 4,5 oder 6-stellig ist...), oder einfach nur den ganzzahligen Anteil des Ergebnisses, wenn man durch 10 teilt.
Wenn letzteres, wäre es vielleicht zielführend, diese mathematische Anweisung auch dem userreadings nicht vorzuenthalten, wie Otto das grade vorgeschlagen hat. Und damit das userreading "druckineu"nur berechnet wird, wenn sich "drucki" ändert, solltest du vielleicht den Trigger einschränken ;) :

druckineu:drucki.*
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

horni

Ja danke...  ::)
Entweder hat die Nachtschicht heute mein Hirn etwas aufweichen lassen das ich nicht auf die einfache Lösung gekommen bin. Sieht jetzt so aus und geht

druckineu {sprintf("%.0f",(ReadingsVal("druckmesser_log","drucki","?")/10))}