Ich nutze an verschiedenen Stellen round
zum Runden. Das funktioniert soweit gut. Nur bei userReadings bekomme ich es nicht hin.
So geht es:
attr MYSENSOR_53 stateFormat {round(( ReadingsVal("MYSENSOR_53","fuellstand_perc","?")),0)}
das geht nicht (vereinfachtes Beispiel):
attr MYSENSOR_53 userReadings fuellstand_perc:distance_corr.* {round(83),1}
Fehlermeldung:
Error evaluating MYSENSOR_53 userReading fuellstand_perc: Not enough arguments for main::round at (eval 5347296) line 1, near...
Ich habe alle möglichen Klammern probiert.
Muss man da noch was anders machen?
$rounded = int($value + 0.5);
- Fehler (bei attr ... stateFormat) : zuviele Klammern
- Fehler (bei attr ... userReadings) : ein "?" als defaultValue bei ReadingsVal() führt zu perl Meldungen im Log, weil man einen String nicht mathematisch runden kann
- Fehler (bei attr ... userReadings) : die Anzahl der Nachkommastellen muss als Funktionsparameter IN die Klammer des Funktionsaufrufes round(83,1)
Danke für die Unterstützung. Läuft jetzt.
Die Log Einträge wegen dem "?" will ich haben, da ich dann sehe wenn das Reading fehlt. Und das darf nicht sein.
Ich bekomme es nicht hin.
Mein Device:
define HM_PoolTemperatur HMCCUDEV 000E9BE98B0146
attr HM_PoolTemperatur IODev d_ccu
attr HM_PoolTemperatur room Klima
attr HM_PoolTemperatur userReadings measured-temp
In den Readings steht:
1.ACTUAL_TEMPERATURE 28.000000 2020-06-27 11:20:49
1.HUMIDITY 59 2020-06-26 16:53:22
hmstate Initialized 2020-06-27 11:20:49
state Initialized 2020-06-27 11:20:09
Wie bekomme ich denn die Temperatur (1.ACTUAL_TEMPERATURE) auf eine Nachkommastelle gerundet?
Der Wert soll am Ende über TabletUI dargestellt werden:
<div data-type="label"
data-device="HM_PoolTemperatur"
data-get="1.ACTUAL_TEMPERATURE"
data-unit="°C"
data-color="White"
class="display-center great">
</div>
Zitat von: stobor am 27 Juni 2020, 11:34:40
Wie bekomme ich denn die Temperatur (1.ACTUAL_TEMPERATURE) auf eine Nachkommastelle gerundet?
round(ReadingsNum('HM_PoolTemperatur','1.ACTUAL_TEMPERATURE',-1),1)
Danke. :D
Wo/Wie genau muss ich dass den eintragen?
wo: als perl Code in die Definition des userReadings.
wie: siehe Doku zu userReadings.
Ich finde da keinen hilfreichen Eintrag.
Hab's:
attr HM_PoolTemperatur userReadings PoolTemp {round(ReadingsNum('HM_PoolTemperatur','1.ACTUAL_TEMPERATURE',-1),1)}
Danke!
Anstatt eines extra Userreadings müsste es auch gehen, wenn du in deinem HMCCUDEV Device das vorhandene Attribut stripnumber auf -1 setzt.
Top, läuft auch!
hmm ich bekomm das mit dem round auch nicht hin :(
define BTC HTTPMOD https://www.finanzen.net/devisen/bitcoin-dollar-kurs 60
attr BTC userattr reading01Format
attr BTC enableControlSet 1
attr BTC group Preise
attr BTC reading01Name bitcoin
attr BTC reading01OExpr $val =~ s/,/\./;; $val;;
attr BTC reading01RegOpt s
attr BTC reading01Regex quotebox">[^<]*<div[^<]*<div>([\d\.?\,?]+)
attr BTC room 1. My-Room,all,hidden
attr BTC stateFormat bitcoin $
würde gern bei dem bitcoin die kompletten kommastellen runden
Zitat von: fabse am 13 März 2021, 17:25:50
würde gern bei dem bitcoin die kompletten kommastellen runden
Möchtest du nur die Nachkommastellen wegschneiden oder wirklich runden?