Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485

Begonnen von StefanStrobel, 12 Juli 2014, 14:50:22

Vorheriges Thema - Nächstes Thema

Bjoernar

Danke werde ich dann gleich mal testen.

Gesendet von meinem Moto G (4) mit Tapatalk


DM

Hallo Stefan,

zwei kurze Fragen zum Modbus-Modul:
- kann man bei einer bestehenden Modbus-Kommunikation (RTU) nur 'mithören' (und natürlich die Reading aktualisieren) bzw. mit FHEM einen zweiten Master aufschalten?
- beim Verwenden von dev-h-defUnpack "l>" stürzt FHEM ab... Ist das nicht vorgesehen?

Grüße,
Dirk

Allgaeuer

Hallo Stefan,

bei Deinem Modul aus Post#305 habe ich ein Problem: Nach rereadcfg bleibt beim ModbusRTU das Modul mit Status "opened" stehen und macht keine Kommunikation. Bei ModbusTCP bleibt das Modul mit "disconnected" stehen. Nach einem Rechner-Reboot läuft alles wieder normal.

Ich habe jetzt wieder das alte 98_Modbus.pm (Version vom 2015-08-17) aktiviert, da habe ich das Problem nicht. (Aber leider auch kein "disable").

An was könnte das liegen?

Vielen Dank schon mal im Voraus.

Gruß Allgäuer

StefanStrobel

Hallo Dirk,

Ein passives Mitlesen ist bisher nicht vorgesehen. Da müsste erst noch einiges programmiert werden, denn einem Modbus-Frame sieht man ohne Kontext nicht an, ob es ein Request oder eine Response ist. Das erschließt sich nur aus dem Kontext. In der Response steht auch die Adresse nicht mehr drin. Die muss man aus dem vorangegangenen Request kennen. Bisher sendet das Modul Requests und hat keine Funktionen um fremde Requests zu lesen bzw. zu tracken.
Falls ich mal Langeweile habe, baue ich das vielleicht noch ein, aber ich hätte auch gar keine anderen Master zum Testen.
Als nächstes steht jetzt erst eine neue Scan-Funktion auf der Liste.

Gruß
    Stefan

StefanStrobel

Hallo Allgaeuer,

Klingt nach einem Bug. Das muss ich mir ansehen.
rereadcfg mache ich normalerweise auch nicht - eher shutdown restart.
Daher kann es schon sein, dass ich da noch etwas übersehen habe.

Gruß
     Stefan

wthiess

Hallo Stefan!

Arbeite mir Modbusattr und habe auch das Problem beim -Graden. Habe
attr T_ZuA dev-h-defUnpack s>
eingebaut. Ist das so richtig. Leider oder zum Glück ist es im Moment vorbei mit der Kälte.
Bei meinem Modbus-Thermostat hat die Zeile funktioniert.


lg
Wolfgang

define T_ZuA ModbusAttr 1 60
attr T_ZuA userattr IODev dev-h-combine dev-h-defPoll dev-h-defUnpack obj-h217-expr obj-h217-reading sortby stateFormat
attr T_ZuA IODev VR400Mod
attr T_ZuA dev-h-combine 5
attr T_ZuA dev-h-defPoll 1
attr T_ZuA dev-h-defUnpack s>
attr T_ZuA group ModbusSystemair
attr T_ZuA obj-h217-expr $val/10
attr T_ZuA obj-h217-reading REG_HC_TEMP_IN5
attr T_ZuA room Modbus,Haus
attr T_ZuA sortby 04
attr T_ZuA stateFormat {sprintf("%.1f Grad", ReadingsVal($name,"REG_HC_TEMP_IN5",0))}
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 ......

Bjoernar

Hallo,

ich habe leider auch schon wieder Probleme mit meinem Wechselrichter, es funktionierte jetzt seit ein paar Wochen nun aber leider nicht mehr:


