Neue Versionen und Support zum Modbus-Modul

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

Vorheriges Thema - Nächstes Thema

andy1986

Hallo Zusammen,

ich will meine Daten der THZ über Modbus bereitstellen, scheitere aber schon daran den Slave in FHEM zu konfigurieren.
Bei mir kommt nach dem Befehl:
define Data4PLC ModbusAttr 5 60 192.168.178.128:502 TCP

immer der Status disconnected.
Was mache ich falsch?

mba

Hallo Stefan,

ich versuche gerade einen 32bit Wert über 2 Register zu lesen und zu schreiben, scheitere aber am schreiben.
Laut Perl Doku wäre der unpack Code N da alles als Big Endian vorliegt.
Ich habe einen Typ erstellt und den Registern zugewiesen.

attr mbSlave01 dev-type-CountInWh-unpack N
attr mbSlave01 dev-type-CountInWh-len 2

attr mbSlave01 obj-h191-reading S0Counter01
attr mbSlave01 obj-h191-showGet 1
attr mbSlave01 obj-h191-set 1
attr mbSlave01 obj-h191-type CountInWh


Das lesen funktioniert auch korrekt, aber wenn ich einen Wert setzen möchte, bekomme ich folgende Fehlermeldung.

mbSlave01: ParseObj unpack of 0000 with N for S0Counter01 resulted in undefined value


muss da noch ein pack code rein oder passiert das automatisch?

Grüße
Marco
Tinkerboard für FHEM, Modbus RTU via RS485 mit Arduino Slaves, ZWAVE mit Razberry Modul

StefanStrobel

Hallo andy1986,

wenn es mal nicht klappt, solltest Du als erstes das Attribut verbose auf 5 setzen, dann den fraglichen Befehl ausführen und ins Fhem-Log schauen.
Dort findest Du vermutlich eine Meldung mit "permission denied". Port 502 kann man nur mit root-Rechten öffnen. Ein Trick, wie man es auch ohne root-Rechte hinbekommt, besteht darin, iptables zu nutzen und Port 502 auf z.B. Port 1502 umzuleiten.
@predi-ger-many: Du hattest Doch eine konkrete Anleitung dafür. Könntest Du die hier posten?

Falls es daran nicht liegt, einfach einen großen Auszug aus dem Log hier posten, dann können andere helfen.

Gruss
   Stefan

StefanStrobel

#153
Hallo Marco,

Irgendwie sind bei Dir Master- und Slave-Definitionen durcheinander geraten.
Da Dein Device mbSlave01 heißt, vermute ich, dass es ein Slave sein soll.
Der soll dann ja Requests von einem Master empfangen und entweder Daten von Fhem an den Master liefern oder aber Werte, die der Master schreiben möchte, in eigene Readings schreiben.

showGet ist aber ein Attribut, das nur bei einem Master funktioniert.
Ebenso set.
Bei einem Slave muss man explizit erlauben, dass ein Master Werte schreiben darf. Dafür ist das Attribut allowWrite gedacht.

Unabhängig davon habe ich aber auch noch Fehler im Modul gefunden und behoben.
Anbei eine neue Version.

Gruss
   Stefan


mba

Hallo Stefan,

was da jetzt durcheinander geraten ist verstehe ich nicht.
FHEM ist der Master und meine zu steuernden Geräte am Bus sind Slaves.
Per FHEM get kann ich holdingregs von den Slaves abholen und in ein Reading packen.
Per FHEM set kann ich werte zu den Slaves schicken.
Beim get funktioniert das auch wenn der Wert über mehrere Register verteilt ist, in Abhängigkeit vom -unpack Attribut.
Beim set funktioniert das in meinem Fall nicht, und das hat, glaube ich, nichts mit Master/Slave Problematik zu tun.
Aus der Doku meine ich verstanden zu haben das durchs -unpack attribut entsprechend ein pack oder unpack stattfindet, je nach Richtung. Was ja sinn macht, wenn der Slave mir ein 32bit Wert über 2 Regs liefert und ich den zurücksenden möchte muss das ja wieder mit dem gleichen Verfahren in beide Regs geschrieben werden.

