FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: hyper2910 am 14 August 2017, 15:17:23

Titel: Rechnen in FHEM
Beitrag von: hyper2910 am 14 August 2017, 15:17:23
Hallo,

vielleicht habe ich das richtige noch nicht gefunden, ich weiss momentan auch nicht wo ich richtig ansetzen soll.

Wir tauschen momentan alle möglichen Zähler gegen WM-Bus Varianten aus.  Das funktioniert auch alles einwandfrei in FHEM.

Jedoch haben wir die Zähler an versch. Stellen eingebaut und jetzt würde ich gerne direkt in FHEM mit diesen rechnen.

Ich habe einen KW Zähler, (Wert steht in 2_value) einen WW Zähler   -- Ziel ist es einen Gesamtverbrauch zu errechnen, also WW + KW in einen neuen Dummy Device Total.

könnte mir einer auf die Sprünge helfen!
Titel: Antw:Rechnen in FHEM
Beitrag von: Fixel2012 am 14 August 2017, 15:21:37
Dies ist prinzipiell ganz einfach, in Fhem direkt geht das allerdings nicht. Du musst mit {} in perl wechseln und dann kannst du mit Variablen oder deinen Readings weiter arbeiten. Rechenzeichen sind ganz normal + - * /
Titel: Antw:Rechnen in FHEM
Beitrag von: hyper2910 am 14 August 2017, 15:27:06
Ok, das ganze dann mit user readings oder readingsval.  Irgendwie Stehen ich auf der Leitung und Kriegsfuß mit Perl
Titel: Antw:Rechnen in FHEM
Beitrag von: MadMax-FHEM am 14 August 2017, 15:41:30
Vielleicht hilft das:

https://forum.fhem.de/index.php?topic=16972.0

Gruß, Joachim
Titel: Antw:Rechnen in FHEM
Beitrag von: EIB-Fan am 14 August 2017, 16:00:19
Hallo Hyper2910,

das geht auch mit DOIF ... 8)

define di_gesamt DOIF ([":^2_value"]) (set Dummy_gesamt {([WW:2_value]+[KW:2_value])})
attr di_gesamt do always


Bei jeder Aktualisierung von deinen Werten in 2_value wird im Dummy_gesamt die Summe auf WW & KW geschrieben.

Das kann man natürlich noch weiter verfeinern, wenn die Device den entsprechenden Syntax haben.

Gruß Jens

Titel: Antw:Rechnen in FHEM
Beitrag von: hyper2910 am 14 August 2017, 16:23:02
mit DOIF habe ich auch schon gefunden, aber das klappt bei mir nicht

Illegal octal digit '8' at (eval 4833) line 1, at end of line syntax error at (eval 4833) line 1, near "14 16" Illegal octal digit '8' at (eval 4833) line 1, at end of line
Titel: Antw:Rechnen in FHEM
Beitrag von: CoolTux am 14 August 2017, 16:25:20
Ein list der entsprechenden Devices wäre vielleicht hilfreich.
Titel: Antw:Rechnen in FHEM
Beitrag von: hyper2910 am 14 August 2017, 16:35:08
Hi,

hier das List,  die beiden sehen absolut identisch aus, sind die gleich Zähler.



Internals:
   DEF        BMT 16157095 19 7
   DeviceMedium Water
   DeviceType 7
   IODev      nanoCUL_WM
   IdentNumber 16157095
   LASTInputDev nanoCUL_WM
   MSGCNT     160
   Manufacturer BMT
   MessageEncoding CUL
   NAME       Warmwasser_Dirk
   NR         1098
   STATE      no errors
   TYPE       WMBUS
   Version    19
   addr       BMT_16157095_19_7
   nanoCUL_WM_MSGCNT 160
   nanoCUL_WM_RAWMSG b2144B409957015161307773B7A3B0000000C1379010000046D22302EBC56280F050E00000000DE2380::-70
   nanoCUL_WM_RSSI -70
   nanoCUL_WM_TIME 2017-08-14 16:34:18
   READINGS:
     2017-08-14 16:34:18   1_storage_no    0
     2017-08-14 16:34:18   1_type          VIF_VOLUME
     2017-08-14 16:34:18   1_unit          m³
     2017-08-14 16:34:18   1_value         0.179
     2017-08-14 16:34:18   1_value_type    Instantaneous value
     2017-08-14 16:34:18   2_storage_no    0
     2017-08-14 16:34:18   2_type          VIF_TIME_POINT_DATE_TIME
     2017-08-14 16:34:18   2_unit
     2017-08-14 16:34:18   2_value         2017-08-14 16:34
     2017-08-14 16:34:18   2_value_type    Instantaneous value
     2017-08-14 16:34:18   LQI             128
     2017-08-14 16:34:18   RSSI            -70
     2017-08-14 16:34:18   battery         ok
     2017-08-14 16:34:18   decryption_ok   1
     2017-08-14 16:34:18   is_encrypted    0
     2017-08-14 16:34:18   state           no errors
     2017-08-14 16:34:18   unit            m³
     2017-08-14 16:34:18   volume          0.179
Attributes:
   IODev      nanoCUL_WM
   room       9.09 Hilfe
Titel: Antw:Rechnen in FHEM
Beitrag von: EIB-Fan am 14 August 2017, 16:43:05
Hallo hyper2910,

mit den Angaben aus deinem list sollte es dann etwa so aussehen:

define di_gesamt DOIF ([":^1_value"]) (set Dummy_gesamt {([Warmwasser_Dirk:1_value]+[Kaltwasser_Dirk:1_value])})
attr di_gesamt do always


Deine Werte stehen nicht in 2_value sondern in 1_value (oder volume). ::)

Gruß Jens