Hauptmenü

Runden mit round

Begonnen von KarlHeinz2000, 08 Juni 2018, 21:19:54

Vorheriges Thema - Nächstes Thema

KarlHeinz2000

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?

mumpitzstuff

$rounded = int($value + 0.5);

betateilchen


  • 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)


-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

KarlHeinz2000

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.

stobor

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>
Intel NUC (Ubuntu 22.04.2 LTS (GNU/Linux 5.15.0-113-generic x86_64))  mit CUL V3.2 (FW 1.57 CUL868) für FS20 und CCU3 für HM(IP) + Arduino Mega (Firmata) - FHEM Revision: 29534 - FS20, HM(IP), MQTT, Philips HUE, ModBus

betateilchen

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)


-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

stobor

Danke.  :D

Wo/Wie genau muss ich dass den eintragen?
Intel NUC (Ubuntu 22.04.2 LTS (GNU/Linux 5.15.0-113-generic x86_64))  mit CUL V3.2 (FW 1.57 CUL868) für FS20 und CCU3 für HM(IP) + Arduino Mega (Firmata) - FHEM Revision: 29534 - FS20, HM(IP), MQTT, Philips HUE, ModBus

betateilchen

wo: als perl Code in die Definition des userReadings.
wie: siehe Doku zu userReadings.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

stobor

Ich finde da keinen hilfreichen Eintrag.
Intel NUC (Ubuntu 22.04.2 LTS (GNU/Linux 5.15.0-113-generic x86_64))  mit CUL V3.2 (FW 1.57 CUL868) für FS20 und CCU3 für HM(IP) + Arduino Mega (Firmata) - FHEM Revision: 29534 - FS20, HM(IP), MQTT, Philips HUE, ModBus

stobor

Hab's:
attr HM_PoolTemperatur userReadings PoolTemp {round(ReadingsNum('HM_PoolTemperatur','1.ACTUAL_TEMPERATURE',-1),1)}


Danke!
Intel NUC (Ubuntu 22.04.2 LTS (GNU/Linux 5.15.0-113-generic x86_64))  mit CUL V3.2 (FW 1.57 CUL868) für FS20 und CCU3 für HM(IP) + Arduino Mega (Firmata) - FHEM Revision: 29534 - FS20, HM(IP), MQTT, Philips HUE, ModBus

Wolle02

Anstatt eines extra Userreadings müsste es auch gehen, wenn du in deinem HMCCUDEV Device das vorhandene Attribut stripnumber auf -1 setzt.

stobor

Intel NUC (Ubuntu 22.04.2 LTS (GNU/Linux 5.15.0-113-generic x86_64))  mit CUL V3.2 (FW 1.57 CUL868) für FS20 und CCU3 für HM(IP) + Arduino Mega (Firmata) - FHEM Revision: 29534 - FS20, HM(IP), MQTT, Philips HUE, ModBus

fabse

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

Christoph Morrison

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?