Vielleicht sehe ich aber den Wald vor lauter Bäumen nicht
Grüße Marco

p.s. dein letzter upload hat 0 bytes

Eine Definition aus meiner Testumgebung

Internals:
   CFGFN     
   CHANGED   
   DEF        1 0.8
   INTERVAL   0.8
   IODev      RS485
   MODBUSID   1
   MODE       master
   MODULEVERSION Modbus 4.0.12 - 13.10.2018
   NAME       mbSlave01
   NOTIFYDEV  global
   NR         1289
   NTFY_ORDER 50-mbSlave01
   PROTOCOL   RTU
   STATE      Laufzeit: 000:00:52
   TRIGGERTIME 1541257917.71435
   TRIGGERTIME_FMT 2018-11-03 16:11:57
   TYPE       ModbusAttr
   FRAME:
   READ:
   READINGS:
     2018-11-03 15:17:21   Config-ResetKnownConfig 999
     2018-11-03 15:25:30   Config-WatchdogCountdown 10
     2018-11-03 15:29:00   Logic-ExternalWatchdog 10
     2018-11-03 15:44:15   ro-Counter01    0
     2018-11-03 15:44:15   ro-Counter02    0
     2018-11-03 15:44:16   ro-Counter03    0
     2018-11-03 15:44:16   ro-Counter04    0
     2018-11-03 15:44:19   ro-Counter05    0
     2018-11-03 15:44:19   ro-Counter06    0
     2018-11-03 15:44:18   ro-Counter07    0
     2018-11-03 15:44:18   ro-Counter08    0
     2018-11-03 15:44:18   ro-Counter09    0
     2018-11-03 11:44:12   ro-DHT1dewPoint 0.0
     2018-11-03 11:44:11   ro-DHT1humidity 0
     2018-11-03 11:44:11   ro-DHT1temperature 0.0
     2018-11-03 11:44:09   ro-DoorOpener   0
     2018-11-03 16:11:55   ro-SensorLight1 441
     2018-11-03 11:44:09   ro-SensorMotion1 0
     2018-11-03 11:44:10   ro-SensorSmoke1 0
     2018-11-03 15:17:31   ro-SlaveReset   0
     2018-11-03 16:11:16   ro-Uptime       000:00:52
     2018-11-03 16:11:53   ro-VoltageCurrent 10.9 V
     2018-11-03 16:11:02   ro-WatchdogCountdown 10
     2018-11-03 11:43:55   state           opened
   REMEMBER:
     lrecv      1541257916.61813
     lsend      1541257916.94964
   gotReadings:
     ro-Counter07 0
     ro-Counter08 0
     ro-Counter09 0
   lastRead:
     h117       1541257861.08895
     h126       1541257915.6328
     h127       1541257915.63563
     h129       1541257915.63733
     h130       1541257915.6389
     h131       1541257915.64043
     h132       1541257915.64197
     h133       1541257915.64351
     h134       1541257915.68476
     h135       1541257915.68753
     h136       1541257915.68916
     h137       1541257915.69149
     h138       1541257915.69342
     h140       1541257915.69525
     h142       1541257916.6001
     h144       1541257916.602
     h146       1541257916.60382
     h148       1541257915.61529
     h150       1541257916.62142
     h152       1541257916.62331
     h154       1541257916.62512
     h159       1541254641.93419
