Neue Versionen und Support zum Modbus-Modul

Begonnen von StefanStrobel, 20 August 2017, 12:11:08

Vorheriges Thema - Nächstes Thema

StefanStrobel

Hallo Wolfgang,

Ich würde mich auf das Device mit id 3 konzentrieren, da es die meisten Timeouts hat.
Probier doch mal folgendes aus:

- eine Fhem-Komfiguration, in der nur dieses Gerät abgefragt wird und nichts anderes. Sollte klären, ob es damit zusammen hängt
- ein eigener Bus für id 3, an dem keine anderen Geräte hängen.
- noch höhere Delays z.B, 3 Sekunden - könnte ausschließen, dass es überhaupt am Timing hängt.

Gruss
   Stefan

wthiess

Hallo Stefan!

Ich bin wieder in 2 Wochen vor Ort. Dann werde ich an der Hardware einiges testen. Hab schon einen neuen Stik bekommen. Danke vorerst.

lg
Wolfgang

Raspberry Pi 3; 8xRelais; Aptodec Nano V3.0 Pro; FS1000a; RF-5V; Hama TS33C; 3x Brennerstuhl FunkSteckdosen; 9x Dooya funk Rollo; KWL Systemair VR400; Thermokon Modbusthermostat; diverse China Modbus Thermostate; 1-wire Bus; Telegram; QuickFhem; FhemNative; Firmata; Alexa ......

SandroK

Zitat von: StefanStrobel am 08 Februar 2019, 20:04:34
Hallo Sandro,

die Adressen und die Bedeutung der Bits in Registern ist immer geräteabhängig.
Was meinst Du mit "kommt nichts". Kommt ein Fehler / ein Timeout oder ein Wert 0 und Du erwartest eine 1?
Wenn Du die Bits auch über ein holding register abfragen kannst, dann kannst Du ja auch im Register-Wert per Expression und eine Und-Verknüpfung das richtige Bit herausholen. Ich bezweifle aber, dass die Register-Adresse dann der Adresse des Coils entspricht. Vermutlich werden dann immer 16 Coils in ein Register gepackt.
Das müsste aber im Handbuch des Geräts stehen.

Gruss
   Stefan

Mit "es kommt nicht" meine ich das halt eine 0 zurückkommt. Ansonsten ist das Log fehlerfrei.
Die Variante mit Expression habe ich probiert, das funktioniert schon mal sehr gut, wie müsste ich aber das dann machen, ich kann ja nur ein
Holding-Register bsw. obj-h1200-reading anlegen, aus dem ich dann "mein" Bit heraus Extrahiere. Geht das dann nur über den Weg eines eigenen Userreading

Grüße Sandro

wthiess

#243
Hallo Stefan!

Habe nach einem Update kaum Fehler. Werde noch die Stränge aufteilen. Außerdem werde ich in den nächsten Wochen meine Verkabelung auf besseren Stand bringen. Aber seid neuesten habe ich im Log folgenden Fehler:
2019.02.19 21:02:43 1: PERL WARNING: Use of uninitialized value in subtraction (-) at ./FHEM/98_Modbus.pm line 3224.
2019.02.19 21:02:43 1: PERL WARNING: Use of uninitialized value in subtraction (-) at ./FHEM/98_Modbus.pm line 3225.
2019.02.19 21:02:43 1: PERL WARNING: Use of uninitialized value in subtraction (-) at ./FHEM/98_Modbus.pm line 3226.
2019.02.19 21:02:43 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/98_Modbus.pm line 3227.

Hat das was zu bedeuten?

lg
Wolfgang

Haber gerade neue Versionen eingespielt aber keine Änderung. 19.02.2019 21:18
Raspberry Pi 3; 8xRelais; Aptodec Nano V3.0 Pro; FS1000a; RF-5V; Hama TS33C; 3x Brennerstuhl FunkSteckdosen; 9x Dooya funk Rollo; KWL Systemair VR400; Thermokon Modbusthermostat; diverse China Modbus Thermostate; 1-wire Bus; Telegram; QuickFhem; FhemNative; Firmata; Alexa ......

StefanStrobel

Hallo,

Ja, das ist ein bekannter Bug und das Update ist seit ein paar Stunden eingecheckt :-)

Gruß
    Stefan

StefanStrobel

Hallo Sandro,

Die Expression würdest Du per obj-h1200-expr einbinden.
Oder meintest Du etwas anderes?

