[vz-users] mbmd - SDM230

joekokker at epios.eu joekokker at epios.eu
Mo Jan 13 14:04:48 CET 2020


Hallo Andreas,

ich habe den Code getestet und angepasst. Untenstehend der Patch.

Ich sehe noch ein paar Probleme:
Alle SDM Devices haben den gleichen "Voltage" Register Code. Es ist 
nicht möglich, die verschiedenen Geräte zu unterscheiden. Vielleicht 
könnte man beim SCAN nur SDM zurückgeben.

Der Name vom SDM230 mit der Modbus und der Device ID ist nicht sehr 
leserlich. Was könnte man da machen? Vielleicht einen Unterstrich?
initialized device SDM2301.1: {SDM230 Eastron SDM230   }

Ich hatte das Problem, dass das Program beim Starten immer
Unsupported Config Type ""
ausgegeben hat. Ich musste eine Pseudoconfigdatei angeben, damit es 
gestartet hat. (-c emtpyfile.yaml)

Ich habe versucht einen weiteren Wert zum Auslesen hinzuzufügen 
(PhaseAngle). Er wird ausgelesen. Ich sehe es sogar im Webinterface. 
Aber die Zeile wird einfach nicht ausgegeben. Ich habe es in 
assets/index.html geändert. Aber das hat nichts gebracht. Wo muss man es 
noch anpassen?

Vielen Dank für das Feedback!

Liebe Gruesse
Joe





Patch:



diff --git a/assets/index.html b/assets/index.html
index 408d633..6409396 100644
--- a/assets/index.html
+++ b/assets/index.html
@@ -340,6 +340,13 @@
                                                         <td 
class="col-2">—</td>
                                                         <td 
class="col-3">${ m.Frequency }</td>
                                                 </tr>
+                                                <tr class="d-flex" 
v-if="populated(m.PhaseAngle)">
+                                                        <td 
class="col-3">Phase Angle</td>
+                                                        <td 
class="col-2">—</td>
+                                                        <td 
class="col-2">—</td>
+                                                        <td 
class="col-2">—</td>
+                                                        <td 
class="col-3">${ m.PhaseAngle }</td>
+                                                </tr>
                                                 <tr class="d-flex" 
v-if="populated(m.HeatsinkTemp)">
                                                         <td 
class="col-3">Heatsink Temperature (°C)</td>
                                                         <td 
class="col-2">—</td>
diff --git a/go.mod b/go.mod
index 9916109..b793aa3 100644
--- a/go.mod
+++ b/go.mod
@@ -25,7 +25,7 @@ require (
         golang.org/x/net v0.0.0-20191119073136-fc4aabc6c914 // indirect
         golang.org/x/sys v0.0.0-20191120130536-6bfc516c8699 // indirect
         golang.org/x/text v0.3.2 // indirect
-       golang.org/x/tools v0.0.0-20191120143758-e97fc272220f
+       golang.org/x/tools v0.0.0-20200110213125-a7a6caa82ab2
         gopkg.in/yaml.v2 v2.2.7 // indirect
  )

diff --git a/go.sum b/go.sum
index b41c20c..816d93c 100644
--- a/go.sum
+++ b/go.sum
@@ -181,12 +181,15 @@ go.uber.org/zap v1.10.0/go.mod 
h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
  golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod 
h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
  golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2 
h1:VklqNMn3ovrHsnt90PveolxSbWFaJdECFbxSq0Mqo2M=
  golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod 
h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod 
h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
  golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod 
h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
  golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod 
h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
+golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod 
h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
  golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod 
h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
  golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod 
h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
  golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod 
h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
  golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod 
h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod 
h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
  golang.org/x/net v0.0.0-20190522155817-f3200d17e092 
h1:4QSRKanuywn15aTZvI/mIDEgPQpswuFndXpOj3rKEco=
  golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod 
h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
  golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod 
h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
@@ -203,6 +206,7 @@ golang.org/x/sys 
v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5h
  golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod 
h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
  golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a 
h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU=
  golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod 
h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod 
h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
  golang.org/x/sys v0.0.0-20191120130536-6bfc516c8699 
h1:oCSF9X76y260soaXqeFRu+UB7ufcanjVoUARkg8qLtc=
  golang.org/x/sys v0.0.0-20191120130536-6bfc516c8699/go.mod 
h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
  golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