Attributes:
   IODev      RS485
   dev-h-combine 8
   dev-timing-commDelay 0.001
   dev-timing-sendDelay 0.001
   dev-timing-timeout 0.5
   dev-type-CountInWh-len 2
   dev-type-CountInWh-unpack N
   dev-type-ProgVersion-expr my $v=int($val / 1000);my $s=int(($val - $v * 1000)/100);my $r=int($val %100); return $v.".".$s.".".$r;
   dev-type-TempInK-expr if ($val != 0 && $val != 27315) {$val / 100 - 273.15;}
   dev-type-TempInK-format %.1f
   dev-type-UpTime-expr my $m = sprintf('%02d',(int($val /60 % 60)));my $h = sprintf('%02d',(int($val /60 /60) % 24));my $d = sprintf('%03d',(int($val /60 /60 /24)));return $d .":".$h.":".$m;
   dev-type-UpTime-len 2
   dev-type-UpTime-unpack N
   dev-type-Voltage-expr $val/10
   dev-type-Voltage-format %.1f V
   disable    0
   event-min-interval ro-Counter..:1800
   event-on-change-reading .*
   group      ComSlaves
   nonPrioritizedGet 1
   nonPrioritizedSet 1
   obj-h0-reading Statistic-Ports-DigitalIn
   obj-h0-showGet 1
   obj-h1-reading State-S0Counter01
   obj-h1-showGet 1
   obj-h10-reading State-SensorMotion1
   obj-h10-showGet 1
   obj-h11-reading State-SensorSmoke1
   obj-h11-showGet 1
   obj-h111-reading Logic-DHT1Temperature
   obj-h111-set 1
   obj-h111-showGet 1
   obj-h112-reading Logic-DHT1Humidity
   obj-h112-set 1
   obj-h112-showGet 1
   obj-h113-reading Logic-DHT1DewPoint
   obj-h113-set 1
   obj-h113-showGet 1
   obj-h117-hint 0,5,10
   obj-h117-reading Logic-ExternalWatchdog
   obj-h117-set 1
   obj-h117-showGet 1
   obj-h126-poll 1
   obj-h126-reading ro-VoltageCurrent
   obj-h126-showGet 1
   obj-h126-type Voltage
   obj-h127-poll 1
   obj-h127-reading ro-Uptime
   obj-h127-showGet 1
   obj-h127-type UpTime
   obj-h128-poll 1
   obj-h129-poll 1
   obj-h129-reading ro-SlaveReset
   obj-h129-showGet 1
   obj-h130-poll 1
   obj-h130-reading ro-DoorOpener
   obj-h130-showGet 1
   obj-h131-poll 1
   obj-h131-reading ro-WatchdogCountdown
   obj-h131-showGet 1
   obj-h132-poll 1
   obj-h132-reading ro-SensorMotion1
   obj-h132-showGet 1
   obj-h133-poll 1
   obj-h133-reading ro-SensorSmoke1
   obj-h133-showGet 1
   obj-h134-poll 1
   obj-h134-reading ro-SensorLight1
   obj-h134-showGet 1
   obj-h135-poll 1
   obj-h135-reading ro-DHT1temperature
   obj-h135-showGet 1
   obj-h135-type TempInK
   obj-h136-poll 1
   obj-h136-reading ro-DHT1humidity
   obj-h136-showGet 1
   obj-h137-poll 1
   obj-h137-reading ro-DHT1dewPoint
   obj-h137-showGet 1
   obj-h137-type TempInK
   obj-h138-poll 1
   obj-h138-reading ro-Counter01
   obj-h138-showGet 1
   obj-h138-type CountInWh
   obj-h140-poll 1
   obj-h140-reading ro-Counter02
   obj-h140-showGet 1
   obj-h140-type CountInWh
   obj-h142-poll 1
   obj-h142-reading ro-Counter03
   obj-h142-showGet 1
   obj-h142-type CountInWh
   obj-h144-poll 1
   obj-h144-reading ro-Counter04
   obj-h144-showGet 1
   obj-h144-type CountInWh
   obj-h146-poll 1
   obj-h146-reading ro-Counter05
   obj-h146-showGet 1
   obj-h146-type CountInWh
   obj-h148-poll 1
   obj-h148-reading ro-Counter06
   obj-h148-showGet 1
   obj-h148-type CountInWh
   obj-h150-poll 1
   obj-h150-reading ro-Counter07
   obj-h150-showGet 1
   obj-h150-type CountInWh
   obj-h152-poll 1
   obj-h152-reading ro-Counter08
   obj-h152-showGet 1
   obj-h152-type CountInWh
   obj-h154-poll 1
   obj-h154-reading ro-Counter09
   obj-h154-showGet 1
   obj-h154-type CountInWh
   obj-h158-reading Config-VoltageFactor
   obj-h158-set 1
   obj-h158-showGet 1
   obj-h159-hint 0,1,999
   obj-h159-reading Config-ResetKnownConfig
   obj-h159-set 1
   obj-h159-showGet 1
   obj-h160-reading Config-DigitalInputDebounceInterval
   obj-h160-set 1
   obj-h160-showGet 1
   obj-h161-reading Config-DigitalInputAnalogLevel
   obj-h161-set 1
   obj-h161-showGet 1
   obj-h167-reading Config-DHT1PollInterval
   obj-h167-set 1
   obj-h167-showGet 1
   obj-h169-reading Config-PowerOutlet1AutoOff
   obj-h169-set 1
   obj-h169-showGet 1
   obj-h17-reading State-SensorVoltage1
   obj-h17-showGet 1
   obj-h170-reading Config-PowerOutlet2AutoOff
   obj-h170-set 1
   obj-h170-showGet 1
   obj-h171-reading Config-AnalogInputPollInterval
   obj-h171-set 1
   obj-h171-showGet 1
   obj-h172-reading Config-NightLight1
   obj-h172-set 1
   obj-h172-showGet 1
   obj-h173-reading Config-StateLED1
   obj-h173-set 1
   obj-h173-showGet 1
   obj-h176-hint 1,10,75,100,1000,2000
   obj-h176-reading Config-S0CounterDivisor01
   obj-h176-set 1
   obj-h176-showGet 1
   obj-h177-hint 1,10,75,100,1000,2000
   obj-h177-reading Config-S0CounterDivisor02
   obj-h177-set 1
   obj-h177-showGet 1
   obj-h178-hint 1,10,75,100,1000,2000
   obj-h178-reading Config-S0CounterDivisor03
   obj-h178-set 1
   obj-h178-showGet 1
   obj-h179-hint 1,10,75,100,1000,2000
   obj-h179-reading Config-S0CounterDivisor04
   obj-h179-set 1
   obj-h179-showGet 1
   obj-h18-reading State-SensorLight1
   obj-h18-showGet 1
   obj-h180-hint 1,10,75,100,1000,2000
   obj-h180-reading Config-S0CounterDivisor05
   obj-h180-set 1
   obj-h180-showGet 1
   obj-h181-hint 1,10,75,100,1000,2000
   obj-h181-reading Config-S0CounterDivisor06
   obj-h181-set 1
   obj-h181-showGet 1
   obj-h182-hint 1,10,75,100,1000,2000
   obj-h182-reading Config-S0CounterDivisor07
   obj-h182-set 1
   obj-h182-showGet 1
   obj-h183-hint 1,10,75,100,1000,2000
   obj-h183-reading Config-S0CounterDivisor08
   obj-h183-set 1
   obj-h183-showGet 1
   obj-h184-hint 1,10,75,100,1000,2000
   obj-h184-reading Config-S0CounterDivisor09
   obj-h184-set 1
   obj-h184-showGet 1
   obj-h185-hint 1,10,75,100,1000,2000
   obj-h185-reading Config-S0CounterDivisor10
   obj-h185-set 1
   obj-h185-showGet 1
   obj-h19-reading State-SensorFlame1
   obj-h19-showGet 1
   obj-h191-reading S0Counter01
   obj-h191-set 1
   obj-h191-showGet 1
   obj-h191-type CountInWh
   obj-h193-reading S0Counter02
   obj-h193-set 1
   obj-h193-showGet 1
   obj-h193-type CountInWh
   obj-h195-reading S0Counter03
   obj-h195-set 1
   obj-h195-showGet 1
   obj-h195-type CountInWh
   obj-h197-reading S0Counter04
   obj-h197-set 1
   obj-h197-showGet 1
   obj-h197-type CountInWh
   obj-h199-reading S0Counter05
   obj-h199-set 1
   obj-h199-showGet 1
   obj-h199-type CountInWh
   obj-h2-reading State-S0Counter02
   obj-h2-showGet 1
   obj-h20-reading Statistic-Ports-DigitalOut
   obj-h20-showGet 1
   obj-h201-reading S0Counter06
   obj-h201-set 1
   obj-h201-showGet 1
   obj-h201-type CountInWh
   obj-h203-reading S0Counter07
   obj-h203-set 1
   obj-h203-showGet 1
   obj-h203-type CountInWh
   obj-h205-reading S0Counter08
   obj-h205-set 1
   obj-h205-showGet 1
   obj-h205-type CountInWh
   obj-h207-reading S0Counter09
   obj-h207-set 1
   obj-h207-showGet 1
   obj-h207-type CountInWh
   obj-h209-reading S0Counter10
   obj-h209-set 1
   obj-h209-showGet 1
   obj-h209-type CountInWh
   obj-h21-reading State-DoorOpener
   obj-h21-set 1
   obj-h21-showGet 1
   obj-h22-reading State-WatchdogRelais
   obj-h22-set 1
   obj-h22-showGet 1
   obj-h3-reading State-S0Counter03
   obj-h3-showGet 1
   obj-h38-reading State-StateLED1
   obj-h38-set 1
   obj-h38-showGet 1
   obj-h39-reading State-NightLight1
   obj-h39-set 1
   obj-h39-showGet 1
   obj-h4-reading State-S0Counter04
   obj-h4-showGet 1
   obj-h40-reading Statistic-Ports-AnalogIn
   obj-h40-showGet 1
   obj-h41-reading Counter-S0Counter01
   obj-h41-showGet 1
   obj-h42-reading Counter-S0Counter02
   obj-h42-showGet 1
   obj-h43-reading Counter-S0Counter03
   obj-h43-showGet 1
   obj-h44-reading Counter-S0Counter04
   obj-h44-showGet 1
   obj-h45-reading Counter-S0Counter05
   obj-h45-showGet 1
   obj-h46-reading Counter-S0Counter06
   obj-h46-showGet 1
   obj-h47-reading Counter-S0Counter07
   obj-h47-showGet 1
   obj-h48-reading Counter-S0Counter08
   obj-h48-showGet 1
   obj-h49-reading Counter-S0Counter09
   obj-h49-showGet 1
   obj-h5-reading State-S0Counter05
   obj-h5-showGet 1
   obj-h50-reading Counter-SensorSmoke1
   obj-h50-showGet 1
   obj-h58-reading Counter-WatchdogRelais
   obj-h58-showGet 1
   obj-h59-reading Counter-DoorOpener
   obj-h59-showGet 1
   obj-h6-reading State-S0Counter06
   obj-h6-showGet 1
   obj-h60-reading Statistic-Ports-AnalogOut
   obj-h60-showGet 1
   obj-h61-reading Statistic-UptimeHighWord
   obj-h61-set 1
   obj-h61-showGet 1
   obj-h62-reading Statistic-UptimeLowWord
   obj-h62-set 1
   obj-h62-showGet 1
   obj-h63-reading Statistic-LooptimeCurrent
   obj-h63-showGet 1
   obj-h64-hint 0
   obj-h64-reading Statistic-LooptimeMax
   obj-h64-set 1
   obj-h64-showGet 1
   obj-h65-reading Statistic-VoltageCurrent
   obj-h65-showGet 1
   obj-h65-type Voltage
   obj-h66-hint 0
   obj-h66-reading Statistic-VoltageMax
   obj-h66-set 1
   obj-h66-showGet 1
   obj-h66-type Voltage
   obj-h67-hint 999
   obj-h67-reading Statistic-VoltageMin
   obj-h67-set 1
   obj-h67-showGet 1
   obj-h67-type Voltage
   obj-h68-reading Statistic-ProgramVersion
   obj-h68-showGet 1
   obj-h68-type ProgVersion
   obj-h69-hint 0
   obj-h69-reading Statistic-DHT1-PollOK
   obj-h69-set 1
   obj-h69-showGet 1
   obj-h7-reading State-S0Counter07
   obj-h7-showGet 1
   obj-h70-hint 0
   obj-h70-reading Statistic-DHT1-PollError
   obj-h70-set 1
   obj-h70-showGet 1
   obj-h8-reading State-S0Counter08
   obj-h8-showGet 1
   obj-h9-reading State-S0Counter09
   obj-h9-showGet 1
   obj-h97-reading Percent-SensorVoltage1
   obj-h97-showGet 1
   obj-h98-reading Percent-SensorLight1
   obj-h98-showGet 1
   obj-h99-reading Percent-SensorFlame1
   obj-h99-showGet 1
   room       Sys_Modbus
   stateFormat Laufzeit: ro-Uptime
   timestamp-on-change-reading .*
   verbose    3