Gruß
    Stefan

ahermann86

Zitat von: StefanStrobel am 29 Januar 2019, 18:08:40
Hallo,

anbei eine neue Version zum Testen.
Man kann jetzt auch dev-x-defSet, dev-x-defHint sowie
dev-type-[A-Za-z0-9_]+-hint  und dev-type-[A-Za-z0-9_]+-set verwenden

Wenn keine Beschwerden kommen, würde ich es demnächst einchecken :-)

Gruss
   Stefan

Hallo Stefan,

danke für die Erweiterung. Ich habe Sie getestet und sie funktioniert ohne Probleme.

Gruß
Axel

Tom_S

hallo,

ich weis nicht ob es ein Denkfehler ist oder ob es so nicht funktioniert.
Ich habe ein Gateway für SDM630 Zähler auf TCP. Daran kann man zwei Zähler anschließen. Bislang hatte ich nur einen Zähler dran. Das hat gut funktioniert.
Die Definition ist:
defmod SDM630 ModbusAttr 1 180 <IP>:502 TCP
oder auch
defmod SDM630 ModbusSDM630M 1 180 <IP>:502 TCP
Der Zähler hat die Modbus Adresse 1. Das funktioniert.
Wie bekomme ich nun den zweiten Zähler zum laufen. Ich habe ihn parallel angeschlossen und die Adresse 2 gegeben
ich dachte jetzt vielleicht so:
defmod SDM630W ModbusSDM630M 2 180 <IP>:502 TCP
aber das geht leider nicht. Ich bekomme die Werte von ersten Zähler angezeigt.
Ein Verdrahtungsproblem schließe ich aus. Beim Gateway war ein Testprogramm für Windows dabei. Damit bekomme ich die richtigen Werte angezeigt.
Habe ich einen Denkfehler, oder sollte es so gehen?

LG Tom
RaspberryPI2 + pilight, 3x AVR-NetIO, LW12, LW12HX, LW12FC; MAX-Lan, ESP8266, Arduino, H801, Neopixel, Solaredge, Modbus

StefanStrobel

Hallo Tom,

Eigentlich sollte es so gehen.
Kannst Du mal den Request, den das Testprogramm an Dein Gateway sendet, mitsniffen?
Dann können wir das mit dem Request von Fhem vergleichen (bei Verbose 5 wird der gesendete Request protokolliert).

Gruß
   Stefan

Tom_S

RaspberryPI2 + pilight, 3x AVR-NetIO, LW12, LW12HX, LW12FC; MAX-Lan, ESP8266, Arduino, H801, Neopixel, Solaredge, Modbus

Tom_S

So habe das Tool geöffnet, beide Zähler gelesen und wieder geschlossen. Das Ergebnis habe ich mal angehängt.
Es wird irgenwie immer nur Unit Identifier: 1 gelesen.
Es werden 212 16 bit Register gelesen. Ich kann nicht erkennen was Zähler eins und was Zähler zwei ist.

LG Tom
RaspberryPI2 + pilight, 3x AVR-NetIO, LW12, LW12HX, LW12FC; MAX-Lan, ESP8266, Arduino, H801, Neopixel, Solaredge, Modbus

elektro_rainer

Auch wenn's banal klingt,.... hast du die Modbus Adresse 2 auch bei dem Modbus Teilnehmer richtig eingetragen?

Tom_S

Also am Windows-Tool kann man nichts einstellen. Die Zähler stehen auf 1 und 2. Wenn ich einen auf 3 oder etwas anderes stelle, wird er nicht gefunden. Du meinst doch die Einstellung am Zähler?
Ich habe langsam eine andere Vermutung.

LG Tom
RaspberryPI2 + pilight, 3x AVR-NetIO, LW12, LW12HX, LW12FC; MAX-Lan, ESP8266, Arduino, H801, Neopixel, Solaredge, Modbus

StefanStrobel

Hallo Tom,

Verstehe ich das richtig, dass Du das pcap aufgezeichnet hast, während Du beide Zähler abgefragt hast?
Ich sehe da auch nur Unit identifier 1 im pcap.

Könnte es sein, dass das Gateway den unit identifier ignoriert und satt dessen die Register-Adressen einen Offset haben?

Seltsam ...

Gruß
    Stefan

Wzut

@Tom_S , hast du bitte mal ne Bezeichnung/Modell von dem Gateway ?
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher