FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: KarlHeinz2000 am 08 Juni 2018, 21:19:54

Titel: Runden mit round
Beitrag von: KarlHeinz2000 am 08 Juni 2018, 21:19:54
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?
Titel: Antw:Runden mit round
Beitrag von: mumpitzstuff am 08 Juni 2018, 23:06:20
$rounded = int($value + 0.5);
Titel: Antw:Runden mit round
Beitrag von: betateilchen am 09 Juni 2018, 09:55:12


Titel: Antw:Runden mit round
Beitrag von: KarlHeinz2000 am 10 Juni 2018, 22:41:48
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.
Titel: Antw:Runden mit round
Beitrag von: stobor am 27 Juni 2020, 11:34:40
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="&deg;C"
    data-color="White"
    class="display-center great">
</div>
Titel: Antw:Runden mit round
Beitrag von: betateilchen am 27 Juni 2020, 11:40:19
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)


Titel: Antw:Runden mit round
Beitrag von: stobor am 27 Juni 2020, 11:41:57
Danke.  :D

Wo/Wie genau muss ich dass den eintragen?
Titel: Antw:Runden mit round
Beitrag von: betateilchen am 27 Juni 2020, 11:43:08
wo: als perl Code in die Definition des userReadings.
wie: siehe Doku zu userReadings.
Titel: Antw:Runden mit round
Beitrag von: stobor am 27 Juni 2020, 11:56:49
Ich finde da keinen hilfreichen Eintrag.
Titel: Antw:Runden mit round
Beitrag von: stobor am 27 Juni 2020, 12:01:59
Hab's:
attr HM_PoolTemperatur userReadings PoolTemp {round(ReadingsNum('HM_PoolTemperatur','1.ACTUAL_TEMPERATURE',-1),1)}


Danke!
Titel: Antw:Runden mit round
Beitrag von: Wolle02 am 27 Juni 2020, 12:03:46
Anstatt eines extra Userreadings müsste es auch gehen, wenn du in deinem HMCCUDEV Device das vorhandene Attribut stripnumber auf -1 setzt.
Titel: Antw:Runden mit round
Beitrag von: stobor am 27 Juni 2020, 12:41:10
Top, läuft auch!
Titel: Antw:Runden mit round
Beitrag von: fabse am 13 März 2021, 17:25:50
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
Titel: Antw:Runden mit round
Beitrag von: Christoph Morrison am 13 März 2021, 18:55:20
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?