Tinkerboard für FHEM, Modbus RTU via RS485 mit Arduino Slaves, ZWAVE mit Razberry Modul

StefanStrobel

Hallo Marco,

danke für den Hinweis bezügl. Upload.
Ich habe es gerade nochmal hochgeladen.

Mit Deiner Erläuterung habe ich auch verstanden, was Du machen möchtest. Ich hatte fälschlicherweise vermutet, dass Du Fhem als Modbus-Slave testen möchtest.

Bitte probier das ganze doch nochmal mit der aktuellen Version. Falls das Problem dort immer noch auftritt, wäre ein längerer Log-Auszug mit Verbose 5 sehr hilfreich.

Gruss / Thanx
   Stefan


lechez

Hallo,

habe das neue Modul als Slave konfiguriert. Leider funktioniert es nicht mit meine WP. Ich möchte der WP Werte anstelle eines Modbus Stromzählers zur Verfügung stellen.
Vielleicht erkennt einer warum es nicht geht.
Anbei mal das Log aufgenommen mit Verbose 5

Gruß


mba

Hallo Stefan,

auch mit der neuen Version kann ich kein set machen wenn der Wert über 2 Register geht.

2018.11.04 20:41:45.811 5: mbSlave01: ParseObj called with data 0000, type h, adr 191, valuesLen 2, op write
2018.11.04 20:41:45.814 5: mbSlave01: ParseObj ObjInfo for h191: reading=S0Counter01, unpack=N, expr=, format=, map=
2018.11.04 20:41:45.814 3: mbSlave01: ParseObj unpack of 0000 with N for S0Counter01 resulted in undefined value


Im Anhang das Verbose5 Log mit einem get und einem set
Mir ist aufgefallen dass das starten von FHEM sehr lange dauerte.
Bei jedem Slave sind 4 sec Pause, ist mir vorher so nicht aufgefallen, finde ich aber auch nicht so tragisch.

Grüße
Marco
Tinkerboard für FHEM, Modbus RTU via RS485 mit Arduino Slaves, ZWAVE mit Razberry Modul

mba

ich habe das ModbusModul nochmal unter Windows getestet, das alte funktioniert, das neue nicht
Tinkerboard für FHEM, Modbus RTU via RS485 mit Arduino Slaves, ZWAVE mit Razberry Modul

StefanStrobel

Hallo Lechez,

Das erste was mir im Log auffällt, ist dass scheinbar keine sinnvollen Daten empfangen werden.
Es scheitert also schon an der Übertragung. Eventuell ist der Bus nicht richtig terminiert oder die seriellen Parameter stimmen nicht.

Gruß
    Stefan

StefanStrobel

Hallo Marco,

Du versuchst zwei Register mit function code 6 zu schreiben.
Dieser function code ist aber nur für ein Register gedacht und Du solltest mit

attr myDevice dev-h-write 16

dafür sorgen, dass function code 16 verwendet wird. Der ist für mehrere Register gedacht.

