[Modul] Alle ModBus Zähler von B+G E-Tech

Moin,
ich hätte einmal eine Frage:

Hat sich an der Struktur etwas geändert.
Ich bekomme Fehler vom TimerPool Die Daten kommen aber rein.

Instanz --------> ModusBus Gateway (Modbus RTU über TCP) ------------>Client Socket (RS485 to LAN)

Leseintervall alle 30 000ms

Andreas

Hallo,
ich habe einen neuen SDM630M-CT V2

Die Benennung der Variablen sind vertauscht aufgenommene kumulierte Wirkleistung und abgegebene kumulierte Wirkleistung

Schöne Feiertage

Andreas

Hallo Michael,

ich würde mir gern den B+G Zähler WS100-1943 zulegen, könntest Du diesen eventuell auch implementieren?

Vielen Dank.

LG
Marc

1 „Gefällt mir“

Hallo Michael,
danke für das tolle Modul!
Ich habe einen Zähler DRT 428M. Kann es sein, dass die Wirkleistungen der Phasen und die kumulierte Wirkleistung um den Faktor 1000 zu klein sind? Es zeigt Wirkleistungen von 0,1 W an aber ich denke mal, dass die Wärmepumpe 100W und bei 1,7W eher 1,7kW richtig wären.
Und der Leistungsfaktor L3 wird nicht mit abgefragt. Wenn ich die Variable aktiviere, wird der Wert nicht eingetragen und es kommt in den Meldungen eine Fehlermeldung „Unknown ModBus Schreibfehler“.

Hallo zusammen,

da Michael im Moment keine Zeit zu haben scheint, bin ich auf etwas Hilfe von Euch angewiesen.
Ich habe mit den B+G Zähler WS100-1943 mit modbus zugelegt. Da dieser leider nicht im Modul von Michael mit drin ist, ich aber zumindest den aktuellen Stromverbrauch sowie den bisherigen Gesamtstromverbrauch benötige, müsste ich das über das anlegen eines Modbus Device machen. Leider komme ich überhaupt nicht mit der Dokumentation des zugehörigen Modbus-Registers klar, zum einen, was ich im Modbus Device für eine Funktion von 01-04 auswählen muss und wie die zugehörige Adresse ermittelt wird ?
Vielleicht könnte mir da jemand von euch weiterhelfen. Die Dokumentation mit zugehörigem Modbus Register findet sich hier: https://stromzähler.eu/media/pdf/d6/91/23/WS100-19xx_DE.pdf

Danke.
LG Marc

Wenn die Beta von dem ONVIF Modul durch ist, schiebe ich das hier ein.

Glaube von den gibt es V1, V2 und V3. Welchen hast du?
Michael

1 „Gefällt mir“

Das ist der DRT428M-2. Die -2 steht für Modbus. Wenn du das meinst?

Ja genau. Gibt auch einen -3 oder -V3 glaube ich. Der hat imho noch mehr Register.
Michael

Hi,
Das gleiche Problem habe ich auch - kann man irgendwo die Zeitüberschreitung einstellen???

Besten Dank im Voraus und schönen Abend
HerbertF

Moin,

gibt es eine Möglichkeit Dein wunderbares Modul :heart_eyes: getriggert auszulesen. Also eine Null beim Ausleseintervall einzutragen und dann getriggert aufzurufen? Das fände ich top.
Weiterhin würde mich mal interessieren wie Du die 333ms Abstand ermittelt … hast. Ist dies „nur“ ein Wert für Modbus RS485 order auch für Modbus TCP???

Schönen Sonntag noch
Beste Grüße
HerbertF

Der PHP-Befehl steht in der Doku. Je nach Typ des Zählers ist der anders.
Kannst auch einfach rechtsklick auf die Instanz, Befehl testen benutzen oder bei der Aktion bzw. den Script die Aktion mit Ziel der Instanz hinzufügen.

Die 333ms beziehen sich nicht auf ModBus; das macht Symcon selbst, sondern auf die trägen DRS210C.
Die blockieren immer alles länger als nötig auf dem Bus, somit gab es immer Fehler wenn mehrere an einem IO hingen.
Michael

