NEWS
Aufruf Sammlung an Modbus Anbindungen
-
Anbei meine Config für:
SMA Sunny Tripower X
Dieser hat jedoch eine fehlerhafte und unvollständige Implementierung der Modbus-Schnittstelle (Firmware 02.06.06.R).
Einige wichtige Werte fehlen komplett: z.B. erzeugte Gesamtenergie
Andere sind einfach falsch: bestimmte Werte werden für alle 3 MPP identisch angezeigt, obwohl unterschiedlich.
Um trotzdem alle Werte korrekt auslesen zu können, kombiniere ich die Modbus-Werte mit SMAHub (siehe hier: https://forum.iobroker.net/post/1016893)
Aus diesem Grund nutze ich nur folgende: 30775, 30777, 30779, 30781, 30795
Folgend einige weitere - in der Hoffnung, das SMA hier nachbessert.
Ich habe bei SMA ein Ticket eröffnet und die Probleme geschildert. Macht das bitte auch!_address name description unit type len factor offset formula role room cw isScale 30775 Measurement.GridMs.TotW Leistung W int32be 2 1 0 x<0?0:x level false false 30777 Measurement.GridMs.W.phsA Leistung L1 W int32be 2 1 x<0?0:x level false false 30779 Measurement.GridMs.W.phsB Leistung L2 W int32be 2 1 x<0?0:x level false false 30781 Measurement.GridMs.W.phsC Leistung L2 W int32be 2 1 x<0?0:x level false false 30783 Measurement.GridMs.PhV.phsA Netzspannung Phase L1 V uint32be 2 0,01 x>1000?0:x*0.01 level false false 30785 Measurement.GridMs.PhV.phsB Netzspannung Phase L2 V uint32be 2 0,01 x>1000?0:x*0.01 level false false 30787 Measurement.GridMs.PhV.phsC Netzspannung Phase L3 V uint32be 2 0,01 x>1000?0:x*0.01 level false false 30789 Measurement.GridMs.PhV.phsA2B Netzspannung Phase L1 gegen L2 V uint32be 2 0,01 x>1000?0:x*0.01 level false false 30791 Measurement.GridMs.PhV.phsB Netzspannung Phase L2 gegen L3 V uint32be 2 0,01 x>1000?0:x*0.01 level false false 30793 Measurement.GridMs.PhV.phsC Netzspannung Phase L3 gegen L1 V uint32be 2 0,01 x>1000?0:x*0.01 level false false 30795 Measurement.GridMs.TotA Netzstrom A uint32be 2 0,001 x>30000?0:x*0.001 level false false 30797 Measurement.GridMs.A.phsA Netzstrom L1 A uint32be 2 0,001 x>1000?0:x*0.001 level false false 30799 Measurement.GridMs.A.phsB Netzstrom L2 A uint32be 2 0,001 x>1000?0:x*0.001 level false false 30801 Measurement.GridMs.A.phsC Netzstrom L3 A uint32be 2 0,001 x>1000?0:x*0.001 level false false 30803 Measurement.GridMs.Hz Netzfrequenz Hz uint32be 2 0,01 x>6000?0:x*0.01 level false false 30805 Measurement.GridMs.TotVAr Blindleistung Var int32be 2 0,01 x<0?0:x*0.01 level false false 30807 Measurement.GridMs.VAr.phsA Blindleistung L1 Var int32be 2 0,01 x<0?0:x*0.01 level false false 30809 Measurement.GridMs.VAr.phsB Blindleistung L2 Var int32be 2 0,01 x<0?0:x*0.01 level false false 30811 Measurement.GridMs.VAr.phsC Blindleistung L3 Var int32be 2 0,01 x<0?0:x*0.01 level false false 30813 Measurement.GridMs.TotVA Scheinleistung VA int32be 2 0,01 x<0?0:x*0.01 level false false 30815 Measurement.GridMs.VA.phsA Scheinleistung L1 VA int32be 2 0,01 x<0?0:x*0.01 level false false 30817 Measurement.GridMs.VA.phsB Scheinleistung L2 VA int32be 2 0,01 x<0?0:x*0.01 level false false 30819 Measurement.GridMs.VA.phsC Scheinleistung L3 VA int32be 2 0,01 x<0?0:x*0.01 level false false 30957 Measurement.DcMs.Amp DC Strom Eingang A int32be 2 0,001 x<-1000?0:x*0.001 level false false 30959 Measurement.DcMs.Vol DC Spannung Eingang V int32be 2 0,01 x<-1000?0:x*0.01 level false false 30961 Measurement.DcMs.Watt DC Leistung Eingang W int32be 2 1 x<-1000?0:x level false false 30963 Measurement.DcMs.Amp DC Strom Eingang A int32be 2 0,001 x<-1000?0:x*0.001 level false false 30965 Measurement.DcMs.Vol DC Spannung Eingang V int32be 2 0,01 x<-1000?0:x*0.01 level false false 30967 Measurement.DcMs.Watt DC Leistung Eingang W int32be 2 1 x<-1000?0:x level false false 30969 Measurement.DcMs.Amp DC Strom Eingang A int32be 2 0,001 x<-1000?0:x*0.001 level false false 30971 Measurement.DcMs.Vol DC Spannung Eingang V int32be 2 0,01 x<-1000?0:x*0.01 level false false 30973 Measurement.DcMs.Watt DC Leistung Eingang W int32be 2 1 x<-1000?0:x level false false 30975 Measurement.Inverter.DclVol Zwischenkreisspannung V int32be 2 0,01 x<-1000?0:x*0.01 level false false 30977 Measurement.GridMs.A.phsA Netzstrom Phase L1 A int32be 2 0,001 x<-1000?0:x*0.001 level false false 30979 Measurement.GridMs.A.phsB Netzstrom Phase L2 A int32be 2 0,001 x<-1000?0:x*0.001 level false false 30981 Measurement.GridMs.A.phsC Netzstrom Phase L3 A int32be 2 0,001 x<-1000?0:x*0.001 level false false
-
@sascha-roth kann ich das Register irgendwie auch so einfügen, wie Du es hier eingestellt hast? In der Modbus Instanz kann man ja nur jeweils einen von Hand eingeben.
-
@turbosasch
Nein du kannst die auch einfach einfügen deswegen gibt es ja die sammlung, Naben dem Plus für neue zeile gibt es ein zeichen mit 2 Pfeilen eines hoch eines runter wenn du da drauf klickst öffnet sich ein fenstern wo du es einfügen kannst und dann auf Import schon hast du es drin -
Cooler Thread hier. Ich kann noch den Solarfocus eco Manager Touch beitragen. Wird bei mir für eine Wärmepumpe (Vampair) benutzt, sollte aber auch für andere Solarfocus Heizungen funktionieren.
Vorsichtshalber weise ich darauf hin, dass bei mir einige Register nicht spezifikationsgemäß funktioniert haben. Ein paar wenige habe ich sogar an anderen Adressen gefunden. Ich kann nicht sagen, ob das bei Solarfocus generell so ist oder nur bei mir abweicht. Die Konfiguration ist bei mir seit 2 Wintern erfolgreich im Einsatz. Ich empfehle aber, vor der Verwendung die Registerbelegung zu prüfen, insbesondere die Holdingregister.Eingangsregister.txt
Holdingregister.txt
-
@hansjochen
vielen dank für deine einträge. diese sparen, sehr viel zeit!!!ist es bei dir auch so, dass du entweder modbus oder die handyapp verwenden kannst?
-
@jumbo125
freut mich, dass Dir die Einträge weiter helfen. Die App habe ich nicht installiert und die Wärmepumpe hängt bei mir auch nicht im Internet. Wundert mich aber, wenn das nicht gleichzeitig mit Modbus funktioniert. Sind ja eigentlich völlig unterschiedliche Kommunikationskanäle.Falls die 64 Bit Werte bei Dir funktionieren, würde ich mich über einen Hinweis freuen. Sämtliche Energieverbräuche werden ja so dargestellt. Leider kommen da bei mir keine sinnvollen Werte an und ausgerechnet hier geht aus der Spezifikation von Solarfocus die Bitreihenfolge nicht klar hervor. Ich habe aber alle Varianten durchprobiert und bekomme bei keiner davon die Werte, die mir die Wärmepumpe anzeigt. Ist aber alles nur "nice to have", das Regeln der Heizung funktioniert darüber seit Jahren problemlos.
Viel Spaß beim Automatisieren!
-
@hansjochen
Meinst du die energiewerte im rahmen der PV werte? Ev. Kannst du mir ein paar adress bspw geben, welche du meinst.
Mein bruder hat ewig lange mit seiner viessmann lwp umger getan. Ev hat er ein paar vergleichsideen -
@jumbo125 sagte in Aufruf Sammlung an Modbus Anbindungen:
@hansjochen
Meinst du die energiewerte im rahmen der PV werte? Ev. Kannst du mir ein paar adress bspw geben, welche du meinst.
Mein bruder hat ewig lange mit seiner viessmann lwp umger getan. Ev hat er ein paar vergleichsideenHallo @jumbo125 ,
ich habe gerade nochmal reingeschaut. Ich meinte nicht 64 Bit, sondern 32 Bit Werte (64 Bit gibt es hier gar keine). Allerdings gibt es einen 32 Bit Wert, der bei mir korrekte Werte liefert (2504_Verbrauch_WP), in so fern sollten die Einstellungen hier eigentlich schon korrekt sein. Alle anderen, also beispielsweise 2316 (elektrische Energie Heizung) liefern bei mir Quatsch Werte. Manche 32 Bit Werte liefern auch Werte, die halbwegs plausibel aussehen, aber von denen, die mir das HMI anzeigt, um ein paar kWh abweichen.Die meisten kürzeren Werte funktionieren bei mir korrekt und wie gesagt, das Regeln geht auch ohne Probleme. Ich weiß nicht, ob das ein genereller Bug in der Modbus Schnittstelle von Solarfocus ist oder etwas Spezifisches in meiner Installation, etwa weil der Elektriker oder der Heizungsbauer etwas falsch verdrahtet hat o.ä. Daher würde mich interessieren, ob Du bei den 32 Bit Werten plausible Zahlen bekommst.
EDIT: Ich sehe gerade, dass ich bei einigen 32 Bit Werten Big Endian, Word Swap eingestellt hatte. Korrekt sollte in jedem Fall "Big Endian" sein, sonst kann es nicht funktionieren. Bei mir stimmt es, wie geschrieben, mit keiner Einstellung. Ich werde das heute Abend aber noch korrigieren und wieder hier einstellen. Dann funktioniert es vielleicht bei anderen. Betrifft nur die 32 Bit Werte, alles andere stimmt. Holding Register sind alle korrekt.
-
@hansjochen sag, kannst du dein raumthermostat ansteuern? Das geht bei meinem bruder nicht.
Muss das in der firmware freigeschaltet werden? -
@jumbo125 sagte in Aufruf Sammlung an Modbus Anbindungen:
@hansjochen sag, kannst du dein raumthermostat ansteuern? Das geht bei meinem bruder nicht.
Muss das in der firmware freigeschaltet werden?Ich habe keinen Raumthermostat, sondern benutze alle Thermometer, die ich irgendwie erreichen kann. (Teilweise Shelly HT, teilweise Thermostatventilköpfe in den Räumen mit Heizkörpern, sonst auch Fritz DECT Schalter, die auch ein Thermometer drin haben).
Modbus ist bei Solarfocus aber komplett offen. Da gibt's nichts frei zu schalten oder zu lizenzieren. Die Soll Raumtemperatur solltest Du über Register 32605 für Heizkreis 1 setzen können (jeweils +50 für Heizkreis 2 - 8). Ich benutze statt dessen 32606 (+32656), um der Heizung die Durchschnittstemperatur aller Räume an diesem Heizkreis bekannt zu machen. Raumtemperatur und -feuchte auslesen geht über 1101 und 1102.
Funktioniert das bei Deinem Bruder nicht oder sollte der Raumthermostat noch was anderes können?
-
@jumbo125
Ich habe übrigens gerade noch mal reingeschaut. Es scheint (bei mir) zu stimmen, dass manche der 32 Bit Werte ein Word_Swap haben und andere nicht, auch wenn das völlig bizarr ist. Mit den Einstellungen, die ich hier hochgeladen habe, bekomme ich vernünftige Werte sowohl für 2504 (ohne Word Swap) als auch einigermaßen passende für 2310 - 2314 (mit Word Swap). Einigermaßen, weil die Werte, die mir das Touchdisplay im Bereich "Count" anzeigt je nach Wert etwa 50 - 150 kWh höher liegen als die, die ich über Modbus bekomme. Diese Distanz hat sich aber über die Jahre nicht geändert. Die Werte sind also schon sinnvoll benutzbar.Register 2318 und 2320 liefern mir dagegen immer Quatsch Werte unabhängig von der Endianess Einstellung. Sie zählen auch nicht sinnvoll weiter, sondern springen hin und her. Wenn Du (oder jemand anderes) dort sinnvolle Werte ablesen kannst, würde mich das interessieren.
Übrigens teile ich der Wärmepumpe den PV Ertrag und Hausverbrauch nicht mehr mit. Ich habe das früher getan und es hat funktioniert. Allerdings hat dann die Wärmepumpe angefangen, "mitzudenken" - auch ohne dass ich das SG_READY Flag gesetzt habe. So was mag ich gar nicht: Ich steuere die WP selbst und drehe abhängig vom PV Überschuss bei Bedarf die Vorlauftemperatur leicht hoch und habe mir auch unterschiedliche Hysteresen für Sommer und Winter reinmodelliert. Wenn man solche Dinge nicht macht, mag es praktisch sein, dass die Wärmepumpe die Information nutzt.
Ich habe auch den Eindruck, dass die Wärmepumpe mehr arbeitet, wenn der Unterschied zwischen Raum Ist und Raum Soll-Temperatur größer ist, um schneller auf die Soll-Vorlauftemperaturen zu kommen. Dabei bin ich mir aber nicht sicher und wenn, ist der Effekt für mich eher positiv.
-
@apollon77 said in Aufruf Sammlung an Modbus Anbindungen:
Die Idee ist das ganze im GitHub unter https://github.com/ioBroker/modbus-templates zu sammeln - in einer Verzeichnisstruktur, sodasss man mehr unterbringen kann und vllt einfacher finden kann. Später könnte das eine Basis sein um es auch direkt in den Adapter zu integrieren ... aber dazu brauchen wir erstmal ein bissl Content
Super Idee, leider aber anscheinend ein bisschen eingeschlafen. Ich hab jetzt mal einen PR mit einem kleinen Subset (es gibt hunderte von mehr oder weniger sinnvollen Registern) von Holding Registers für Alpha-ESS PV Systeme gestellt und werde versuchen, die Alpha-ESS Nutzer in ihrem Forum zur Mitarbeit zu bewegen.
-
@hansjochen
Hallo,
ich hatte deine Eingangsregister importiert nachdem ich teilweise bei meinen manuell angelegten Registern unplausible Werte hatte.
Hast du bei bei den Registern für Energie bzw. Leistung jemals korrekte Werte erhalten?
Bei Register 2310 bis 2320 (Energie) bekomme ich entweder 0, negative Werte bzw. wenn ein positiver Wert vorhanden ist, dann kann ich keinen Wert annähernd zu irgendeinem angezeigten Verbrauch am Touchscreen zuordnen.
Bei Register 2320 bis 2324 (Leistung) habe ich immer 0 als Werte, hier kommt einfach nichts.Hattest du hier irgendwo bei den oben genannten Registern Erfolg?
Mich würde vor allem die elektrische Leistung die verbraucht wird interessieren. -
Servus Fatmax,
danke für Dein Feedback. In der Tat habe ich bei einigen Registern nicht ganz passende Werte, die ich mir nicht erklären kann. Im Großen und Ganzen stimmt es, v.a. die Steuerung funktioniert zuverlässig. Die Energiewerte finde ich auch seltsam und verhalten sich nicht spezifikationskonform. Bei mir aber wohl etwas anders als bei Dir:
An 2310 finde ich ungefähr die thermische Gesamtenergie fürs Heizen. Laut Spec wäre es aber Heizen + TWS.
An 2312 ist bei mir die gesamte elektrische Energie (laut Spec für TWS)
An 2314 bei mir elektrisch TWS (laut Spec thermisch Heizen)
An 2316 bei mir elektrisch Heizen (laut Spec elektrisch Heizen + TWS)
2318 und 20 sind bei mir völlig gaga und nicht stetig wachsend. Laut Spec sollten das elektr. TWS bzw. Heizen sein.Alle o.g. Werte "ungefähr", weil die Werte, die mir im Touch angezeigt werden, ein paar kWh abweichen. Die Abweichung scheint aber einigermaßen konstant.
2322 bis 24 sind bei mir ebenfalls konstant 0.
Die elektrische Leistung, die verbraucht wird, kann ich unter 2504 zuverlässig ablesen. Die 2504er Werte decken sich mit der Verdichterleistung laut Status Anzeige im Touch. Ich finde etwas blöd, dass das nur die Leistung des Verdichters ist. Der Ventilator braucht ja auch noch mal 5-10% der Verdichterleistung und wird offenbar nicht eingerechnet.
Aus der Leistung rechne ich mir selbst die verbrauchte Energie aus (durch einen periodischen Thread, der die Leistung aufsummiert). Das funktioniert erstaunlich gut. Die darüber kumulierten Werte liegen dann aber durch die fehlende Ventilator Leistung etwa 10% unter den kumulierten Werten im Touch.
Besonders interessant finde ich, dass Du ebenfalls falsche Werte bekommst, aber anders als bei mir. Ich hatte erwartet, dass es entweder ein Fehler auf Hersteller Seite ist und die Werte gleich gut oder schlecht passen oder mit meiner Installation zu tun hat und dann bei mir falsch, aber bei Dir spezifikationskonform.
Du könntest noch ausprobieren, die Endianess der 32 Bit Register zu ändern, wo Du unpassende Werte bekommst. Ich wundere mich, dass zur Kommunikation mit dem selben Gerät unterschiedliche Endianess eingestellt werden muss. Bei mir ist das halt so. Betrifft aber fast nur die Leistung bzw. Energiewerte.
@fatmax sagte in Aufruf Sammlung an Modbus Anbindungen:
@hansjochen
Hallo,
ich hatte deine Eingangsregister importiert nachdem ich teilweise bei meinen manuell angelegten Registern unplausible Werte hatte.
Hast du bei bei den Registern für Energie bzw. Leistung jemals korrekte Werte erhalten?
Bei Register 2310 bis 2320 (Energie) bekomme ich entweder 0, negative Werte bzw. wenn ein positiver Wert vorhanden ist, dann kann ich keinen Wert annähernd zu irgendeinem angezeigten Verbrauch am Touchscreen zuordnen.
Bei Register 2320 bis 2324 (Leistung) habe ich immer 0 als Werte, hier kommt einfach nichts.Hattest du hier irgendwo bei den oben genannten Registern Erfolg?
Mich würde vor allem die elektrische Leistung die verbraucht wird interessieren. -
Hier meine Register für QCells/Solax X3 HYBRID G4.
Eingangsregister:
_address name description unit type len factor offset formula role room cw isScale 0 GridVoltage Netz Spannung V uint16be 1 0.1 0 value 1 GridCurrent Netz Strom A int16be 1 0.1 0 value 2 GridPower Netz Leistung W int16be 1 1 0 value 3 PvVoltage1 PV Spannung String 1 V uint16be 1 0.1 0 value 5 PvCurrent1 PV Strom String 1 A uint16be 1 0.1 0 value 7 GridFrequency Netz Frequenz Hz uint16be 1 0.01 0 value 8 Temperature Temperatur °C int16be 1 1 0 value 9 RunMode Betriebsmodus uint16be 1 1 0 value 10 Powerdc1 DC-Leistung String 1 W uint16be 1 1 0 value 20 BatVoltage_Charge1 Batterie Ladespannung V int16be 1 0.1 0 value 21 BatCurrent_Charge1 Batterie Ladestrom A int16be 1 0.1 0 value 22 Batpower_Charge1 Batterie Ladeleistung W int16be 1 1 0 value 23 BMS_Connect_State 0:Disconnected 1:Connected uint16be 1 1 0 state 24 TemperatureBat Batterie Temperatur °C int16be 1 1 0 value 28 BatteryCapacity Batterie Ladezustand (SoC) % uint16be 1 1 0 level 70 feedin_power Bezug/Einspeisung (+/-) W int32sw 2 1 0 value 72 feedin_energy_total Einspeisung kW uint32sw 2 0.01 0 value 74 consum_energy_total Bezug kW uint32sw 2 0.01 0 value 80 Etoday_togrid Einspeisung Tag kWh uint16be 1 0.1 0 value 82 Etotal_togrid Einspeisung Gesamt kWh uint32sw 2 0.1 0 value 35 InputEnergy_Charge_today Ladung Tag kWh uint16be 1 0.1 0 value 148 SolarEnergyTotal Solarertrag Gesamt kWh uint32sw 2 0.1 0 value 150 SolarEnergyToday Solarertrag Tag kWh uint16be 1 0.1 0 value 154 consum_energy_today Bezug Tag kWh uint32sw 2 0.01 0 value 152 feedin_energy_today Einspeisung Tag kWh uint32sw 2 0.01 0 value
Holding-Register:
_address name description unit type len factor offset formula role room poll wp cw isScale 0 InverterSN Seriennummer WR string 7 1 0 true 7 FactoryName Hersteller string 7 1 0 true 139 SolarChargerUseMode Ladestrategie: 0 = Self use mode, 1 = Feedin Priority, 2 = Back up mode, 3 = Manual mode uint16be 1 1 0 true 141 wBattery1_Type Batterietyp: 0 = Blei/Säure, 1 = Lithium uint16be 1 1 0 true 140 Battery_MinCapacity Batterie Mindestladung % uint16be 1 1 0 level true ```
-
@thebam Darf ich deinen Startpost modifizieren?
ich würde den Threadtitel etwas suchfreundlicher gestalten (z.b. Registertabelle) hinzufügen.
Hab eben wieder ewig gesucht um den Thread zu finden.Außerdem wäre es schön wenn im Startpost die Geräte aufgelistet wären, mit Link zum Post.
oder willst du das selber pflegen?
-
@homoran said in Aufruf Sammlung an Modbus Anbindungen:
Außerdem wäre es schön wenn im Startpost die Geräte aufgelistet wären, mit Link zum Post.
@apollon77 hat doch bereits in Guthub ein entsprechendes Projekt angelegt. Ich denke, es wäre sinnvoller, darauf im Eingangspost zu verweisen: https://github.com/ioBroker/modbus-templates
-
@gaspode sagte in Aufruf Sammlung an Modbus Anbindungen:
hat doch bereits in Guthub ein entsprechendes Projekt angelegt
Gut!
und du pflegst das, oder müssen dann die Tabellen per PR da rein, was es wieder etwas wenigereinfach macht.
-
@homoran said in Aufruf Sammlung an Modbus Anbindungen:
und du pflegst das, oder müssen dann die Tabellen per PR da rein
Also ich pflege das nicht (bzw. nur "meinen" WR). @apollon77 hatte ja geschrieben, Beiträge bitte per PR, wer sich das nicht zutraut, bitte ein GitHub Issue anlegen.
Wenn sich jemand selbst das nicht zutraut, dann gerne in diesem Thread einen Beitrag und mich mentionen, dann kann ich den PR auch anlegen. Im Falle von @Codierknecht bin ich mir aber ziemlich sicher, dass er bisher einfach nicht gesehen hat, dass es die Sammlung auf Github gibt, sonst hätte er bestimmt schon selbst einen PR erstellt.
Deshalb meine Anregung, das im ersten Post des Threads zu schreiben.
Ziel ist es ja, diese Sammlung per Mausklick im Modbus Adapter zugänglich zu machen.
-
@gaspode sagte in Aufruf Sammlung an Modbus Anbindungen:
Deshalb meine Anregung, das im ersten Post des Threads zu schreiben.
steht doch da