NEWS
Modbus auslesen und Register anlegen.
-
@guppy82 sagte in Modbus auslesen und Register anlegen.:
Kann mir da einer Helfen ???
SMO S40
schau mal hier :
https://forum.iobroker.net/topic/40479/modbus-tcp-adapter-problem-mit-nibe-f2120-wärmepumpe
-
Noch nicht fertig aber es Läuft
Also mit der PDF von Nibe M12676EN.pdfmuß man nach der Register Id schauen. Aber es könnte ja auch einfach sein.
Man schauen was man für ein Register hat 3=EingangsRegister, 4=HoldingRegister.Dann die dann die Modbus ID +1
und man hat den passenden Registeradresse.
Z.b. EingangsRegister /ID Adresse aus der PDF / +1
30 / 155 / +1 =30156Natürlich immer 5 stellig. z.b. (55) =30055
Ich hoffe ich kann damit jemanden Zeit sparen.
-
@guppy82 Irgendwie will es nicht funktionieren
Ich habe den Adapter eingerichtet und alles ist auf grün.
Ich habe im Adapter folgende Einstellung vorgenommen
Das Eingangsregister habe ich zum Versuch angelegt
Und bekomme folgende Werte in meinen Objekten
Das scheint ja schon mal zu funktionieren.
Jetzt aber zu meinem Problem:
Wenn ich die Aussentemperatur aus der Modbusliste nehme hat die diese die ID 1
Somit wäre die Modbusadresse 30156
Ist das richtig?
Damit geht es aber nicht.
Ich habe auch die Modbusdaten mit USB aus der Anlage gelden und habe folgendes erhalten"Titel ReÂgisterÂtyp ReÂgister DiviÂsionsÂfaktor EinÂheit VariÂablenÂgröße MindestÂwert HöchstÂwert StanÂdardÂwert " "Aktuelle Außenlufttemperatur (BT1) MODBUS_INPUT_REGISTER 1 10 °C 2 0 0 0" "Vorlauf (EP23-BT2) MODBUS_INPUT_REGISTER 2 10 °C 2 0 0 0" "Vorlauf (EP22-BT2) MODBUS_INPUT_REGISTER 3 10 °C 2 0 0 0" "Vorlauf (EP21-BT2) MODBUS_INPUT_REGISTER 4 10 °C 2 0 0 0" "Brauchwasser, oben (BT7) MODBUS_INPUT_REGISTER 8 10 °C 2 0 0 0" "Brauchwasserbereitung (BT6) MODBUS_INPUT_REGISTER 9 10 °C 2 0 0 0" "Kollektoreintritt (AZ10-BT26) MODBUS_INPUT_REGISTER 21 10 °C 2 0 0 0" "Kollektoraustritt (AZ10-BT27) MODBUS_INPUT_REGISTER 22 10 °C 2 0 0 0" "Rücklauf (EQ1-BT65) MODBUS_INPUT_REGISTER 31 10 °C 2 0 0 0" "Sicherheitstemperaturbegrenzer (EB100-FD1) MODBUS_INPUT_REGISTER 36 1 2 0 0 0" "Mittlere Temperatur (BT1) MODBUS_INPUT_REGISTER 37 10 °C 2 0 0 0" "Heizkesseltemperatur (BT52) MODBUS_INPUT_REGISTER 38 10 °C 2 0 0 0" "Externer Vorlauf (BT25) MODBUS_INPUT_REGISTER 39 10 °C 2 0 0 0" "Volumenstrommesser (BF1) MODBUS_INPUT_REGISTER 40 10 l/m 2 0 0 0" "Fremdstromanode (EB100-FR1) MODBUS_INPUT_REGISTER 41 1 2 0 0 0" "Pool (CL12-BT51) MODBUS_INPUT_REGISTER 59 10 °C 2 0 0 0" "- MODBUS_INPUT_REGISTER 60 10 °C 2 0 0 0" "- MODBUS_INPUT_REGISTER 61 10 °C 2 0 0 0" "- MODBUS_INPUT_REGISTER 62 10 °C 2 0 0 0" "- MODBUS_INPUT_REGISTER 63 10 °C 2 0 0 0" "- MODBUS_INPUT_REGISTER 64 10 °C 2 0 0 0" "- MODBUS_INPUT_REGISTER 65 10 °C 2 0 0 0" "Kollektoreintritt (AZ13-BT26) MODBUS_INPUT_REGISTER 66 10 °C 2 0 0 0" "Kollektoreintritt (AZ12-BT26) MODBUS_INPUT_REGISTER 67 10 °C 2 0 0 0" "Kollektoreintritt (AZ11-BT26) MODBUS_INPUT_REGISTER 68 10 °C 2 0 0 0" "Kollektoraustritt (AZ13-BT27) MODBUS_INPUT_REGISTER 69 10 °C 2 0 0 0" "Kollektoraustritt (AZ12-BT27) MODBUS_INPUT_REGISTER 70 10 °C 2 0 0 0" "Kollektoraustritt (AZ11-BT27) MODBUS_INPUT_REGISTER 71 10 °C 2 0 0 0" "Zusatzheizung (BT63) MODBUS_INPUT_REGISTER 72 10 °C 2 0 0 0" "Rücklauf (EP23-BT3) MODBUS_INPUT_REGISTER 75 10 °C 2 0 0 0" "Rücklauf (EP22-BT3) MODBUS_INPUT_REGISTER 76 10 °C 2 0 0 0" "Rücklauf (EP21-BT3) MODBUS_INPUT_REGISTER 77 10 °C 2 0 0 0" "Rücklauf (EP15-BT3) MODBUS_INPUT_REGISTER 78 10 °C 2 0 0 0" "Brauchwasseraustritt (BT70) MODBUS_INPUT_REGISTER 87 10 °C 2 0 0 0" "Rücklauf (BT71) MODBUS_INPUT_REGISTER 88 10 °C 2 0 0 0" "Kollektor (EQ1-BT57) MODBUS_INPUT_REGISTER 90 10 °C 2 0 0 0" "Wärmeabfuhr (EQ1-BT75) MODBUS_INPUT_REGISTER 91 10 °C 2 0 0 0" "Vorlauf (EP47-BT2) MODBUS_INPUT_REGISTER 94 10 °C 2 0 0 0" "Vorlauf (EP46-BT2) MODBUS_INPUT_REGISTER 95 10 °C 2 0 0 0" "Vorlauf (EP45-BT2) MODBUS_INPUT_REGISTER 96 10 °C 2 0 0 0" "Vorlauf (EP44-BT2) MODBUS_INPUT_REGISTER 97 10 °C 2 0 0 0" "Rücklauf (EP47-BT3) MODBUS_INPUT_REGISTER 98 10 °C 2 0 0 0" "Rücklauf (EP46-BT3) MODBUS_INPUT_REGISTER 99 10 °C 2 0 0 0" "Rücklauf (EP45-BT3) MODBUS_INPUT_REGISTER 100 10 °C 2 0 0 0" "Rücklauf (EP44-BT3) MODBUS_INPUT_REGISTER 101 10 °C 2 0 0 0" "id:149 MODBUS_INPUT_REGISTER 108 10 °C 2 0 0 0" "Mittlere Raumtemperatur Klimatisierungssystem 8 (BT50) MODBUS_INPUT_REGISTER 109 10 °C 2 0 0 0" "Mittlere Raumtemperatur Klimatisierungssystem 7 (BT50) MODBUS_INPUT_REGISTER 110 10 °C 2 0 0 0" "Mittlere Raumtemperatur Klimatisierungssystem 6 (BT50) MODBUS_INPUT_REGISTER 111 10 °C 2 0 0 0" "Mittlere Raumtemperatur Klimatisierungssystem 5 (BT50) MODBUS_INPUT_REGISTER 112 10 °C 2 0 0 0" "Mittlere Raumtemperatur Klimatisierungssystem 4 (BT50) MODBUS_INPUT_REGISTER 113 10 °C 2 0 0 0" "Mittlere Raumtemperatur Klimatisierungssystem 3 (BT50) MODBUS_INPUT_REGISTER 114 10 °C 2 0 0 0" "Mittlere Raumtemperatur Klimatisierungssystem 2 (BT50) MODBUS_INPUT_REGISTER 115 10 °C 2 0 0 0" "Mittlere Raumtemperatur Klimatisierungssystem 1 (BT50) MODBUS_INPUT_REGISTER 116 10 °C 2 0 0 0" "Externe Vorlauftemperatur, Kühlung (BT25) MODBUS_INPUT_REGISTER 119 10 °C 2 0 0 0" "id:193 MODBUS_INPUT_REGISTER 128 1 4 0 0 0" "Betriebsmodus Mischventil Klimatisierungssystem 8 MODBUS_INPUT_REGISTER 129 1 4 0 0 0" "Betriebsmodus Mischventil Klimatisierungssystem 7 MODBUS_INPUT_REGISTER 130 1 4 0 0 0" "Betriebsmodus Mischventil Klimatisierungssystem 6 MODBUS_INPUT_REGISTER 131 1 4 0 0 0" "Betriebsmodus Mischventil Klimatisierungssystem 5 MODBUS_INPUT_REGISTER 132 1 4 0 0 0" "id:246 MODBUS_INPUT_REGISTER 133 1 4 0 0 0" "Relaisstatus (ERS 1) MODBUS_INPUT_REGISTER 134 1 4 0 0 0" "Ventilatordrehzahl (AZ30-GQ2) MODBUS_INPUT_REGISTER 135 1 % 4 0 0 0" "Ventilatordrehzahl (AZ30-GQ3) MODBUS_INPUT_REGISTER 136 1 % 4 0 0 0" "Kontrolle des aktuellen Brauchwassermodus durch MODBUS_INPUT_REGISTER 137 1 1 0 0 0" "Max. Verdichterfrequenz, Erwärmung MODBUS_INPUT_REGISTER 141 100 Hz 5 0 0 0" "Externe Justierung Klimatisierungssystem 8 MODBUS_INPUT_REGISTER 151 1 4 0 0 0" "Externe Justierung Klimatisierungssystem 7 MODBUS_INPUT_REGISTER 152 1 4 0 0 0" "Externe Justierung Klimatisierungssystem 6 MODBUS_INPUT_REGISTER 153 1 4 0 0 0" "Externe Justierung Klimatisierungssystem 5 MODBUS_INPUT_REGISTER 154 1 4 0 0 0" "Klimatisierungssystem 8 MODBUS_INPUT_REGISTER 156 1 4 0 0 0" "Klimatisierungssystem 7 MODBUS_INPUT_REGISTER 157 1 4 0 0 0" "Klimatisierungssystem 6 MODBUS_INPUT_REGISTER 158 1 4 0 0 0" "Klimatisierungssystem 5 MODBUS_INPUT_REGISTER 159 1 4 0 0 0"
MOD-EDIT: Code-tags gefixt
Wie bekomme ich denn jetzt die richtigen Modbusadressen für den Adapter
-
@ralfengelberth sagte in Modbus auslesen und Register anlegen.:
Wie bekomme ich denn jetzt die richtigen Modbusadressen für den Adapter
die stehen doch in der Tabelle
-
@homoran sagte in Modbus auslesen und Register anlegen.:
@ralfengelberth sagte in Modbus auslesen und Register anlegen.:
Wie bekomme ich denn jetzt die richtigen Modbusadressen für den Adapter
die stehen doch in der Tabelle
Ja das ist richtig aber welche Adresse trage ich im Adapter ein?
z.B. Aktuelle Aussentemperatur hat die Adresse 1 gem. USB-Ausgabetabelle.
Und wie ist jetzt die Adresse im Adapter einzutragen.
Wenn ich da 1 eintrage geht es nicht.
Gem. Gruppy82 müsste es ja denn 30156 sein.
Z.b. EingangsRegister /ID Adresse aus der PDF / +1
30 / 155 / +1 =30156
Natürlich immer 5 stellig. z.b. (55) =30055Das ist aber falsch.
Ist das hier richtig?
Die Aussentemperatur-Adresse gem USB-Ausgabetabelle = 1
30000+1 (USB-Ausgangstabelle) + 1
Einzutragende Adresse wäre somit 30002 für die Aussentemperatur.
Richtig? -
@ralfengelberth sagte in Modbus auslesen und Register anlegen.:
aber welche Adresse trage ich im Adapter ein?
fang mal mit einer an
@ralfengelberth sagte in Modbus auslesen und Register anlegen.:
aktuelle Aussentemperatur hat die Adresse 1
wäre ein schönes Beispiel.
@ralfengelberth sagte in Modbus auslesen und Register anlegen.:
Wenn ich da 1 eintrage geht es nicht.
Geht nicht ist keine Fehlerbeschreibung!
@ralfengelberth sagte in Modbus auslesen und Register anlegen.:
Einzutragende Adresse wäre somit 30002 für die Aussentemperatur.
Richtig?möglich, aber der falsche Weg
Du musst die uns noch nicht bekannte Grundkonfiguration des Adapters anpassen
-
Was verstehst du unter Grundkonfiguration des Adapters.
Das habe ich doch in meinem ersten Post geschrieben.Ich habe es aber mit meiner vorgeschlagenen Variante geschafft.
30000+1 (USB-Ausgangstabelle) + 1
Einzutragende Adresse wäre somit 30002 für die Aussentemperatur
Jetzt werden die Werte in den Objekten angezeigt.
Ich habe jetzt nur noch das Problem, dass die Werte falsch mutipliziert werden.
-
@ralfengelberth mach mal den Haken bei Alias verwenden weg
-
@homoran sagte in Modbus auslesen und Register anlegen.:
@ralfengelberth mach mal den Haken bei Alias verwenden weg
Nach dem entfernen von Alias haben sich alle Adressen auf die Grundadresse geändert.
Also aus 30002 wurde 1Jetzt habe ich nur noch das Problem mit den Ausgabewerten.
Hier am Beispiel Aussentemperatur
Die Vorgabe der USB-Ausgabetabelle war wie folgt.Titel Registertyp Register Divisionsfaktor Einheit Variablengröße Mindestwert Höchstwert Standardwert Column1 Aktuelle Außenlufttemperatur (BT1) MODBUS_INPUT_REGISTER 1 10 °C 2 0 0 0
Die Eingabe im Adapter habe ich so gemacht
_address name description unit type len factor offset formula role room cw isScale 1 1 Aktuelle Außenlufttemperatur (BT1) °C int16be 1 10 0 value.temperature false false
Jetzt wir mir aber die Aussentemperatur mit z.B. 10°C angezeigt.
Hier müsste eigentlich -0,1°C stehen
Wenn ich den Faktor von 10 auf -0.1 ändere wird mir auch die Aussentemperatur richtig mit -0.1°C angezeigt.Bei anderen Werten steht auch als Vorgabe in der USB-Ausgangstabell eine 10.
Hier muss ich den Wert sogar auf -0.001 ändern um einen richtigen Wert zu bekommen.
Was mache ich falsch? -
@ralfengelberth mach mal bitte einen Screenshot der Einstellg für den Register!
Hier sieht man die Zuordnung der Spalten nicht.Wie kommst du auf int16be?
-
@homoran sagte in Modbus auslesen und Register anlegen.:
@ralfengelberth mach mal bitte einen Screenshot der Einstellg für den Register!
Hier sieht man die Zuordnung der Spalten nicht.Wie kommst du auf int16be?
wenn ich die Werte versuche zuzuordnen gibt es eine Spalte "Divisionsfaktor"
Eine Division durch 10 entspricht einem Faktor von 0.1Einen negativen Faktor solltest du nicht verwenden müssen.
Möglicherweise ist das Problem hier
@ralfengelberth sagte in Modbus auslesen und Register anlegen.:
Nach dem entfernen von Alias haben sich alle Adressen auf die Grundadresse geändert.
Also aus 30002 wurde 1du schriebst zu Beginn
@ralfengelberth sagte in Modbus auslesen und Register anlegen.:
Die Aussentemperatur-Adresse gem USB-Ausgabetabelle = 1
30000+1 (USB-Ausgangstabelle) + 1dann bist du ggf. nicht bei der korrekten Adresse
versuch mal die 2 -
@homoran
@homoran
Die Signed 16 bit habe ich hier aus dem Forum.
https://forum.iobroker.net/topic/68134/nibe-smo-s40-im-iobrocker-anzeigen-lassen/2?_=1735651025789
Wenn ich dann auf TSV bearbeiten gehe wird mir dort Signed 16 bit als int16be angezeigt.
Zur info: Der dort erwähne myuplink-Adapter liefert nicht alle Daten und die Daten werden auch teilweise nicht aktualisiert.
Mit der direkten abfrage über Modbus habe ich bessere Erfahrungen.Hier die Zuordnung der Daten
Wenn ich das Minus vor werglasse, wird mir die z.B. Aussentemperatur mit +0,6°C angezeigt.
Es sind aber -0,6°C momentan.Mit den Werten habe ich es hinbekommen.
Warum -0.1 oder 0.1 oder -0.001 ist mir nicht ersichtlich aber die Werte werden jetzt richtig angezeigt.Hier das Ergebniss
-
@ralfengelberth sagte in Modbus auslesen und Register anlegen.:
Hier die Zuordnung der Daten
warum heissen die Alle
1
?
zum Glück lässt du das Register mit in die ID schreiben, sonst gäbe es echte Probleme@ralfengelberth sagte in Modbus auslesen und Register anlegen.:
Warum -0.1 oder 0.1 oder -0.001 ist mir nicht ersichtlich
Das kommt auf die Genauigkeit der gelieferten Daten und dem zugehörigen Format an.
und wie gesagt sollte ein negativer Fakror nicht nötig sein.signed Integer hat ein Vorzeichen
@ralfengelberth sagte in Modbus auslesen und Register anlegen.:
Wenn ich das Minus vor werglasse, wird mir die z.B. Aussentemperatur mit +0,6°C angezeigt.
Es sind aber -0,6°C momentan.und was passiert dann bei +0.6°C?
-
@homoran Ich habe hier die Adressen mal überarbeitet und bin diese am Testen.
Die Vorzeichen(-) habe ich alle entfernt.
ich werde mich wieder melden, ob ich Erfolg hatte._address name description unit type len factor offset formula role room cw isScale 1 AT Aktuelle Außenlufttemperatur (BT1) °C int16be 1 0.1 0 value.temperature false false 8 BWBT7 Brauchwasser, oben (BT7) °C int16be 1 0.1 0 value.temperature false false 9 BWBT6 Brauchwasserbereitung (BT6) °C int16be 1 0.1 0 value.temperature false false 37 MTBT1 Mittlere Temperatur (BT1) °C int16be 1 0.1 0 value.temperature false false 39 EVLBT25 Externer Vorlauf (BT25) °C int16be 1 0.1 0 value.temperature false false 72 ZHBT63 Zusatzheizung (BT63) °C int16be 1 0.1 0 value.temperature false false 88 RLBT71 Rücklauf (BT71) °C int16be 1 0.1 0 value.temperature false false 160 ZK Zusätzliche Kühlung int16be 1 1 0 value.temperature false false 690 ZH Zusatzheizung mit Vorrang zulassen int16be 1 1 0 value.temperature false false 1017 BVLK1 Berechneter Vorlauf Klimatisierungssystem 1 °C int16be 1 0.1 0 value.temperature false false 1019 KSTATUS Kühlung Status int16be 1 1 0 value.temperature false false 1475 RLBT3 Rücklauf (EB101-BT3) °C int16be 1 0.1 0 value.temperature false false 1478 VLBT12 Vorlauf (EB101-BT12) °C int16be 1 0.1 0 value.temperature false false 1567 BKVL1 Berechneter Kühlungsvorlauf Klimatisierungssystem 1 °C int16be 1 0.1 0 value.temperature false false 1689 BWBT7 Brauchwasserfühler für die Anzeige (EB100-BT7) °C int16be 1 0.1 0 value.temperature false false 1911 SG Betriebsmodus (SG Ready) int16be 1 1 0 value.temperature false false 2802 TEMRMU Temperatur: RMU S40 1 °C int16be 1 0.1 0 value.temperature false false 3132 LFRMU Luftfeuchtigkeit: RMU S40 1 %RH int16be 1 0.1 0 value.temperature false false
-
@ralfengelberth sagte in Modbus auslesen und Register anlegen.:
Ich habe hier die Adressen mal überarbeitet und bin diese am Testen.
Es ist sinnvoll mit einer einzigen Adresse zu beginnen.
@ralfengelberth sagte in Modbus auslesen und Register anlegen.:
ob ich Erfolg hatte.
der OFFSET kann 30000 oder 30001 sein, also das Testregister mal +/- 1 versuchen.
-
@homoran sagte in Modbus auslesen und Register anlegen.:
@ralfengelberth sagte in Modbus auslesen und Register anlegen.:
ob ich Erfolg hatte.
der OFFSET kann 30000 oder 30001 sein, also das Testregister mal +/- 1 versuchen.
Wenn ich den Offset z.B. 3000 stelle wird mir auch die Temperatur mit 3000 addiert.
Mit Offset 0 werden die Werte richtig angezeigt.
Warum sollte ich auf OFFSET 3000 stellen?
Gem. GitHub ist doch x * Factor + Offset -
@ralfengelberth sagte in Modbus auslesen und Register anlegen.:
Wenn ich den Offset z.B. 3000 stelle wird mir auch die Temperatur mit 3000 addiert.
nicht der Offset!
Ich meine den internen Offset der Alias-Verwaltung, beim Client.
da kann zu dem Register
1
29999, 30000 oder 30001 hinzuaddiert werden