TabletUI / Chart / FIlelog : Einheit Watt in kW formatieren ?

Begonnen von ChrisW, 06 November 2018, 12:05:25

Vorheriges Thema - Nächstes Thema

ChrisW

Hallo,
habe das Problem ich habe einmal Hausverbrauch : 1.00 kW wird dies ausgegeben für meine SOlaranlage wird aber Watt ausgegeben 1000 W.. wie kann ich die SOlaranlage umformatieren das wiese auch 1.00kW anzeigt ?
Kann ich dies direkt im Tabletui script oder muss da sim Filelog passieren?

Tabletui:
<div data-type="chart"
data-logdevice='["EnergieD","SOLAR.File"]'
data-columnspec='["7:Hausstrom.W:.*","4:AC.Power:.*"]'
data-style='["ftui l0fill","ftui l1fill"]'
data-ptype='["lines","histeps"]'
data-uaxis='["primary","secondary"]'
data-legend='["Verbrauch","Solar"]'
data-yunit="kW"
data-ytext="Verbrauch (kW)"
data-minvalue="auto"
data-maxvalue="auto"
data-yunit_sec="kw"
data-ytext_sec="Solar (kW)"
data-height="250"
data-yticks="auto"
data-minvalue_sec="auto"
data-maxvalue_sec="auto"
data-nofulldays="true"
data-cursorgroup="1"
data-scrollgroup="1"
data-xticks="auto">
</div>


Oder im SOLAR Device besser?
Internals:
   DEF        192.168.2.51 pvserver MEINPW
   NAME       SOLAR
   NR         624
   STATE      W: 3326 - Einspeisen (MPP)
   TYPE       KOSTALPIKO
   VERSION    2.10
   .attraggr:
   .attrminint:
   .userReadings:
     HASH(0x4e238a8)
   READINGS:
     2018-11-06 12:06:47   AC.Power        3326
     2018-11-06 12:06:47   AC.Power.Fast   3326
     2018-11-06 12:06:47   Daily.Energy    5.43
     2018-11-05 23:00:35   Daily.Energy.Last 6.72
     2018-11-06 12:06:47   EnergyExpected  6.66
     2018-11-06 11:37:16   Global.Radiation 1.8
     2018-11-06 07:46:40   Mode            Einspeisen (MPP)
     2018-11-06 07:45:42   ModeNum         9
     2018-11-06 11:55:48   Total.Energy    448055
     2018-11-06 11:37:16   UV.Index        2
     2018-11-06 12:06:47   generator.1.current 5.59
     2018-11-06 12:06:47   generator.1.voltage 623
     2018-11-06 12:06:47   generator.2.current 0.02
     2018-11-06 12:06:47   generator.2.voltage 623
     2018-11-06 12:06:47   output.1.power  1103
     2018-11-06 12:06:47   output.1.voltage 228
     2018-11-06 12:06:47   output.2.power  1112
     2018-11-06 12:06:47   output.2.voltage 229
     2018-11-06 12:06:47   output.3.power  1111
     2018-11-06 12:06:47   output.3.voltage 229
     2018-11-06 12:00:49   sensor.1        0.00
     2018-11-06 12:04:49   sensor.2        0.00
     2018-11-06 12:06:47   sensor.3        0.01
     2017-10-10 15:05:06   sensor.4        9.99
     2018-11-06 12:06:47   state           W: 3326 - Einspeisen (MPP)
     2018-11-06 11:37:16   sunshine.duration 50
   helper:
     GRHour     25
     Host       192.168.2.51
     Pass       MEINPW
     TimerGR    SOLAR.GR
     TimerGRInterval 3600
     TimerInterval 60
     TimerStatus SOLAR.STATUS
     User       pvserver
     delayCounter 0
Attributes:
   GR.Interval 3600
   GR.Link    http://www.proplanta.de/Wetter/Schwalmtal+%28Niederrhein%29-Wetter-Heute.html
   delay      60
   room       STROM
   userReadings EnergyExpected { return ReadingsVal("SOLAR","Global.Radiation",0)*37*0.10;;}
   verbose    2
Raspberry PI3 mit allem möglichen.

eki

Es gibt verschiedene Möglichkeiten:

1. Du definierst ein Userreading, in welchem Du den Wert des Readings, das den Watt Wert enthält, durch tausend dividierst.
attr SOLAR userreading AC.powerKW:AC.Power{ReadingsVal($NAME,'AC.Power','0')/1000;}
In diesem Fall wird dann ein zusätzlicher Wert mit den Kilowatt Angaben ins Logfile geschrieben (vorausgesetzt Du hast das Log nicht entsprechend über RegEx eingeschränkt. Im Chart musst Du dann statt AC.Power in der Columnspec AC.PowerKW eintragen.

2. Du machst die Umrechnung direkt in der Columnspec. Dann werden in FHEM keine zusätzlichen Dinge erzeugt, sonder die Umrechnung passiert beim Abholen der Werte im FHEM. Die Columnspect müsste dann in etwa so aussehen:
data-columnspec='["7:Hausstrom.W:.*","4:AC.Power:0:$val=($fld[3]*/1000)"]'


Beides hat Vor- und Nachteile, ich würde 2. empfehlen.

ChrisW

Danke sowas wie data-columnspec='["7:Hausstrom.W:.*","4:AC.Power:0:$val=($fld[3]*/1000)"]' hab ich mir da vorgestellt leider kann er keinen Wert auslesen ... hab schon bisschen gespielt .* usw. aber bekomme es nicht hin Log schaut so aus:
2018-11-06_13:45:03 SOLAR AC.Power: 2875
Raspberry PI3 mit allem möglichen.

eki

Da hatte ich noch einen Fehler, muss natürlich nicht */ sondern nur / heißen.

data-columnspec='["7:Hausstrom.W:.*","4:AC.Power:0:$val=($fld[3]/1000)"]'

ChrisW

Danke und das Userreading ? Ich habe da schon etwas drin stehen
   userReadings EnergyExpected { return ReadingsVal("SOLAR","Global.Radiation",0)*37*0.10;;}
Raspberry PI3 mit allem möglichen.

eki

mehrere userreadings werden einfach mit ',' getrennt hintereinander gehängt (siehe commandref). Aber Du brauchst ja nur das eine (userreading) oder das andere (columnspec).

ChrisW

Jep das hatte ich rausgefunden aber es taucht nichts auf
so schaut es aktuell aus:
EnergyExpected { return ReadingsVal("SOLAR","Global.Radiation",0)*37*0.10;;},
AC.powerKW:AC.Power{ReadingsVal($NAME,'AC.Power','0')/1000;}


Ich weiss aber ich habe noch ein Label in Tabletui daher will ich es doch per userreading machen
Raspberry PI3 mit allem möglichen.

eki

Müsste eigentlich gehen. Das neue Userreading erscheint allerdings erst, wenn sich auch der entsprechende Event auftritt (wenn sich also das Reading AC.Power ändert).

ChrisW

hmm leider nicht auch kein Fehler im log :(
Internals:
   DEF        192.168.2.51 pvserver meinpw
   NAME       SOLAR
   NR         624
   STATE      W: 2579 - Einspeisen (MPP)
   TYPE       KOSTALPIKO
   VERSION    2.10
   .attraggr:
   .attrminint:
   .userReadings:
     HASH(0x5341ad0)
   READINGS:
     2018-11-07 12:54:22   AC.Power        2579
     2018-11-07 12:54:22   AC.Power.Fast   2579
     2018-11-07 12:54:22   Daily.Energy    7.04
     2018-11-06 23:00:18   Daily.Energy.Last 14.39
     2018-11-07 12:54:22   EnergyExpected  4.44
     2018-11-07 12:54:22   Global.Radiation 1.2
     2018-11-07 07:44:00   Mode            Einspeisen (MPP)
     2018-11-07 07:44:00   ModeNum         9
     2018-11-07 12:32:57   Total.Energy    448071
     2018-11-07 12:54:22   UV.Index        2
     2018-11-07 12:54:22   generator.1.current 4.17
     2018-11-07 12:54:22   generator.1.voltage 649
     2018-11-07 12:54:22   generator.2.current 0.01
     2018-11-07 12:54:22   generator.2.voltage 649
     2018-11-07 12:54:22   output.1.power  849
     2018-11-07 12:50:59   output.1.voltage 228
     2018-11-07 12:54:22   output.2.power  866
     2018-11-07 12:54:22   output.2.voltage 229
     2018-11-07 12:54:22   output.3.power  864
     2018-11-07 12:43:58   output.3.voltage 229
     2018-11-07 12:54:22   sensor.1        0.00
     2018-11-07 12:54:22   sensor.2        0.00
     2018-11-07 12:45:58   sensor.3        0.00
     2017-10-10 15:05:06   sensor.4        9.99
     2018-11-07 12:54:22   state           W: 2579 - Einspeisen (MPP)
     2018-11-07 12:54:22   sunshine.duration 25
   helper:
     GRHour     25
     Host       192.168.2.51
     Pass       meinpw
     TimerGR    SOLAR.GR
     TimerGRInterval 3600
     TimerInterval 60
     TimerStatus SOLAR.STATUS
     User       pvserver
     delayCounter 0
Attributes:
   GR.Interval 3600
   GR.Link    http://www.proplanta.de/Wetter/Schwalmtal+%28Niederrhein%29-Wetter-Heute.html
   delay      60
   room       STROM
   userReadings EnergyExpected { return ReadingsVal("SOLAR","Global.Radiation",0)*37*0.10;;},
AC.powerKW:AC.Power{ReadingsVal($NAME,'AC.Power','0')/1000;}
   verbose    2
Raspberry PI3 mit allem möglichen.

eki

was passiert, wenn Du es genauso wie beim ersten machst. Also:


attr SOLAR userreadings  EnergyExpected { return ReadingsVal("SOLAR","Global.Radiation",0)*37*0.10;;}, AC.powerKW:AC.Power { return ReadingsVal($NAME,'AC.Power','0')/1000;;}

ChrisW

hmm hab ich auch schon mal versucht hab gerade nochmal versucht auch shutdown restart. Werte ändern sich aber das reading taucht nicht auf ... komisch
Raspberry PI3 mit allem möglichen.

eki

Ich habe es jetzt mal mit einem Dummy Device bei mir probiert. Es scheint irgendwie Probleme mit dem Format mit ':' zu geben. Probier mal:

attr SOLAR userreadings  EnergyExpected { return ReadingsVal($NAME,"Global.Radiation",0)*37*0.10;;}, AC.powerKW { return ReadingsVal($NAME,'AC.Power','0')/1000;;}

ChrisW

Raspberry PI3 mit allem möglichen.