Readings verschiedener Geräte addieren

Begonnen von Nobby1805, 29 März 2018, 13:24:11

Vorheriges Thema - Nächstes Thema

eisman

hi,


userReadings powersume {ReadingsVal("ST01C2","power",0) + ReadingsVal("ST01C2","power",0)}


oder notify


defmod nPower notify ST01C2:power:.*|ST01C2:power:.* {\
   my $power1 = ReadingsVal("ST01C2","power",0);;\
   my $power2 = ReadingsVal("ST01C2","power",0);;\
   my $power  = 0;;\
   $power = $power1 + $power2;;\
   fhem("set Power " . $power . ";;");;\


ST01C2 device
Power dummy

bei mir gehts (aufwand 1min)

gruss
1x FHEM Debian, Homematic,ZigBee,FS20 / 1X Raspberry, ConBee / 5x ESP
1x FHEM Debian, Homematic,ZigBee         / 1X Raspberry, ConBee / 5x ESP
1x FHEM Debian,MQTT                               / 1X Raspberry, i2c,onewire,gpio
1x auf Windows 2012 Hyper-V-S

Nobby1805

Zitat von: Otto123 am 29 März 2018, 18:18:15
Von mir aus schreib doch jetzt in den Ausführungsteil an statt set ActionDetector
setreading PowerNotify SummPower {([Aqua_Pwr:power]+[Buero_Pwr:power])}

Und poste bitte keine Screenshots sonders list ....
Ich meine zwar, dass mein 2. oder 3. Versuch genau so aussah ... aber jetzt klappt es

Danke an alle Helferlein  ;D
FHEM-Featurelevel: 6   (fhem.pl:23904/2021-03-07) auf Windows 10 Pro mit Strawberry Perl 5.26.1.1-32bit
TabletUI: 2.7.15
IO: 2xHMLAN(0.965)|HMUSB2(0.967)

stefan.apetz

#17
Moin,

schon ein älteres Thema, aber ich greife es nochmal auf.

Folgende Definition:

defmod SolarPower notify Shelly_Gartenhaus:power:.*|Shelly_Solar_Garage:power:.*|solax:pv_total_power:.*|solax:home_power:.*|solax:battery_remain_capacity:.*|solax:grid_feed_in_power:.* {

   my $power1 = ReadingsVal("Shelly_Gartenhaus","power",0);;
   my $power2 = ReadingsVal("Shelly_Solar_Garage","power",0);;
   my $power3 = ReadingsVal("solax","pv_total_power",0);;
   my $power  = 0;;
   $power = $power1 + $power2 + $power3;;

   my $consumption1 = ReadingsVal("solax","home_power",0);;
   my $consumption2 = ReadingsVal("Shelly_Solar_Garage","power",0);;
   my $consumption3 = ReadingsVal("Shelly_Gartenhaus","power",0);;
   
   my $houseConsumption = 0;;
   $houseConsumption =  $consumption1 + $consumption2 + $consumption3;;

   my $batteryPower = ReadingsVal("solax","battery_power",0);;
   my $battery_remain_capacity = ReadingsVal("solax","battery_remain_capacity",0);;
   my $inverter_powerexported = ReadingsVal("solax","grid_feed_in_power",0);;
   
   $consumption1 = "Test";;
   
   fhem("setreading virtualSolar home_power" . "$consumption1");;
   fhem("setreading virtualSolar pv_total_power" . $power . ";;");;
   fhem("setreading virtualSolar battery_remain_capacity" . $battery_remain_capacity . ";;");;
   fhem("setreading virtualSolar battery_power" . $batteryPower . ";;");;
   fhem("setreading virtualSolar grid_feed_in_power" . $inverter_powerexported . ";;");;
   fhem("setreading virtualSolar test 12345678");;
   }


In meinem Zieldevice wird das Reading test mit 12345678 richtig geschrieben. Das auch bei jedem Notify. Aber: alle andere kommt nicht an. Sprich: das setreading wird nicht ausgeführt.

Das Log schmeisst zudem folgendes:

2022.11.22 09:21:46 1: PERL WARNING: "my" variable $consumption1 masks earlier declaration in same scope at (eval 478) line 1.
2022.11.22 09:21:46 1: PERL WARNING: Use of uninitialized value $consumption1 in concatenation (.) or string at (eval 478) line 1.


Wo ist mein (Denk-) Fehler?

Danke :-)

frank

da fehlen leerzeichen zwischen readingname und value.
bsp:
fhem("setreading virtualSolar pv_total_power $power");;
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

stefan.apetz

Danke, hat geklappt. Lässt sich ja auch einfacher / schöner darstellen:

defmod SolarPower notify Shelly_Gartenhaus:power:.*|Shelly_Solar_Garage:power:.*|solax:pv_total_power:.*|solax:home_power:.*|solax:battery_remain_capacity:.*|solax:grid_feed_in_power:.* {

   my $power1 = ReadingsVal("Shelly_Gartenhaus","power",0);;
   my $power2 = ReadingsVal("Shelly_Solar_Garage","power",0);;
   my $power3 = ReadingsVal("solax","pv_total_power",0);;
   my $power  = 0;;
   $power = $power1 + $power2 + $power3;;

   my $hausverbrauch1 = ReadingsVal("solax","home_power",0);;
   my $hausverbrauch2 = ReadingsVal("Shelly_Solar_Garage","power",0);;
   my $hausverbrauch3 = ReadingsVal("Shelly_Gartenhaus","power",0);;
   
   my $houseConsumption = 0;;
   
   $houseConsumption = $hausverbrauch1 + $hausverbrauch2 + $hausverbrauch3;;

   my $batteryPower = ReadingsVal("solax","battery_power",0);;
   my $battery_remain_capacity = ReadingsVal("solax","battery_remain_capacity",0);;
   my $inverter_powerexported = ReadingsVal("solax","grid_feed_in_power",0);;
   
   
   
   fhem("setreading virtualSolar home_power $houseConsumption");;
   fhem("setreading virtualSolar pv_total_power $power");;
   fhem("setreading virtualSolar battery_remain_capacity $battery_remain_capacity");;
   fhem("setreading virtualSolar battery_power $batteryPower");;
   fhem("setreading virtualSolar grid_feed_in_power $inverter_powerexported ");;
   }


Jetzt hab ich alles korrekt in meinem Dummy Device :-)