Das Modul fängt das bisher nicht ab und ich werde das in der nächsten Version einbauen, dass in solchen Fällen automatisch 16 verwendet wird oder zumindest eine aussagekräftige Meldung kommt.

Es überrascht mich, dass Dein Gerät den eigentlich illegalen Request nicht mit einer Fehler-Nachricht beantwortet. Statt dessen wird scheinbar ein Register (das mit 0) beschrieben und in der Antwort zurückgeliefert.
Beim Versuch den 16-Bit-Wert dann mit N wieder zu entpacken wird dann undef erzeugt.

Die Sache mit der Verzögerung und Windows werde ich mir noch näher anschauen.

Gruß und vielen Dank fürs Testen
    Stefan

mba

Hallo Stefan,

da hätte ich auch selber drauf kommen können das dafür FC16 anstatt FC6 genutzt werden sollte.
Mit dev-h-write 16 funktioniert das wie erwartet, sowohl Einzelregister als auch mehrere.
Danke für die Lösung.

Also ich nutze den Code für die Slaves falls du da mal reinschauen möchtest.
https://github.com/smarmengol/Modbus-Master-Slave-for-Arduino/blob/master/ModbusRtu.h

Ist jetzt die 3. Library die ich dafür nutzte und bisher die schnellste und stabilste.
Ich schaue mir das Fehlerhändling mal an, vielleicht raffe ich das und kann das anpassen.


