Hauptmenü

usereading ohne Einheit

Begonnen von Marekh, 16 April 2017, 00:39:02

Vorheriges Thema - Nächstes Thema

Marekh

Hallo,

wieder ein Problem, ich habe einen Z-Wave Stromzähler, dieser sendet ein Reading energy mit dem Zählerstand, der natürlich bei 0 bekonnen hat.
Deshalb habe ich einen Dummy definiert mit den Startzählerstand (Stromzaehlerstand_original_Dummy) mit dem Reading "Stromzaehler_Ausgangsstand".

Jetzt habe ich ein userReading innerhalb meines z-Wave Stromzähler angelegt:
   
Gesamt {ReadingsNum($name,"energy",0) + ReadingsNum("Stromzaehlerstand_original_Dummy","Stromzaehler_Ausgangsstand",0)}

leider ist das Reading energie mit der Einheit  XX kWh previous: 18.56 delta_time: 5 s  behaftet, deshalb habe ich auch ReadingNum benutzt, aber ich bekomme immer einen Fehler im log, dass das reading nicht nummerisch ist.

Das userReading funktioniert aber.

list Stromzähler
Internals:
   DEF        f36eff30 6
   IODev      ZWDongle_1
   LASTInputDev ZWDongle_1
   MSGCNT     2049
   NAME       Stromzaehler
   NR         90
   STATE       68.516 W  0.915 A  233.873 V 72018.56118
   TYPE       ZWave
   ZWDongle_1_MSGCNT 2049
   ZWDongle_1_RAWMSG 000400060e3202216400004881000500004881
   ZWDongle_1_TIME 2017-04-16 00:34:34
   homeId     f36eff30
   nodeIdHex  06
   Readings:
     2017-04-16 00:34:34   Gesamt          72018.56118
     2017-04-08 19:25:06   assocGroups     1
     2017-04-16 00:34:34   current          0.915 A
     2017-04-16 00:34:34   energy           18.561 kWh previous: 18.561 delta_time: 5 s
     2017-04-15 21:37:29   meterSupported  type: energy scales: 0:kWh, 2:W, 4:V, 5:A resetable: yes
     2017-04-08 19:23:05   model           Aeotec Home Energy Meter G2
     2017-04-08 19:23:05   modelConfig     aeotec/hemg2.xml
     2017-04-08 19:23:05   modelId         0086-0002-001c
     2017-04-08 19:25:24   neighborList    empty
     2017-04-16 00:33:44   power            68.516 W
     2017-04-15 21:50:52   state           configGroup1Reports 4144911
     2017-04-15 21:50:53   transmit        OK
     2017-04-08 19:25:38   version         Lib 3 Prot 3.67 App 1.8
     2017-04-16 00:34:34   voltage          233.873 V
Attributes:
   IODev      ZWDongle_1
   classes    CONFIGURATION METER MULTI_CHANNEL ASSOCIATION MANUFACTURER_SPECIFIC VERSION
   room       Status,ZWave
   stateFormat power current voltage Gesamt
   userReadings Gesamt {ReadingsNum($name,"energy",0) + ReadingsNum("Stromzaehlerstand_original_Dummy","Stromzaehler_Ausgangsstand",0)}


list Stromzaehlerstand_original_Dummy

Save config ?
CUL_HM
FS20
Firmata
Garage
Logs
MAX
Schnittstellen
Status
Unsorted
ZWave
icoEverything Everything
Logfile
Commandref
Remote doc
Edit files
Select style
Event monitor

Internals:
   NAME       Stromzaehlerstand_original_Dummy
   NR         100
   STATE      72000
   TYPE       dummy
   Readings:
     2017-04-15 23:53:17   Stromzaehler_Ausgangsstand 72000
     2017-04-15 23:03:28   state           on
Attributes:
   readingList Stromzaehler_Ausgangsstand
   room       Status
   stateFormat Stromzaehler_Ausgangsstand



log:
2017.04.16 00:36:59 1: PERL WARNING: Argument "18.56118.5615" isn't numeric in addition (+) at (eval 10496) line 1.
2017.04.16 00:36:59 3: eval: {ReadingsNum($name,"energy",0) + ReadingsNum("Stromzaehlerstand_original_Dummy","Stromzaehler_Ausgangsstand",0)}


Danke
Marek

Icinger

{my $r=ReadingsNum($name,"energy",0);
           $r=~/([\d|\.]+)/;
           return $1 + ReadingsNum("Stromzaehlerstand_original_Dummy","Stromzaehler_Ausgangsstand",0);}


Ungetestet, müsste aber so passen als UserReading.

lg, Stefan
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

automatisierer

attr <xyz> userReadings Gesamt {(split(' ', ReadingsVal("$name","energy",0)))[0]+ReadingsNum("Stromzaehlerstand_original_Dummy","Stromzaehler_Ausgangsstand",0);}


sollte auch gehen...

Marekh

Danke, beides geht, auch wenn ich es noch nicht verstanden habe. :-)

Marek

automatisierer

lesen lesen lesen...

P.s. Icingers Lösung verstehe ich auch nicht...  ??? wobei ich nicht anzweifele das es funktioniert!