Supi - funktioniert!!!

Leider stehen in der Doku keine Einheiten.
Aktuell ist das Profil ~Watt.14490 voreingestellt. Passt es, wenn du den Variablen das Profil ~Power gibst?
Für neue Instanzen kann ich das Power-Profil vorgeben, aber du wirst das leider manuell umstellen müssen in den Variablen.

Ist ein Bug. Wird bei dir auch mit Update falsch sein; kannst du aber selbst beheben.
Folgendes Script in die Konsole kopieren und ausführen → Bei $id die ObjektID der DRT428M Instanz eintragen.

<?php

$id = 36988;
$Vars = json_decode(IPS_GetProperty($id,'Variables'),true);
foreach ($Vars as &$Var){
  if ($Var['Address']==74)
    $Var['Address'] = 58;
}
IPS_SetProperty($id, 'Variables', json_encode($Vars));
IPS_ApplyChanges($id);

Michael

Kann ich nach einem Blick in beide Handbücher (also vom alten SDM630 und dem SDM630M-CT V2) nicht bestätigen.
Danach sind die Register identisch. Oder hast du eine andere Instanz als den SDM630 benutzt?
Lösung: Variablen einfach umbenennen :slight_smile:
Michael

Die Doku ist echt dürftig…
Du kannst folgendes versuchen
image
Funktion kannst mit 03 und 04 testen.
Adresse ist in Symcon in Dezimal und in der Doku in Hex. Somit musst du einmal umrechnen 0100 in der Doku zu 265 in Symcon.
Einheit kann alles mit 32Bit sein, meistens ist Real.
Stimmt der Wert noch immer nicht; im Gateway einmal testen ob es mit dem Schalter besser wird.
image

Wenn du etwas funktionierendes hast, kann ich mit den Daten den Zähler in das Modul ausnehmen.
Michael

Version 3.50

ist als stable im Store online.

Michael

Version 3.51

ist im Store als Beta online.

Ein Fix für den Leistungsfaktor L3 der DRT428M Instanzen muss manuell ein PHP-Script erstellt und einmalig pro Instanz ausgeführt werden.

$id = 36988; // ObjektId der DRT428M Instanz
$Vars = json_decode(IPS_GetProperty($id,'Variables'),true);
foreach ($Vars as &$Var){
  if ($Var['Address']==74)
    $Var['Address'] = 58;
}
IPS_SetProperty($id, 'Variables', json_encode($Vars));
IPS_ApplyChanges($id);

Michael

Hallo Michael,

entschuldige meine verspätete Rückmeldung, komme erst jetzt dazu, mich wieder mal damit zu beschäftigen… Kannst Du mir kurz erläutern, wie das mit dem umrechnen gemeint ist, da komm’ ich nicht mit :sweat_smile:

Update: …hab es nun doch verstanden, war gar nicht so schwer :wink:

Danke
Marc

Hallo Michael,

hab’ jetzt ein wenig getestet und tatsächlich nach einigem Hin und Her auch was rausgefunden.
Mir würden die aktuelle Wirkleistung in W und die aufgenommene kumulierte Wirkleistung in kWh für meine Zwecke eigentlich reichen. Falls Du noch mehr Werte benötigst, um den Zähler in Deine Datenbank aufzunehmen, dann gib’ Bescheid und ich teste weiter :slightly_smiling_face:

Wirkleistung Adresse: 260 (Wert wird ohne Nachkommastelle ausgegeben)
kumulierte Wirkleistung Adresse: 270 (letzte beiden Stellen sind Nachkommastellen)

(bei beiden Integer (32Bit - vorzeichenbehaftet) als Einheit und Holding Registers auslesen (03) als Funktion, 32Bit/64Bit Werte vertauschen ist deaktiviert)

Falls ich mich irgendwie unklar ausgedrückt haben sollte… einfach nachfragen.

Vielen lieben Dank!
Marc

Hallo Michael,

hattest DU schon mal Zeit, es Dir evtl. anzuschauen?

Danke
Marc