2016.11.17 17:20:17 3: Wechselrichter1: 3 successive timeouts, trying to reconnect
2016.11.17 17:20:17 3: Opening Wechselrichter1 device 192.168.178.21:502
2016.11.17 17:20:20 3: Can't connect to 192.168.178.21:502: Die Wartezeit für die Verbindung ist abgelaufen
2016.11.17 18:40:13 3: Wechselrichter1: 4 successive timeouts, trying to reconnect
2016.11.17 18:40:13 3: Opening Wechselrichter1 device 192.168.178.21:502
2016.11.17 18:40:13 3: Wechselrichter1 device opened
2016.11.17 18:40:15 3: Wechselrichter1: no IODev found for Wechselrichter1
2016.11.17 18:40:17 3: Wechselrichter1: no IODev found for Wechselrichter1
2016.11.17 18:40:18 3: Wechselrichter1: no IODev found for Wechselrichter1
2016.11.17 18:40:19 3: Wechselrichter1: no IODev found for Wechselrichter1


Seit dem kommt nur noch Wechselrichter1: no IODev found for Wechselrichter1

"maxTimeoutsToReconnect 3" ist gesetzt.

Was ich sehr komisch finde ist das er um 18:40:13 schreibt: 3: Wechselrichter1 device opened

1. War der WR da nicht erreichbar
2. Stand das Gerät Wechselrichter1 auf disable

Vielleicht kannst du ja weiterhelfen.

Gruß
Björnar



StefanStrobel

Hallo Bjorrnar,

das Log sieht so aus als ob die wieder auf einer alten Version bist ...
Kann es sein, dass Du ein Fhem-update gemacht hast?
Die neue Version von 98_Modbus.pm ist noch nicht eingecheckt und so hast Du vermutlich wieder eine alte Version bekommen.

Was zeigt er denn im Internal ModuleVersion an?

Gruss
    Stefan

StefanStrobel

Hallo Wolfgang,

ob "s>" der richtige unpack-Code ist, kommt auf die Datenkodierung des entsprechenden Registers Deines Geräts an.
Das kann ich Dir nicht sagen, da hilft nur Ausprobieren.
Ich würde es aber tendentiell nicht mit dev-h-defUnpack als Default für alle Holding-Register setzen sondern nur bei den Readings, die auch entsprechende Werte enthalten mit obj-hxxx-unpack.

Gruss
    Stefan

Bjoernar

Zitat von: StefanStrobel am 18 November 2016, 08:55:25
Hallo Bjorrnar,

das Log sieht so aus als ob die wieder auf einer alten Version bist ...
Kann es sein, dass Du ein Fhem-update gemacht hast?
Die neue Version von 98_Modbus.pm ist noch nicht eingecheckt und so hast Du vermutlich wieder eine alte Version bekommen.

Was zeigt er denn im Internal ModuleVersion an?

Gruss
    Stefan

Fuck du hast recht.
Kann ich das irgendwie unterbinden?

Gruß
Björnar

StefanStrobel

Hallo,

anbei eine neue Version zum Testen.
Es gab noch einen Bug bei rereadcfg und das Modul akzeptiert nun auch Responses mit abweichender ID falls der Request an id0 (Broadcast) gesendet wurde.
Wenn ein paar Leute bestätigen, dass noch alles funktioniert, checke ich die neue Version ein.

Gruss
    Stefan


wthiess

eingebunden.. Keine besonderen Vorkommnisse

Id 0 noch nicht gestestet.

klg
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 ......

Bjoernar

Bei mir auch keine Probleme

Gesendet von meinem Moto G (4) mit Tapatalk


pejonp

Hallo Stefan,

ich habe auf einen RaspberryPi diese beiden Hinweise, die Daten werden aber angezeigt:
2016.11.21 17:33:31 1: PERL WARNING: substr outside of string at ./FHEM/98_Modbus.pm line 507.
2016.11.21 17:33:31 1: PERL WARNING: Use of uninitialized value $rest in numeric gt (>) at ./FHEM/98_Modbus.pm line 509.

in der ModBus.pm

507             $rest = substr($rest, $len * 2);    # take rest of rest starting at len*2 until the end 
508        }
509        Log3 $name, 5, "$name: ParseObj moves to next object, skip $len to $startAdr" if ($rest);

pejonp
LaCrossGW 868MHz:WT470+TFA+TX37-IT+EMT7110+W136+WH25A HP1003+WH2621
SignalD(CC1101):Bresser+WS-0101(868MHz WH1080)+Velux KLF200+MAX!+HM-MOD-UART:Smoke HM-SEC-SD+VITOSOLIC 200 RESOL VBUS-LAN+SolarEdge SE5K(Modbus)+Sonnen!eco8(10kWh)+TD3511+DRT710M(Modbus)+ZigBee+Z-Wave+MQTT+vitoconnect