Grüße
Marco
Tinkerboard für FHEM, Modbus RTU via RS485 mit Arduino Slaves, ZWAVE mit Razberry Modul

lechez

Hallo Stefan,

ich galub es auch werde mal den Bus kontrollieren.
Mit einem Testtool von PC zum Pi hat es über rs485 und einem anderen Kabel  funktioniert. Nehme jetzt mal das andere Kabel.
Danke für die schnelle antwort.

Gruß
Andre

Zitat von: StefanStrobel am 04 November 2018, 22:47:51
Hallo Lechez,

Das erste was mir im Log auffällt, ist dass scheinbar keine sinnvollen Daten empfangen werden.
Es scheitert also schon an der Übertragung. Eventuell ist der Bus nicht richtig terminiert oder die seriellen Parameter stimmen nicht.

Gruß
    Stefan

predi-ger-many

Zitat von: StefanStrobel am 01 November 2018, 21:38:29
Hallo,

Im Log sieht man, dass ein function code 3 Request für id 51, holding register 0 mit Länge 2 eingeht.
Da für Regster 0 kein Objekt definiert ist, nur für Register 1, erzeugt das Modul eine Error-Response mit Fehlercode 2. (PDU 8302).

Gruß
    Stefan

Danke. Jetzt funktioniert  mal der Connect

predi-ger-many

Zitat von: StefanStrobel am 03 November 2018, 11:16:22
Hallo andy1986,

wenn es mal nicht klappt, solltest Du als erstes das Attribut verbose auf 5 setzen, dann den fraglichen Befehl ausführen und ins Fhem-Log schauen.
Dort findest Du vermutlich eine Meldung mit "permission denied". Port 502 kann man nur mit root-Rechten öffnen. Ein Trick, wie man es auch ohne root-Rechte hinbekommt, besteht darin, iptables zu nutzen und Port 502 auf z.B. Port 1502 umzuleiten.
@predi-ger-many: Du hattest Doch eine konkrete Anleitung dafür. Könntest Du die hier posten?

Falls es daran nicht liegt, einfach einen großen Auszug aus dem Log hier posten, dann können andere helfen.

Gruss
   Stefan

Port 502 ohne root-Rechte per iptables

Ich gehe davon aus, dass DHCPCD verwendet wird. Hier 502 nach 1502 per iptables. Getestet auf PI mit Stretch

iptables Regel anlegen
sudo iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 502 -j REDIRECT --to-port 1502

iptables File anlegen
sudo touch /etc/iptables-rules.v4
sudo chmod 666 /etc/iptables-rules.v4

iptables Regel speichern
sudo iptables-save > /etc/iptables-rules.v4

/etc/dhcpcd.enter-hook anlegen
sudo touch /etc/dhcpcd.enter-hook
sudo chmod 755 /etc/dhcpcd.enter-hook

/etc/dhcpcd.enter-hook anpassen
iptables-restore < /etc/iptables-rules.v4

Reboot
sudo reboot

Check nach Reboot
sudo iptables -t nat -L -n -v