@@ -217,7 +221,10 @@ golang.org/x/tools 
v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3
  golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod 
h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
  golang.org/x/tools v0.0.0-20191120143758-e97fc272220f 
h1:LTEe3T49y9RXXFzoxnB6NaIFXFheV+5YFnpW1Eepm7I=
  golang.org/x/tools v0.0.0-20191120143758-e97fc272220f/go.mod 
h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20200110213125-a7a6caa82ab2 
h1:V9r/14uGBqLgNlHRYWdVqjMdWkcOHnE2KG8DwVqQSEc=
+golang.org/x/tools v0.0.0-20200110213125-a7a6caa82ab2/go.mod 
h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
  golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod 
h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod 
h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
  google.golang.org/appengine v1.1.0/go.mod 
h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
  google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod 
h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
  google.golang.org/grpc v1.19.0/go.mod 
h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
diff --git a/meters/measurement_string.go b/meters/measurement_string.go
index e79d18d..18269ab 100644
--- a/meters/measurement_string.go
+++ b/meters/measurement_string.go
@@ -37,61 +37,62 @@ func _() {
         _ = x[ApparentPowerL1-27]
         _ = x[ApparentPowerL2-28]
         _ = x[ApparentPowerL3-29]
-       _ = x[Cosphi-30]
-       _ = x[CosphiL1-31]
-       _ = x[CosphiL2-32]
-       _ = x[CosphiL3-33]
-       _ = x[THD-34]
-       _ = x[THDL1-35]
-       _ = x[THDL2-36]
-       _ = x[THDL3-37]
-       _ = x[Sum-38]
-       _ = x[SumT1-39]
-       _ = x[SumT2-40]
-       _ = x[SumL1-41]
-       _ = x[SumL2-42]
-       _ = x[SumL3-43]
-       _ = x[Import-44]
-       _ = x[ImportT1-45]
-       _ = x[ImportT2-46]
-       _ = x[ImportL1-47]
-       _ = x[ImportL2-48]
-       _ = x[ImportL3-49]
-       _ = x[Export-50]
-       _ = x[ExportT1-51]
-       _ = x[ExportT2-52]
-       _ = x[ExportL1-53]
-       _ = x[ExportL2-54]
-       _ = x[ExportL3-55]
-       _ = x[ReactiveSum-56]
-       _ = x[ReactiveSumT1-57]
-       _ = x[ReactiveSumT2-58]
-       _ = x[ReactiveSumL1-59]
-       _ = x[ReactiveSumL2-60]
-       _ = x[ReactiveSumL3-61]
-       _ = x[ReactiveImport-62]
-       _ = x[ReactiveImportT1-63]
-       _ = x[ReactiveImportT2-64]
-       _ = x[ReactiveImportL1-65]
-       _ = x[ReactiveImportL2-66]
-       _ = x[ReactiveImportL3-67]
-       _ = x[ReactiveExport-68]
-       _ = x[ReactiveExportT1-69]
-       _ = x[ReactiveExportT2-70]
-       _ = x[ReactiveExportL1-71]
-       _ = x[ReactiveExportL2-72]
-       _ = x[ReactiveExportL3-73]
-       _ = x[DCCurrent-74]
-       _ = x[DCVoltage-75]
-       _ = x[DCPower-76]
-       _ = x[HeatSinkTemp-77]
-       _ = x[ChargeState-78]
-       _ = x[BatteryVoltage-79]
+       _ = x[PhaseAngle-30]
+       _ = x[Cosphi-31]
+       _ = x[CosphiL1-32]
+       _ = x[CosphiL2-33]
+       _ = x[CosphiL3-34]
+       _ = x[THD-35]
+       _ = x[THDL1-36]
+       _ = x[THDL2-37]
+       _ = x[THDL3-38]
+       _ = x[Sum-39]
+       _ = x[SumT1-40]
+       _ = x[SumT2-41]
+       _ = x[SumL1-42]
+       _ = x[SumL2-43]
+       _ = x[SumL3-44]
+       _ = x[Import-45]
+       _ = x[ImportT1-46]
+       _ = x[ImportT2-47]
+       _ = x[ImportL1-48]
+       _ = x[ImportL2-49]
+       _ = x[ImportL3-50]
+       _ = x[Export-51]
+       _ = x[ExportT1-52]
+       _ = x[ExportT2-53]
+       _ = x[ExportL1-54]
+       _ = x[ExportL2-55]
+       _ = x[ExportL3-56]
+       _ = x[ReactiveSum-57]
+       _ = x[ReactiveSumT1-58]
+       _ = x[ReactiveSumT2-59]
+       _ = x[ReactiveSumL1-60]
+       _ = x[ReactiveSumL2-61]
+       _ = x[ReactiveSumL3-62]
+       _ = x[ReactiveImport-63]
+       _ = x[ReactiveImportT1-64]
+       _ = x[ReactiveImportT2-65]
+       _ = x[ReactiveImportL1-66]
+       _ = x[ReactiveImportL2-67]
+       _ = x[ReactiveImportL3-68]
+       _ = x[ReactiveExport-69]
+       _ = x[ReactiveExportT1-70]
+       _ = x[ReactiveExportT2-71]
+       _ = x[ReactiveExportL1-72]
+       _ = x[ReactiveExportL2-73]
+       _ = x[ReactiveExportL3-74]
+       _ = x[DCCurrent-75]
+       _ = x[DCVoltage-76]
+       _ = x[DCPower-77]
+       _ = x[HeatSinkTemp-78]
+       _ = x[ChargeState-79]
+       _ = x[BatteryVoltage-80]
  }

-const _Measurement_name = 
"FrequencyCurrentCurrentL1CurrentL2CurrentL3VoltageVoltageL1VoltageL2VoltageL3PowerPowerL1PowerL2PowerL3ImportPowerImportPowerL1ImportPowerL2ImportPowerL3ExportPowerExportPowerL1ExportPowerL2ExportPowerL3ReactivePowerReactivePowerL1ReactivePowerL2ReactivePowerL3ApparentPowerApparentPowerL1ApparentPowerL2ApparentPowerL3CosphiCosphiL1CosphiL2CosphiL3THDTHDL1THDL2THDL3SumSumT1SumT2SumL1SumL2SumL3ImportImportT1ImportT2ImportL1ImportL2ImportL3ExportExportT1ExportT2ExportL1ExportL2ExportL3ReactiveSumReactiveSumT1ReactiveSumT2ReactiveSumL1ReactiveSumL2ReactiveSumL3ReactiveImportReactiveImportT1ReactiveImportT2ReactiveImportL1ReactiveImportL2ReactiveImportL3ReactiveExportReactiveExportT1ReactiveExportT2ReactiveExportL1ReactiveExportL2ReactiveExportL3DCCurrentDCVoltageDCPowerHeatSinkTempChargeStateBatteryVoltage"
+const _Measurement_name = 
"FrequencyCurrentCurrentL1CurrentL2CurrentL3VoltageVoltageL1VoltageL2VoltageL3PowerPowerL1PowerL2PowerL3ImportPowerImportPowerL1ImportPowerL2ImportPowerL3ExportPowerExportPowerL1ExportPowerL2ExportPowerL3ReactivePowerReactivePowerL1ReactivePowerL2ReactivePowerL3ApparentPowerApparentPowerL1ApparentPowerL2ApparentPowerL3PhaseAngleCosphiCosphiL1CosphiL2CosphiL3THDTHDL1THDL2THDL3SumSumT1SumT2SumL1SumL2SumL3ImportImportT1ImportT2ImportL1ImportL2ImportL3ExportExportT1ExportT2ExportL1ExportL2ExportL3ReactiveSumReactiveSumT1ReactiveSumT2ReactiveSumL1ReactiveSumL2ReactiveSumL3ReactiveImportReactiveImportT1ReactiveImportT2ReactiveImportL1ReactiveImportL2ReactiveImportL3ReactiveExportReactiveExportT1ReactiveExportT2ReactiveExportL1ReactiveExportL2ReactiveExportL3DCCurrentDCVoltageDCPowerHeatSinkTempChargeStateBatteryVoltage"

-var _Measurement_index = [...]uint16{0, 9, 16, 25, 34, 43, 50, 59, 68, 
77, 82, 89, 96, 103, 114, 127, 140, 153, 164, 177, 190, 203, 216, 231, 
246, 261, 274, 289, 304, 319, 325, 333, 341, 349, 352, 357, 362, 367, 
370, 375, 380, 385, 390, 395, 401, 409, 417, 425, 433, 441, 447, 455, 
463, 471, 479, 487, 498, 511, 524, 537, 550, 563, 577, 593, 609, 625, 
641, 657, 671, 687, 703, 719, 735, 751, 760, 769, 776, 788, 799, 813}
+var _Measurement_index = [...]uint16{0, 9, 16, 25, 34, 43, 50, 59, 68, 
77, 82, 89, 96, 103, 114, 127, 140, 153, 164, 177, 190, 203, 216, 231, 
246, 261, 274, 289, 304, 319, 329, 335, 343, 351, 359, 362, 367, 372, 
377, 380, 385, 390, 395, 400, 405, 411, 419, 427, 435, 443, 451, 457, 
465, 473, 481, 489, 497, 508, 521, 534, 547, 560, 573, 587, 603, 619, 
635, 651, 667, 681, 697, 713, 729, 745, 761, 770, 779, 786, 798, 809, 823}

  func (i Measurement) String() string {
         i -= 1
diff --git a/meters/measurements.go b/meters/measurements.go
index 0406241..476ae1b 100644
--- a/meters/measurements.go
+++ b/meters/measurements.go
@@ -62,6 +62,8 @@ const (
         ApparentPowerL2
         ApparentPowerL3

+        PhaseAngle
+
         Cosphi
         CosphiL1
         CosphiL2
@@ -156,6 +158,7 @@ var iec = map[Measurement][]string{
         ApparentPowerL1:  {"L1 Apparent Power", "VA"},
         ApparentPowerL2:  {"L2 Apparent Power", "VA"},
         ApparentPowerL3:  {"L3 Apparent Power", "VA"},
+        PhaseAngle:       {"Phase Angle", "°"},
         Cosphi:           {"Cosphi"},
         CosphiL1:         {"L1 Cosphi"},
         CosphiL2:         {"L2 Cosphi"},
diff --git a/meters/rs485/sdm220.go b/meters/rs485/sdm220.go
index e038e64..e518b19 100644
--- a/meters/rs485/sdm220.go
+++ b/meters/rs485/sdm220.go
@@ -24,14 +24,11 @@ func NewSDM220Producer() Producer {
                 Current: 0x0006, // 220, 230
                 Import:  0x0048, // 220, 230
                 Export:  0x004a, // 220, 230
-               Sum:     0x0156, // 220
-               // ImportReactive: 0x4C,   // 220, 230
-               // ExportReactive: 0x4E,   // 220, 230
+               Sum:     0x0156, // 220, 230
                 // SumWirk:        0x0156, // 220
-               // SumBlind:       0x0158, // 220
-               // ApparentPower:  0x0012, // 230
-               // ReactivePower:  0x0018, // 230
-               // PhaseAngle:     0x0024, // 230
+               ReactiveSum:       0x0158, // 220
+                ReactiveImport: 0x4C,   // 220, 230
+                ReactiveExport: 0x4E,   // 220, 230
         }
         return &SDM220Producer{Opcodes: ops}
  }
@@ -56,7 +53,7 @@ func (p *SDM220Producer) snip(iec Measurement) Operation {
  }

  func (p *SDM220Producer) Probe() Operation {
-       return p.snip(VoltageL1)
+       return p.snip(Voltage)
  }

  func (p *SDM220Producer) Produce() (res []Operation) {
diff --git a/meters/rs485/sdm230.go b/meters/rs485/sdm230.go
index a280b6e..c511dfb 100644
--- a/meters/rs485/sdm230.go
+++ b/meters/rs485/sdm230.go
@@ -27,11 +27,12 @@ func NewSDM230Producer() Producer {
                 Export:    0x004a, // 220, 230
                 Cosphi:    0x001e, //      230
                 Frequency: 0x0046, //      230
-               // ImportReactive: 0x4C,   // 220, 230
-               // ExportReactive: 0x4E,   // 220, 230
-               // ApparentPower:  0x0012, // 230
-               // ReactivePower:  0x0018, // 230
-               // PhaseAngle:     0x0024, // 230
+               ReactiveImport: 0x4C,   // 220, 230
+               ReactiveExport: 0x4E,   // 220, 230
+               ApparentPower:  0x0012, // 230
+               ReactivePower:  0x0018, // 230
+                Sum:     0x0156, // 230
+               PhaseAngle:     0x0024, // 230
         }
         return &SDM230Producer{Opcodes: ops}
  }
@@ -56,7 +57,7 @@ func (p *SDM230Producer) snip(iec Measurement) Operation {
  }

  func (p *SDM230Producer) Probe() Operation {
-       return p.snip(VoltageL1)
+       return p.snip(Voltage)
  }

  func (p *SDM230Producer) Produce() (res []Operation) {







On 1/9/20 10:28 PM, Andreas Goetz wrote:
> Du brauchst go 1.13. Zusätzliche Werte werden mit ausgelesen. Wenn etwas fehlt würde ich ihn aber gerne einfach mit einbauen.
> 
> Viele Grüße, Andreas
> 
> 
>> On 9. Jan 2020, at 21:22, joekokker at epios.eu wrote:
>>
>> Hallo Andreas,
>>
>> vielen Dank! Ich werde es gerne am Wochenende ausprobieren.
>>
>> Weisst du ob man mbmd mit dem go packet aus raspbian kompilieren kann, oder ob man die neueste go Version dafür braucht?
>>
>> Was passiert in mbmd intern, wenn ich weitere Reigster abfrage und unter einer Variable speichere? Z.B.:
>> ops := Opcodes{ ... CustomValue: 0x00FF ...
>> Kann ich diese auch direkt über die REST API Abfragen?
>>
>> Liebe Grüße
>> Joe
>>
>>
>>
>>
>> On 07.01.2020 09:23, Andreas Goetz wrote:
>>> Moin Joe,
>>> ich hab mal was versucht: https://github.com/volkszaehler/mbmd/pull/74
>>> Magst Du mal schauen ob das für Dich funktioniert und alle notwendigen Register dabei sind?
>>> Viele Grüße,
>>> Andreas
>>>> On 5. Jan 2020, at 22:33, Andreas Götz <cpuidle at gmail.com> wrote:
>>>>
>>>> Dann würde ich Dir- etwas Geduld- einfach einen neuen Zählertyp anlegen. Hast Du evtl auch Infos zum 220/120? Die gibts ja m.W. auch noch?
>>>>
>>>> Viele Grüße,
>>>> Andreas
>>>>
>>>>> Am 05.01.2020 um 22:30 schrieb joekokker at epios.eu:
>>>>>
>>>>> Lieber Andreas,
>>>>>
>>>>> leider scheint es einige kleine Abweichungen zu geben.
>>>>>
>>>>> http://www.flanesi.it/blog/download/sdm230modbus/SDM230-Modbus%20protocol%20V1.2.pdf
>>>>>
>>>>> Liebe Grüße
>>>>> Joe
>>>>>
>>>>>
>>>>>> On 1/5/20 9:47 PM, Andreas Goetz wrote:
>>>>>> Hey Joe
>>>>>> (Scnr ;)
>>>>>> Hast Du mal einen Link zum Handbuch? Ich dachte bisher, die Register wären ein Subset. Neue Zähler sind einfach, siehe meters/rtu Verzeichnis.
>>>>>> Viele Grüße, Andreas
>>>>>>>> Am 05.01.2020 um 21:43 schrieb joekokker at epios.eu:
>>>>>>>
>>>>>>> Hallo,
>>>>>>>
>>>>>>> ich habe über Weihnachten die Modbus Zähler SDM230 und SDM630 ausprobiert und dabei auch mbmd getestet. Die REST Api von mbmd lese ich periodisch mit einem Skript (exec-Protokoll vzlogger) aus um es in die Volkszahler Datenbank zu bringen.
>>>>>>>
>>>>>>> Für den SDM230 Zähler stimmen einige Zuordnungen nicht, da sie sich vom SDM630 unterscheiden. Zum Beispiel:
>>>>>>>
>>>>>>> Aus dem Manual für den SDM230 Zähler:
>>>>>>> ApparentPower 0x0012
>>>>>>> ReactivePower 0x0018
>>>>>>>
>>>>>>> Aus dem Quellcode von mbmd für den generellen SDM Zähler:
>>>>>>> ApparentPower: 0x0038
>>>>>>> ReactivePower: 0x003C
>>>>>>>
>>>>>>> Was ist das sinnvollste? Eine neue Definition für den Zähler?
>>>>>>>
>>>>>>> Aus Neugierde: Wie einfach ist es weitere Custom Werte der Zähler zusätzlich zu den Standard Werten mit mbmd auszulesen? Es gibt ja weitere Register bei den Zählern.
>>>>>>>
>>>>>>> Beste Grüße
>>>>>>> Joe
> 


More information about the volkszaehler-users mailing list