Hallo Fhem-Gemeinde,
ich stehe irgendwie auf dem Schlauch...
ich habe mir einen Energiezähler SDM630 und einen DIGITUS DA-70157 ModbusRS485 USB Adapter besorgt und am Raspi angeschlossen.
Der Digitus scheint vernünftig eingebunden zu sein.
Die Leitung zwischen Zähler und Digitus ist abgeschirmt, GND über Schirm geführt und angeschlossen und je 120Ohm Abschlusswiderstand auf beiden Seiten eingelötet, wobei ich das bei 1m Leitung eigentlich Quatsch finde. Schaden wird es sicher nicht...
Den ModbusSlave habe ich dann definiert, wie ich es in einem Beispiel gefunden habe.
define ModbusRS485 Modbus /dev/ttyUSB0@9600
define SDM630 ModbusSDM630M 1 60
attr SDM630 userattr IODev
attr SDM630 IODev ModbusRS485
attr SDM630 room Stromzaehler
attr ModbusRS485 room Stromzaehler
Allerdings steht bei State nur ???.
Und wenn ich einen beliebigen Wert abrufe, kommen unerwartete Ergebnisse zurück, sofern ich die Fehlermeldung richtig interpretiere.
Hat jemand eine Idee?
Ich habe ein paar Screenshot angehängt...
Gruß Joerky
Moin
Das naechste mal schick doch lieber keine Screenshots, sondern ein list des entsprechenden devices! Das ganze dann noch in Codetags ( das "#" ueber den Smileys) und alles wird gut!
Meine erste Frage ist, hat denn Dein Zaehler auch die gleiche Baudrate, wie Du in fhem definiert hast?
Gruss Christoph
Hallo pc1246,
Danke erstmal für die erste Antwort und Interesse mir überhaupt zu helfen. :)
ok, ich vermeide screenshots ;)
...klar, die Baudrate im Zähler steht auf 9.6k Parity none , 1 Stopbit, Adresse 001...
Ein "list ModbusRS485" bringt folgende Ergebnisse
Internals:
BUSY 0
DEF /dev/ttyUSB0@9600
DeviceName /dev/ttyUSB0@9600
FD 4
LASTOPEN 1529940740.81633
NAME ModbusRS485
NR 98
NTFY_ORDER 50-ModbusRS485
PARTIAL
REQUESTHEX 0103002400080407
STATE opened
TYPE Modbus
devioLoglevel 3
nextOpenDelay 60
QUEUE:
READINGS:
2018-06-25 17:32:20 state opened
defptr:
1:
DEF 1 60
DEST
INTERVAL 60
IODev ModbusRS485
MODBUSID 1
ModuleVersion 3.7.3 - 22.12.2017
NAME SDM630
NOTIFYDEV global
NR 99
NTFY_ORDER 50-SDM630
PROTOCOL RTU
STATE ???
TRIGGERTIME 1530033641.1396
TRIGGERTIME_FMT 2018-06-26 19:20:41
TYPE ModbusSDM630M
helper:
lrecv 1529954385.20012
lsend 1530033588.53198
lastRead:
helper:
buffer
lid 1
lrecv 1530033588.57284
lsend 1530033588.53198
Attributes:
room Stromzaehler
Leider hab ich keinen Plan, wie ich sonst noch einen Test machen kann, ob die Schnittstellenanbindung und die serielle Datenverbindung überhaupt steht.
Da ich keinen Windoof PC habe, finde ich auch kein Tool zum testen. :-\
Ein Update im FHEM hatte ich vorher auch durchgeführt.
Was mir eben beim Befehl version aufgefallen ist, das das von Hand kopierte "98_ModbusSDM630M.pm" keine ID hat.
Liegt hier ggf. schon das Problem?
Latest Revision: 16903
File Rev Last Change
fhem.pl 16866 2018-06-14 07:58:06Z rudolfkoenig
90_at.pm 15795 2018-01-05 20:46:21Z rudolfkoenig
98_autocreate.pm 15620 2017-12-16 18:10:36Z rudolfkoenig
10_CUL_HM.pm 16838 2018-06-09 05:15:46Z martinp876
98_dummy.pm 12700 2016-12-02 16:49:42Z rudolfkoenig
91_eventTypes.pm 14888 2017-08-13 12:07:12Z rudolfkoenig
01_FHEMWEB.pm 16875 2018-06-15 19:05:36Z rudolfkoenig
92_FileLog.pm 16770 2018-05-24 15:16:12Z rudolfkoenig
98_help.pm 15223 2017-10-10 10:14:24Z betateilchen
00_HMLAN.pm 14073 2017-04-22 13:45:25Z martinp876
30_HUEBridge.pm 16310 2018-03-02 10:43:36Z justme1968
31_HUEDevice.pm 16352 2018-03-08 07:42:40Z justme1968
98_Modbus.pm 15871 2018-01-13 16:24:22Z StefanStrobel
No Id found for 98_ModbusSDM630M.pm
91_notify.pm 15937 2018-01-20 13:43:28Z rudolfkoenig
99_SUNRISE_EL.pm 16632 2018-04-17 19:00:21Z rudolfkoenig
98_telnet.pm 16293 2018-02-28 21:33:57Z rudolfkoenig
99_Utils.pm 15713 2017-12-28 11:01:02Z rudolfkoenig
98_version.pm 15140 2017-09-26 09:20:09Z markusbloch
Color.pm 11159 2016-03-30 16:08:06Z justme1968
DevIo.pm 16623 2018-04-15 18:44:05Z rudolfkoenig
HMConfig.pm 16887 2018-06-19 18:42:44Z martinp876
HttpUtils.pm 16768 2018-05-24 08:53:41Z rudolfkoenig
RTypes.pm 10476 2016-01-12 21:03:33Z borisneubert
SetExtensions.pm 16568 2018-04-08 09:44:42Z rudolfkoenig
TcpServerUtils.pm 15707 2017-12-27 14:41:21Z rudolfkoenig
fhemweb.js 16727 2018-05-11 09:12:01Z rudolfkoenig
Gruß Joerky
Hallo Joerky!
Bei 1m Leitung die beiden 120Ohm Wid. weg. Ist eher hinderlich. Bei 3-10m habe ich nur an einer Seite. Erst bei länderen Leitungen beide Seiten.
Bitte um eine genaue Zeichnung Schaltplan. Anschlussplan.
Den Eintrag
define ModbusRS485 Modbus /dev/ttyUSB0@9600
finde ich nicht gut. Bitte schreib by-id wie folgt.
define VR400Mod Modbus /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_AL01GIJ7-if00-port0@9600,8,E,1
lg
Wolfgang
Hallo wthiess !
das mit by-id hab ich abgeändert. Leider ohne Erfolg...
##define ModbusRS485 Modbus /dev/ttyUSB0@9600,8,N,1
define ModbusRS485 Modbus /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_AO000KUJ-if00-port0@9600,8,N,1
define SDM630 ModbusSDM630M 1 60
attr SDM630 userattr IODev
attr SDM630 IODev ModbusRS485
attr SDM630 room Stromzaehler
attr ModbusRS485 room Stromzaehler
Ich habe heute noch mal lange nachgelesen, was die Abschlusswiderstände betrifft. Auf allen "kommerziellen" Seiten von ModBus-Geräteherstellern wird zwingend auf die 120 Ohm Abschlusswiderstände verwiesen, ohne Angabe der Leitungslängen.
Klar kann man auch den Wellenwiderstand berechnen, und berechnete Widerstände einbauen, aber bei 9.6 K sollten doch Daten kommen, wenn 120 Ohm eingelötet sind. Die Leitung ist geschirmt und beidseitig mit GND verbunden.
Der Digitus hat einen 5V Anschluss. Den habe ich frei gelassen. ???
Ich habe aber von Pullupwiderstände gelesen, jeweils 390Ohm gegen 5V bzw. GND???
https://www.mikrocontroller.net/topic/97551#845017 (https://www.mikrocontroller.net/topic/97551#845017)
Am Anfang UND am Ende des Busses wir je ein 120R zw. A und B geschaltet.
Des weiteren am Anfang UND am Ende jeweils ein 390R gegen +5V und GND,
wob ei es hier sehr wichtig ist, dass von A ein 390R nach +5V geht und
von B ein 390R gegen Masse. NICHT ungekehrt !!!
Was denkst du? Macht das Sinn, oder sind die Pullup/down nicht bereits im Gerät verbaut?
Gruß Joerky
nimm die 120ohm weg
Moin
Also grundsaetzlich sollte jede RS485-Leitung an beiden Enden mit einem 120Ohm Widerstand abgeschlossen werden! Bei der Laenge waere es aber eher kein Problem diese nicht zu haben! Warum Du allerdings den Schirm auf beiden Seiten mit GND verbindest, wenn ich das richtig verstanden habe, verstehe ich nicht! Ok, auch hier haben wir bei der Laenge eher keine Stoerungen zu erwarten, aber trotzdem solltest Du ihn nur auf einer Seite auflegen! Wenn Du ihn allerdings als den dritten Ausgleichsleiter (GND) nutzt, dann musst Du es so lassen!
Pullup und Pulldown koennen noch ein Thema sein! Da wuerde ich einfach mal probieren.
Was Du allerdings beachten solltest, ist die Moeglichkeit, dass sowohl der Digitus, als auch der SDM630 solche Widerstaende eingebaut haben kann. (Evtl. parametrierbar)
Ein putty als Terminal sollte Dir auch auf einem nicht Windoofs PC zur Verfuegung stehen. Und da kannst du schon mal sehen ob der SDM630 etwas schickt!
Gruss Christoph
Ich verwende den hier
https://www.amazon.de/USB-RS485-Adapter-mit-Geh%C3%A4use/dp/B00I9H5J02/ref=sr_1_2?ie=UTF8&qid=1530098759&sr=8-2&keywords=modbus+usb (https://www.amazon.de/USB-RS485-Adapter-mit-Geh%C3%A4use/dp/B00I9H5J02/ref=sr_1_2?ie=UTF8&qid=1530098759&sr=8-2&keywords=modbus+usb)
die beiden 390Ohm habe ich immer ausgeschalten. Bei so kurzen Leitungen machen auch mit 120 Probleme.
Also ausschalten und noch mal Verkabelung A- B+ prüfen. Beim Digitus steht + - Beim 630 steht A B.
Das waren mein ersten Probleme. Mittlerweile habe ich 4 versch. Stränge mit verschiedenen Adaptern.
Genaue Zeichnungen würden immer Helfen.
In deinem Code fehlen mir die Register????
Hier auch meine fhem.cfg inkl.Statistik (der 220M ist der Einphasige sonst ähnlich)
#Zähler1 Boiler
define Z1 ModbusSDM220M 9 30
attr Z1 IODev Zaehler
attr Z1 alias Boiler
attr Z1 dev-i-combine 5
attr Z1 dev-i-defPoll 1
attr Z1 group Zähler_Boiler
attr Z1 obj-i0-format %.1f V
attr Z1 obj-i0-reading Voltage__V
attr Z1 obj-i12-format %.f W
attr Z1 obj-i12-reading Power__W
attr Z1 obj-i342-format %.3f kWh
attr Z1 obj-i342-reading Energy_total__kWh
attr Z1 obj-i6-format %.2f A
attr Z1 obj-i6-reading Current__A
attr Z1 room Zaehler
attr Z1 sortby 1
attr Z1 stateFormat <p align="left"> lStunde:statEnergy_total__kWhHourLastcost lTag:statEnergy_total__kWhDayLastcost lMonat:statEnergy_total__kWhMonthLastcost lJahr:statEnergy_total__kWhYearLastcost <p align="left"> Aktuell:statEnergy_total__kWh <p align="left"> Letzt:statEnergy_total__kWhLast <p align="left"> Zählerstand:Energy_total__kWh <p align="left">Ampere:Current__A Watt:Power__W
attr Z1 userReadings statEnergy_total__kWhHourLastcost { ReadingsVal("$name","statEnergy_total__kWhHourLast",0)*0.14 . " €";; },statEnergy_total__kWhDayLastcost { ReadingsVal("$name","statEnergy_total__kWhDayLast",0)*0.14 . " €";; },statEnergy_total__kWhMonthLastcost { ReadingsVal("$name","statEnergy_total__kWhMonthLast",0)*0.14 . " €";; },statEnergy_total__kWhYearLastcost { ReadingsVal("$name","statEnergy_total__kWhYearLast",0)*0.14 . " €";; }
define Z1stat statistics Z1
attr Z1stat deltaReadings Energy_total__kWh
attr Z1stat room Unsorted
attr Z1stat singularReadings Z1:Energy_total__kWh:Delta:(Hour|Day|Month|Year)
lg
Wolfgang
Hallo Joerky,
konntest Du Dein Problem denn lösen?
Ich habe momentan das gleiche und finde den Fehler nicht.
Zuvor hat der SDM630 jedoch Readings aktualisiert, seit einem Update nicht mehr.
Cheers,
Andy