Einbindung eines Kostal PLENTICORE plus

Begonnen von JonnyS, 30 Juni 2020, 13:15:49

Vorheriges Thema - Nächstes Thema

JonnyS

Servus zusammen,
Über die Einbindung eines Kostal Plenticore ist schon viel geschrieben worden. Aber eine – Gesamtanleitung – habe ich leider nicht gefunden. Darum trage ich einmal zusammen, wie ich es gelöst habe. Im ersten Schritt habe ich den Kostal Plentikore in mein Haus IP Netzangeschlossen und ihn mit einer festen IP versorgt. Das geht ganz einfach auf der Website des Wechselrichters. Um jetzt die aktuellen Daten zu bekommen, habe ich mich entschieden den Weg über Modbus zu gehen. Mein Modbus device seht ihr unten. Daraus lassen sich fast alle Werte super auslesen.  Was mir noch fehlte waren die Werte für EnergyTotalToGrid, BatteryActualEnnergy und PowerDC. Power DC nur desshalb, weil an meinem dritten Strang der BYD Accu angesclossen ist.

Dann habe ich noch das Modul KOSTALPIKO dafür verwendet, um eine Ertragsprognose zu bekommen.
define PVForecast KOSTALPIKO 1.1.1.1 nouser nopwd
attr PVForecast disable 1 -> damit er nicht abgefragt wird.
attr PVForecast userattr PVPannelqm PVPannelCount PVEfficiency
attr PVForecast userReadings Energy { Energy {AttrVal("PVForecast","PVEfficiency",15)/100*AttrVal("PVForecast","PVPannelCount",1)*AttrVal("PVForecast","PVPannelqm",1)*ReadingsVal("PVForecast","Global.Radiation",1);; }
danach die
* PVPannelqm = gesamtfläche eines PV Pannels (meis so um die 1,5qm)
* PVPannelCount  = Anzahl der verbauten Pannele
* PVEfficiency  = Steht im Datenblatt zu den PV Modulen 10-20 %
Als Ergebniss steht dann in Energy der zu erwartende Wert für den Ertrag in kW/h

Internals:
   DEF        71 30 192.168.x.xx:1502 TCP
   DeviceName 192.168.x.xx:1502
   EXPECT     idle
   FD         20
   FUUID      5daee247-f33f-ee4c-4b72-9c67a5426622a776
   INTERVAL   30
   IODev      kostal02
   LASTOPEN   1593357448.48354
   MODBUSID   71
   MODE       master
   MODULEVERSION Modbus 4.1.5 - 17.9.2019
   NAME       kostal02
   NOTIFYDEV  global
   NR         243
   NTFY_ORDER 50-kostal02
   PARTIAL
   PROTOCOL   TCP
   STATE      opened
   TCPConn    1
   TRIGGERTIME 1593514856.16776
   TRIGGERTIME_FMT 2020-06-30 13:00:56
   TYPE       ModbusAttr
   devioLoglevel 3
   lastUpdate 1593514826.16776
   nextOpenDelay 60
   Helper:
     DBLOG:
       BatteryActualEnnergy:
         myDbLog:
           TIME       1593514707.26798
           VALUE      6.856
       BatteryCapacity:
         myDbLog:
           TIME       1593513146.21525
           VALUE      25
       BatteryCharge:
         myDbLog:
           TIME       1593514707.26798
           VALUE      64
       BatteryChargeCurrent:
         myDbLog:
           TIME       1593514826.28379
           VALUE      -0.1
       BatteryChargeCycles:
         myDbLog:
           TIME       1593514376.49117
           VALUE      118.0
       BatteryChargePower:
         myDbLog:
           TIME       1593514797.39811
           VALUE      -1042
       BatteryManufacturer:
         myDbLog:
           TIME       1593510775.68681
           VALUE      BYD
       BatteryTemperature:
         myDbLog:
           TIME       1593514617.6746
           VALUE      22.2
       BatteryVoltage:
         myDbLog:
           TIME       1593514616.60118
           VALUE      428.5
       EnergyGeneration:
         myDbLog:
           TIME       1593514586.27888
           VALUE      3943.7
       EnergyGenerationScaleFactor:
         myDbLog:
           TIME       1593512036.92204
           VALUE      0
       EnergyTotalBattery:
         myDbLog:
           TIME       1593513386.77052
           VALUE      1148.0
       EnergyTotalGrid:
         myDbLog:
           TIME       1593513056.10008
           VALUE      851.2
       EnergyTotalHome:
         myDbLog:
           TIME       1593514286.94424
           VALUE      3514.0
       EnergyTotalPV:
         myDbLog:
           TIME       1593513326.57489
           VALUE      1550.0
       EnergyTotalToGrid:
         myDbLog:
           TIME       1593514617.59136
           VALUE      429.7
       IsolationResistance:
         myDbLog:
           TIME       1593514797.28159
           VALUE      65535000.0
       KostalArticleNumber:
         myDbLog:
           TIME       1593510775.58139
           VALUE      10335956
       KostalProductName:
         myDbLog:
           TIME       1593510686.22449
           VALUE      PLENTICORE plus
       KostalSerialNumber:
         myDbLog:
           TIME       1593510595.77004
           VALUE      90523SHS0000P
       KostalStatus:
         myDbLog:
           TIME       1593511827.82683
           VALUE      FeedIn
       KostalVersionIOC:
         myDbLog:
           TIME       1593510805.8597
           VALUE      01.42
       KostalVersionMC:
         myDbLog:
           TIME       1593510745.95978
           VALUE      01.42
       PowerActivePhase1:
         myDbLog:
           TIME       1593514797.50355
           VALUE      1427.8
       PowerActivePhase2:
         myDbLog:
           TIME       1593514796.29111
           VALUE      1443.9
       PowerActivePhase3:
         myDbLog:
           TIME       1593514796.61511
           VALUE      1439.9
       PowerBattery:
         myDbLog:
           TIME       1593514826.49853
           VALUE      2.8
       PowerCosPhi:
         myDbLog:
           TIME       1593514166.59026
           VALUE      1.0
       PowerDC:
         myDbLog:
           TIME       1593514797.9373
           VALUE      4368.2
       PowerDC1:
         myDbLog:
           TIME       1593514797.9373
           VALUE      4368.3
       PowerDC2:
         myDbLog:
           TIME       1593512996.96404
           VALUE      -0.1
       PowerGrid:
         myDbLog:
           TIME       1593514556.93725
           VALUE      0.0
       PowerInverterGeneration:
         myDbLog:
           TIME       1593514797.61546
           VALUE      4215
       PowerLimitEVU:
         myDbLog:
           TIME       1593511828.36369
           VALUE      100.0
       PowerMeterActivePhase1:
         myDbLog:
           TIME       1593514796.93573
           VALUE      62.9
       PowerMeterActivePhase2:
         myDbLog:
           TIME       1593514826.81757
           VALUE      90.7
       PowerMeterActivePhase3:
         myDbLog:
           TIME       1593514796.17896
           VALUE      286.8
       PowerMeterCosPhi:
         myDbLog:
           TIME       1593514437.46711
           VALUE      0.9
       PowerMeterTotalActive:
         myDbLog:
           TIME       1593514826.39171
           VALUE      226.3
       PowerPV:
         myDbLog:
           TIME       1593514826.60605
           VALUE      386.7
       PowerTotalDC:
         myDbLog:
           TIME       1593514796.72153
           VALUE      4382.4
       VoltageDC1:
         myDbLog:
           TIME       1593514736.83052
           VALUE      489.0
       VoltageDC2:
         myDbLog:
           TIME       1593513178.49399
           VALUE      1.4
       YieldDailey:
         myDbLog:
           TIME       1593514556.7218
           VALUE      20.7
       YieldMonthly:
         myDbLog:
           TIME       1593514556.17067
           VALUE      630.9
       YieldTotal:
         myDbLog:
           TIME       1593514617.59136
           VALUE      3943.7
       YieldYearly:
         myDbLog:
           TIME       1593514737.04792
           VALUE      3388.7
       state:
         myDbLog:
           TIME       1593357457.13438
           VALUE      CONNECTED
       sunPower:
         myDbLog:
           TIME       1593514797.9373
           VALUE      838.6
   QUEUE:
   READ:
     BUFFER
   READINGS:
     2020-06-30 13:00:27   BatteryActualEnnergy 6.856
     2020-06-30 12:47:56   BatteryCapacity 25
     2020-06-30 12:58:27   BatteryCharge   64
     2020-06-30 13:00:26   BatteryChargeCurrent -0.1
     2020-06-30 13:00:27   BatteryChargeCycles 118.0
     2020-06-30 12:59:57   BatteryChargePower -1042
     2020-06-30 11:52:55   BatteryManufacturer BYD
     2020-06-30 12:59:57   BatteryTemperature 22.2
     2020-06-30 12:56:56   BatteryVoltage  428.5
     2020-06-30 12:58:56   EnergyGeneration 3943.7
     2020-06-30 12:58:56   EnergyGenerationScaleFactor 0
     2020-06-30 12:58:56   EnergyTotalBattery 1148.0
     2020-06-30 12:58:27   EnergyTotalGrid 851.2
     2020-06-30 12:58:56   EnergyTotalHome 3514.0
     2020-06-30 13:00:26   EnergyTotalPV   1550.0
     2020-06-30 13:00:27   EnergyTotalToGrid 429.7
     2020-06-30 12:59:57   IsolationResistance 65535000.0
     2020-06-30 11:52:55   KostalArticleNumber 10335956
     2020-06-30 11:51:26   KostalProductName PLENTICORE plus
     2020-06-30 11:49:55   KostalSerialNumber 90523SHS0000P
     2020-06-30 12:58:27   KostalStatus    FeedIn
     2020-06-30 11:53:25   KostalVersionIOC 01.42
     2020-06-30 11:52:25   KostalVersionMC 01.42
     2020-06-30 12:59:57   PowerActivePhase1 1427.8
     2020-06-30 12:59:56   PowerActivePhase2 1443.9
     2020-06-30 12:59:56   PowerActivePhase3 1439.9
     2020-06-30 13:00:26   PowerBattery    2.8
     2020-06-30 12:59:57   PowerCosPhi     1.0
     2020-06-30 13:00:27   PowerDC         4368.2
     2020-06-30 12:59:57   PowerDC1        4368.3
     2020-06-30 12:59:58   PowerDC2        -0.1
     2020-06-30 13:00:26   PowerGrid       0.0
     2020-06-30 12:59:57   PowerInverterGeneration 4215
     2020-06-30 12:59:56   PowerLimitEVU   100.0
     2020-06-30 12:59:56   PowerMeterActivePhase1 62.9
     2020-06-30 13:00:26   PowerMeterActivePhase2 90.7
     2020-06-30 12:59:56   PowerMeterActivePhase3 286.8
     2020-06-30 12:59:56   PowerMeterCosPhi 0.9
     2020-06-30 13:00:26   PowerMeterTotalActive 226.3
     2020-06-30 13:00:26   PowerPV         386.7
     2019-10-27 15:51:03   PowerPercentHomeConsumption 56.0
     2020-06-30 12:59:56   PowerTotalDC    4382.4
     2020-06-30 12:58:56   VoltageDC1      489.0
     2020-06-30 13:00:26   VoltageDC2      1.4
     2020-06-30 12:58:26   YieldDailey     20.7
     2020-06-30 12:55:56   YieldMonthly    630.9
     2020-06-30 12:59:26   YieldTotal      3943.7
     2020-06-30 12:58:57   YieldYearly     3388.7
     2020-06-28 17:17:37   state           opened
     2020-06-30 13:00:27   sunPower        838.6
   REMEMBER:
     lid        71
     lname      kostal02
     lrecv      1593514827.02924
     lsend      1593514827.02433
   defptr:
     kostal02   71
   gotReadings:
     BatteryChargeCycles 118.0
   lastRead:
     h100       1593514796.71879
     h106       1593514826.49633
     h108       1593514826.70877
     h110       1593514736.70925
     h112       1593514707.37928
     h114       1593514826.1753
     h116       1593514826.60385
     h118       1593514736.39229
     h120       1593514797.2791
     h122       1593514796.82621
     h124       1593514797.16921
     h14        1593510595.76784
     h150       1593514797.82596
     h156       1593514797.50237
     h162       1593514796.28995
     h168       1593514796.61233
     h194       1593514827.03005
     h200       1593514826.28219
     h210       1593514707.26511
     h214       1593514797.06178
     h216       1593514616.59947
     h218       1593514796.50552
     h224       1593514796.93301
     h234       1593514826.81586
     h244       1593514796.17782
     h252       1593514826.38896
     h260       1593514797.93456
     h266       1593514736.82809
     h270       1593514798.05062
     h276       1593514826.92211
     h320       1593514766.17726
     h322       1593514706.94463
     h324       1593514737.04621
     h326       1593514556.16928
     h38        1593510745.95713
     h46        1593510805.85714
     h512       1593514076.15114
     h517       1593510775.68554
     h56        1593514707.4889
     h575       1593514797.61407
     h577       1593514736.28417
     h579       1593514736.60192
     h582       1593514797.3956
     h6         1593510775.57856
     h768       1593510686.22223
Attributes:
   dev-type-Fl_R2-format %.1f
   dev-type-Fl_R2-len 2
   dev-type-Fl_R2-revRegs 1
   dev-type-Fl_R2-unpack f>
   dev-type-S16-format %d
   dev-type-S16-len 1
   dev-type-S16-unpack s>
   dev-type-Str32-format %s
   dev-type-Str32-len 32
   dev-type-Str32-unpack a*
   dev-type-Str8-format %s
   dev-type-Str8-len 8
   dev-type-Str8-unpack a*
   dev-type-U16-format %d
   dev-type-U16-len 1
   dev-type-U16-unpack n
   dev-type-U32-format %d
   dev-type-U32-len 2
   dev-type-U32-unpack N
   event-min-interval .*:3600
   event-on-change-reading .*
   event-on-update-reading Energy.*,Power.*,PowerDC1
   icon       inverter
   obj-h100-poll 1
   obj-h100-polldelay x2
   obj-h100-reading PowerTotalDC
   obj-h100-type Fl_R2
   obj-h106-poll 1
   obj-h106-polldelay x4
   obj-h106-reading PowerBattery
   obj-h106-type Fl_R2
   obj-h108-poll 1
   obj-h108-reading PowerGrid
   obj-h108-type Fl_R2
   obj-h110-expr $val/1000
   obj-h110-poll 1
   obj-h110-polldelay x4
   obj-h110-reading EnergyTotalBattery
   obj-h110-type Fl_R2
   obj-h112-expr $val/1000
   obj-h112-poll 1
   obj-h112-polldelay x4
   obj-h112-reading EnergyTotalGrid
   obj-h112-type Fl_R2
   obj-h114-expr $val/1000
   obj-h114-poll 1
   obj-h114-polldelay x4
   obj-h114-reading EnergyTotalPV
   obj-h114-type Fl_R2
   obj-h116-poll 1
   obj-h116-reading PowerPV
   obj-h116-type Fl_R2
   obj-h118-expr $val/1000
   obj-h118-poll 1
   obj-h118-polldelay x4
   obj-h118-reading EnergyTotalHome
   obj-h118-type Fl_R2
   obj-h120-poll 1
   obj-h120-polldelay x2
   obj-h120-reading IsolationResistance
   obj-h120-type Fl_R2
   obj-h122-poll 1
   obj-h122-polldelay x8
   obj-h122-reading PowerLimitEVU
   obj-h122-type Fl_R2
   obj-h124-poll 1
   obj-h124-polldelay x8
   obj-h124-reading IsolationResistance
   obj-h124-type Fl_R2
   obj-h14-poll 1
   obj-h14-polldelay x300
   obj-h14-reading KostalSerialNumber
   obj-h14-type Str8
   obj-h150-poll 1
   obj-h150-polldelay x2
   obj-h150-reading PowerCosPhi
   obj-h150-type Fl_R2
   obj-h156-poll 1
   obj-h156-polldelay x2
   obj-h156-reading PowerActivePhase1
   obj-h156-type Fl_R2
   obj-h162-poll 1
   obj-h162-polldelay x2
   obj-h162-reading PowerActivePhase2
   obj-h162-type Fl_R2
   obj-h168-poll 1
   obj-h168-polldelay x2
   obj-h168-reading PowerActivePhase3
   obj-h168-type Fl_R2
   obj-h194-poll 1
   obj-h194-polldelay x4
   obj-h194-reading BatteryChargeCycles
   obj-h194-type Fl_R2
   obj-h200-expr $val*-1
   obj-h200-poll 1
   obj-h200-polldelay x2
   obj-h200-reading BatteryChargeCurrent
   obj-h200-type Fl_R2
   obj-h210-format %.0f
   obj-h210-poll 1
   obj-h210-polldelay x10
   obj-h210-reading BatteryCharge
   obj-h210-type Fl_R2
   obj-h214-poll 1
   obj-h214-polldelay x5
   obj-h214-reading BatteryTemperature
   obj-h214-type Fl_R2
   obj-h216-poll 1
   obj-h216-polldelay x10
   obj-h216-reading BatteryVoltage
   obj-h216-type Fl_R2
   obj-h218-poll 1
   obj-h218-polldelay x2
   obj-h218-reading PowerMeterCosPhi
   obj-h218-type Fl_R2
   obj-h224-poll 1
   obj-h224-polldelay x2
   obj-h224-reading PowerMeterActivePhase1
   obj-h224-type Fl_R2
   obj-h234-poll 1
   obj-h234-polldelay x2
   obj-h234-reading PowerMeterActivePhase2
   obj-h234-type Fl_R2
   obj-h244-poll 1
   obj-h244-polldelay x2
   obj-h244-reading PowerMeterActivePhase3
   obj-h244-type Fl_R2
   obj-h252-poll 1
   obj-h252-reading PowerMeterTotalActive
   obj-h252-type Fl_R2
   obj-h260-poll 1
   obj-h260-polldelay x2
   obj-h260-reading PowerDC1
   obj-h260-type Fl_R2
   obj-h266-poll 1
   obj-h266-polldelay x4
   obj-h266-reading VoltageDC1
   obj-h266-type Fl_R2
   obj-h270-poll 1
   obj-h270-polldelay x2
   obj-h270-reading PowerDC2
   obj-h270-type Fl_R2
   obj-h276-poll 1
   obj-h276-polldelay x4
   obj-h276-reading VoltageDC2
   obj-h276-type Fl_R2
   obj-h320-expr $val/1000
   obj-h320-poll 1
   obj-h320-polldelay x4
   obj-h320-reading YieldTotal
   obj-h320-type Fl_R2
   obj-h322-expr $val/1000
   obj-h322-poll 1
   obj-h322-polldelay x4
   obj-h322-reading YieldDailey
   obj-h322-type Fl_R2
   obj-h324-expr $val/1000
   obj-h324-poll 1
   obj-h324-polldelay x30
   obj-h324-reading YieldYearly
   obj-h324-type Fl_R2
   obj-h326-expr $val/1000
   obj-h326-poll 1
   obj-h326-polldelay x10
   obj-h326-reading YieldMonthly
   obj-h326-type Fl_R2
   obj-h38-poll 1
   obj-h38-polldelay x300
   obj-h38-reading KostalVersionMC
   obj-h38-type Str8
   obj-h46-poll 1
   obj-h46-polldelay x300
   obj-h46-reading KostalVersionIOC
   obj-h46-type Str8
   obj-h512-poll 1
   obj-h512-polldelay x30
   obj-h512-reading BatteryCapacity
   obj-h512-type U32
   obj-h517-poll 1
   obj-h517-polldelay x300
   obj-h517-reading BatteryManufacturer
   obj-h517-type Str8
   obj-h56-format %s
   obj-h56-map 0:off,1:init,2:IsoMeas,3:GridCheck,4:StartUp,6:FeedIn,7:Throttled,8:ExtSwitchOff,9:Update,10:Standby,11:GridSync,12:GridPreCheck,13:GridSwitchOff,14:Overheating,15:Shutdown,16:ImproperDcVoltage,17:ESB,18:Unkown
   obj-h56-poll 1
   obj-h56-polldelay x5
   obj-h56-reading KostalStatus
   obj-h56-type U16
   obj-h575-poll 1
   obj-h575-polldelay x2
   obj-h575-reading PowerInverterGeneration
   obj-h575-type S16
   obj-h577-expr $val/1000
   obj-h577-format %.1f
   obj-h577-poll 1
   obj-h577-polldelay x4
   obj-h577-reading EnergyGeneration
   obj-h577-type U32
   obj-h579-poll 1
   obj-h579-polldelay x4
   obj-h579-reading EnergyGenerationScaleFactor
   obj-h579-type S16
   obj-h582-poll 1
   obj-h582-polldelay x2
   obj-h582-reading BatteryChargePower
   obj-h582-type S16
   obj-h6-poll 1
   obj-h6-polldelay x300
   obj-h6-reading KostalArticleNumber
   obj-h6-type Str8
   obj-h768-poll 1
   obj-h768-polldelay x300
   obj-h768-reading KostalProductName
   obj-h768-type Str32
   room       Photovoltaik
   userReadings EnergyTotalToGrid {ReadingsVal("kostal02","YieldTotal",0)-ReadingsVal("kostal02","EnergyTotalHome",0);;},BatteryActualEnnergy {ReadingsVal("kostal02","BatteryCapacity",0)*ReadingsVal("kostal02","BatteryVoltage",0)*ReadingsVal("kostal02","BatteryCharge",0)/100/1000}, sunPower {sprintf("%.1f",ReadingsVal("kostal02","PowerDC1",0)/1.652672/17/18.54*100);;}, PowerDC {ReadingsVal("kostal02","PowerDC1",0)+ReadingsVal("kostal02","PowerDC2",0);;}
   userattr   dev-type-Fl_R2-format dev-type-Fl_R2-len dev-type-Fl_R2-revRegs dev-type-Fl_R2-unpack dev-type-S16-format dev-type-S16-len dev-type-S16-unpack dev-type-Str32-format dev-type-Str32-len dev-type-Str32-unpack dev-type-Str8-format dev-type-Str8-len dev-type-Str8-unpack dev-type-U16-format dev-type-U16-len dev-type-U16-unpack dev-type-U32-format dev-type-U32-len dev-type-U32-unpack obj-h100-poll obj-h100-polldelay obj-h100-reading obj-h100-type obj-h106-poll obj-h106-polldelay obj-h106-reading obj-h106-type obj-h108-poll obj-h108-reading obj-h108-type obj-h110-expr obj-h110-poll obj-h110-polldelay obj-h110-reading obj-h110-type obj-h112-expr obj-h112-poll obj-h112-polldelay obj-h112-reading obj-h112-type obj-h114-expr obj-h114-poll obj-h114-polldelay obj-h114-reading obj-h114-type obj-h116-poll obj-h116-reading obj-h116-type obj-h118-expr obj-h118-poll obj-h118-polldelay obj-h118-reading obj-h118-type obj-h120-poll obj-h120-polldelay obj-h120-reading obj-h120-type obj-h122-poll obj-h122-polldelay obj-h122-reading obj-h122-type obj-h124-poll obj-h124-polldelay obj-h124-reading obj-h124-type obj-h14-poll obj-h14-polldelay obj-h14-reading obj-h14-type obj-h150-poll obj-h150-polldelay obj-h150-reading obj-h150-type obj-h156-poll obj-h156-polldelay obj-h156-reading obj-h156-type obj-h162-poll obj-h162-polldelay obj-h162-reading obj-h162-type obj-h168-poll obj-h168-polldelay obj-h168-reading obj-h168-type obj-h194-poll obj-h194-polldelay obj-h194-reading obj-h194-type obj-h200-expr obj-h200-poll obj-h200-polldelay obj-h200-reading obj-h200-type obj-h210-format obj-h210-poll obj-h210-polldelay obj-h210-reading obj-h210-type obj-h214-poll obj-h214-polldelay obj-h214-reading obj-h214-type obj-h216-poll obj-h216-polldelay obj-h216-reading obj-h216-type obj-h218-poll obj-h218-polldelay obj-h218-reading obj-h218-type obj-h224-poll obj-h224-polldelay obj-h224-reading obj-h224-type obj-h234-poll obj-h234-polldelay obj-h234-reading obj-h234-type obj-h244-poll obj-h244-polldelay obj-h244-reading obj-h244-type obj-h252-poll obj-h252-reading obj-h252-type obj-h260-poll obj-h260-polldelay obj-h260-reading obj-h260-type obj-h266-poll obj-h266-polldelay obj-h266-reading obj-h266-type obj-h270-poll obj-h270-polldelay obj-h270-reading obj-h270-type obj-h276-poll obj-h276-polldelay obj-h276-reading obj-h276-type obj-h320-expr obj-h320-poll obj-h320-polldelay obj-h320-reading obj-h320-type obj-h322-expr obj-h322-poll obj-h322-polldelay obj-h322-reading obj-h322-type obj-h324-expr obj-h324-poll obj-h324-polldelay obj-h324-reading obj-h324-type obj-h326-expr obj-h326-poll obj-h326-polldelay obj-h326-reading obj-h326-type obj-h38-poll obj-h38-polldelay obj-h38-reading obj-h38-type obj-h46-poll obj-h46-polldelay obj-h46-reading obj-h46-type obj-h512-poll obj-h512-polldelay obj-h512-reading obj-h512-type obj-h517-poll obj-h517-polldelay obj-h517-reading obj-h517-type obj-h56-format obj-h56-map obj-h56-poll obj-h56-polldelay obj-h56-reading obj-h56-type obj-h575-poll obj-h575-polldelay obj-h575-reading obj-h575-type obj-h577-expr obj-h577-format obj-h577-poll obj-h577-polldelay obj-h577-reading obj-h577-type obj-h579-poll obj-h579-polldelay obj-h579-reading obj-h579-type obj-h582-expr obj-h582-poll obj-h582-polldelay obj-h582-reading obj-h582-type obj-h6-poll obj-h6-polldelay obj-h6-reading obj-h6-type obj-h768-poll obj-h768-polldelay obj-h768-reading obj-h768-type


--------------------------------------------

Internals:
   DEF        1.1.1.1 nouser nopwd
   FUUID      5ef8ba8e-f33f-ee4c-5c27-3e319c7e4873ef29
   NAME       PVForecast
   NR         1109
   STATE      today forecast: 38kW/h
   TYPE       KOSTALPIKO
   VERSION    2.10
   Helper:
     DBLOG:
       Energy:
         myDbLog:
           TIME       1593515569.25557
           VALUE      37.7196124032
       Global.Radiation:
         myDbLog:
           TIME       1593515569.25557
           VALUE      8.1
       ModeNum:
         myDbLog:
           TIME       1593359000.30137
           VALUE      9
       UV.Index:
         myDbLog:
           TIME       1593360475.34099
           VALUE      6
       state:
         myDbLog:
           TIME       1593360474.30516
           VALUE      captureGlobalRadiation
       sunshine.duration:
         myDbLog:
           TIME       1593360475.34099
           VALUE      60
   READINGS:
     2020-06-30 13:12:49   Energy          37.7196124032
     2020-06-30 13:12:49   Global.Radiation 8.1
     2020-06-28 17:43:20   ModeNum         9
     2020-06-30 13:10:36   UV.Index        9
     2020-06-28 17:43:20   state           W:  -
     2020-06-30 13:10:36   sunshine.duration 75
   helper:
     GRHour     25
     Host       192.168.1.72
     Pass       nopwd
     TimerGR    PVForecast.GR
     TimerGRInterval 3600
     TimerInterval 180
     TimerStatus PVForecast.STATUS
     User       nouser
     delayCounter 0
Attributes:
   DbLogExclude sunshine.duration,state,UV.Index
   GR.Interval 3600
   GR.Link    https://www.proplanta.de/Wetter/Dorfen-Wetter-Heute.html
   PVEfficiency 18.76
   PVPannelCount 17
   PVPannelqm 1.46016
   delay      180
   disable    1
   event-on-change-reading .*
   room       Photovoltaik
   stateFormat {sprintf("today forecast: %.0fkW/h",ReadingsVal($name,"Energy",undef))}
   userReadings Energy { AttrVal("PVForecast","PVEfficiency",15)/100*AttrVal("PVForecast","PVPannelCount",1)*AttrVal("PVForecast","PVPannelqm",1)*ReadingsVal("PVForecast","Global.Radiation",1);; }
   userattr   PVPannelqm PVPannelCount PVEfficiency
-----------------------------------------------------------------------
fhem@debian sonoff, MAX und eigenbau

ch.eick

Hallo und herzlich willkommen.

Ich faende es toll, wenn Du Dich bei uns anschliessen wuerdest, damit fuer den Plenticore nicht zuviele Threads entstehen.
Hast Du aus meinem Thread, aus dem ersten Post die Beschreibung verwendet und Dein Plenticore Device definiert?
Ansonsten waere es toll, wenn wir die Definition mal abgleichen wuerden, damit nicht zu grosse Abweichungen entstehen.

Den Ansatz mit dem Forcast ueber das Portal schaue ich mir auch nochmal an, ob das die Ausrichtung beruecksichtigt.

In meinem Tread sind wir ziemlich gut uebereingekommen, dass ein Forecast, auf Grund von schlechten Wetter Daten, zu ungenau ist.
Ich arbeite gerade an der Batterie Steuerung, um ein "manuelles"  Ladesignal zu geben. Das hat heute bereits gut funktioniert, ist jedoch noch
nicht mit eingebaut.

Bitte verwende bei Deinen naechsten Posts die Code tags (obe das # Icon) und wenn es Dir nichts aus macht aendere auch diesen Post, dann
wird er besser lesbar. Das waere toll fuer lists, code, die attr Liste und so weiter.

Viele Gruesse
    Christian

P.S. der Gruender fuer den Plenticore Plus :-), was jedoch nichts mit den Modulen zu tun hat, die tolle Arbeit haben andere gemacht.
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

ch.eick

Ich bin@s nochmal.

Hast Du Dir den Forecast vom KOSTALPIKO schon mal etwas naeher angeschaut? Ich habe mit den anderen Teilnehmern schon mal folgendes fuer den Forecast zusammengetragen,
in dem auch die Modul Temperatur, die Effizienz und die Ausrichtung, sowie die qm enthalten sind. Das ganze dann jedoch ohne das Kostal Portal !
Ich habe das ganze in der userReadings des Modbus untergebracht. Die Werte hangeln sich schon recht gut am tatsaechlichen Ertrag entlang, entsprechen somit der realitaet.
Fuer einen Forecast braeuchte man nun die SolarRadiation und die zu erwartende Modul Temperatur, was aufgrund mangelnder, valider Wetterdaten somit scheitern wird.

Fuer den Test verwende ich die solarRadiation, von Wetterstationen in meiner Naehe (Wetter_II) und die Aussentemperatur auf der Suedseite in praller Sonne (Heizung:heatSourceIN) plus extra 10 Grad .
Die Funktion "Solar_plain()" ist von KoelnSolar. 6* 0.310 ist 6 Module mit 310 Watt Nennleistung.
Die PV Allage ist in Ost (-90), Sued (0), West (+90) Ausrichtung

Solar_SolarRadiation:Total_DC_Power.* { ReadingsVal("wetter_II","solarRadiation",0) },
Solar_Correction_Temp:Total_DC_Power.* { my $tempk = -0.39 ;; my $temp = ReadingsVal("Heizung","heatSourceIN",0)+10;; my $x =  round((1 + ( $temp - 25) * $tempk / 100),3) },
Solar_East:Total_DC_Power.* { my $x = 13 * 0.310 * ReadingsVal("$NAME","Solar_SolarRadiation",0) * ReadingsVal("$NAME","Solar_Correction_Temp",0) * ReadingsVal("$NAME","Solar_Correction_Factor",0) * Solar_plain(40,-90);; ($x lt 0)?0:round($x,0) },
Solar_South:Total_DC_Power.* { my $x = 6 * 0.310 * ReadingsVal("$NAME","Solar_SolarRadiation",0) * ReadingsVal("$NAME","Solar_Correction_Temp",0) * ReadingsVal("$NAME","Solar_Correction_Factor",0) * Solar_plain(40,0);; ($x lt 0)?0:round($x,0) },
Solar_West:Total_DC_Power.* { my $x = 13 * 0.310 * ReadingsVal("$NAME","Solar_SolarRadiation",0) * ReadingsVal("$NAME","Solar_Correction_Temp",0) * ReadingsVal("$NAME","Solar_Correction_Factor",0) * Solar_plain(40,+90);; ($x lt 0)?0:round($x,0) },

Solar_Calculation:Total_DC_Power.* { round( ( ReadingsVal($NAME,"Solar_East",0) + ReadingsVal($NAME,"Solar_South",0) + ReadingsVal($NAME,"Solar_West",0) ) ,0) }


Gruss
    Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

JonnyS

Servus,
du hast natürlich recht, das die vom Modul ermittelten Werte die Ausrichtung nicht berücksichtigen. Mann kann aber dann beim Wirkungsgrad schrauben. Ich selbst verwende die Berechung nur für die elektrissche Warmwasser bereitung. Dafür ist es ausreichend, ob 10kW/h oder 25kW/h zu erwarten sind. Ich hab eine 100% Südausrichtung. Da ist der maximale Fehler, der bissher aufgetreten ist ca. 7kW/h.
Wir können gerne meinen Post in deinen Thred packen. Wie geht das?
beste Grüße
Jonny
-----------------------------------------------------------------------
fhem@debian sonoff, MAX und eigenbau

ch.eick

#4
Zitat von: JonnyS am 01 Juli 2020, 08:31:01
Wir können gerne meinen Post in deinen Thred packen. Wie geht das?
In zwei Browser Tabs, in einem öffnest Du deinen Post zum ändern und im anderen dann auf antworten und rein kopieren. Bitte denke an die Code Taggs mit dem # Icon um Deine listings !!!

Hattest Du jetzt mit meiner Device Definition begonnen?

Dann könntest Du mal die User Readings anpassen und die Berechnung von "Solar_*" anpassen und mit Deinen Werten Vergleichen

## Dies triggert auf den Update vom Plenticore und Du müsstest Deine solarRadiation einsetzen
Solar_SolarRadiation:Total_DC_Power.* { ReadingsVal("PVForecast","Global.Radiation",1) }

## ReadingsVal("Heizung","heatSourceIN",0)+10 <== Deine Modultemperatur auf der Suedseite gemessen
## $tempk = -0.39 <== das ist glaube ich der Wirkungsgrad aus dem Datenblatt der Module
Solar_Correction_Temp:Total_DC_Power.* { my $tempk = -0.39 ;; my $temp = ReadingsVal("Heizung","heatSourceIN",0)+10;; my $x =  round((1 + ( $temp - 25) * $tempk / 100),3) }

## 6 * 0.310 <== Anzahl Module mal Nennleistung
## setreading <PV_Device> Solar_Correction_Factor 1.5    <== Da steckt mein manueller Korrekturfaktor drin
Solar_South:Total_DC_Power.* { my $x = 6 * 0.310 * ReadingsVal("$NAME","Solar_SolarRadiation",0) * ReadingsVal("$NAME","Solar_Correction_Temp",0) * ReadingsVal("$NAME","Solar_Correction_Factor",0) * Solar_plain(40,0);; ($x lt 0)?0:round($x,0) }

## hier brauchst Du natürlich nur den Süden
Solar_Calculation:Total_DC_Power.* { round( ( ReadingsVal($NAME,"Solar_East",0) + ReadingsVal($NAME,"Solar_South",0) + ReadingsVal($NAME,"Solar_West",0) ) ,0) }


Das kommt in die ./FHEM/99_myUtils.pm und holt sich die Sonnenposition aus dem ASTRO Device

###########################################################
# Subroutine to calculate radiation
###########################################################
sub Solar_plain($$) {

        my $angle     = $_[0];
        my $orienta   = $_[1];
        my $azimuth   = ReadingsVal('Astro','SunAz','0');

# angles in radiant
        my $rad       = 57.296;
        my $elevation = ReadingsVal('Astro','SunAlt','0') / $rad;
        $angle        = $angle / $rad;
        my $orientation = ($azimuth - 180 - $orienta) / $rad;

#  avoid unrealistic values (normally formula should only be used within boundaries of orientation +/- 90 degrees)
        return (0.001) if ($elevation <= 0);

        if(cos($orientation) < 0.05 && cos($orientation) > -0.2) {$orientation =$orientation - 0.2}

##    Log3 "", 1, "Solar radiation, azimuth = $azimuth, orientation=$orientation, elevation=$elevation, angle=$angle";
     my $factor = sin($angle) /
         (sin( $elevation) /
          cos( $elevation)) *
        cos($orientation) +
                cos($angle);

# otherwise too big values (normally formula should only be used within boundaries of orientation +/- 90 degrees)
    if ($factor > - 0.05 && $factor < 0.05) {$factor = 0.05}

    return ($factor);
};
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

ch.eick

Zitat von: JonnyS am 01 Juli 2020, 08:31:01
Ich selbst verwende die Berechnung nur für die elektrische Warmwasser Bereitung. Dafür ist es ausreichend, ob 10kW/h oder 25kW/h zu erwarten sind. Ich hab eine 100% Südausrichtung. Da ist der maximale Fehler, der bisher aufgetreten ist ca. 7kW/h.
Hierbei hat sich gezeigt, dass ein Forecast nicht notwendig ist. Wenn Du Überschuss hast kannst Du ihn direkt in den Puffer schieben.
Dieses user reading verwende ich als Trigger

## 0.90  <== Das ist mein Wirkungsgrad von DC zu AC (selbst definiert)
Total_PV_Power_reserve:Total_DC_Power.* {my $reserve = ReadingsVal($NAME,"Power_DC_Sum","0") * 0.90 - ReadingsVal($NAME,"Home_own_consumption_from_PV","0");; ($reserve lt 0)?0:round($reserve,3)  }

Du bekommst nun einen Wert, den Du noch nicht selber verwendest inklusive der Ladeleistung eines eventuellen Pufferspeichers, denn sofort Verbrauchen ist effektiver als zwischen puffern. Der Wirkungsgrad des Pufferspeichers macht ansonsten Dein Ergebnis schlechter.

Gruss
    Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

ch.eick

#6
Eine Bilanz zum Plenticore gibt es hier Kostal Plenticore Bilanz und
den ersten Monats Plot hier Bilanz Plot aus DBLog
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

ch.eick

Ohne jetzt den Thread entern zu wollen, ist mein aktuellster Stand nun im Wiki zu finden.
https://wiki.fhem.de/wiki/Kostal_Plenticore_10_Plus

- Kostal Plenticore 10 Plus
- BYD Speicher
- KSEM
- PV-Eigenverbrauch
- Wetter Prognose
- Plenticore Statistiken
...

@Jonny Ich würde mich freuen, wenn Du noch Deine Ergänzungen zum Wiki beitragen würdest.

Gruß
    Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

ch.eick

Hey, Jonny,
ich würde mich sehr freuen, wenn Du bitte mal das Wiki probelesen könntest, damit auch Deine Erfahrungen mit einfließen können.
Viele Grüße
     Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick