Schritt 3: Virtuelle Schnittstelle einrichten - Tom-Bom-badil/samson_trovis_557x GitHub Wiki
:fire: Update / Achtung: Bei Verwendung der 'neuen' ModbusTCP-Adapter wie dem K7 oder dem E2 ist keine virtuelle Schnittstelle mehr erforderlich, und dieser Schritt kann übersprungen werden (siehe Beschreibung zu alternativen Adaptern am Ende dieser Bauanleitung). Die Adapter sind dann so zu konfigurieren, dass Sie als ModbusTCP zu Modbus RTU bridge arbeiten (z.B. bei USR: TTL1 > Socket A Parameters > Work Mode: TCP Server + Modbus TCP). Danach kann die Trovis von jedem Standard-ModbusTCP-Client direkt per IP-Adresse:Port angesprochen werden. Auch der Zugriff von mehreren Clients gleichzeitig ist dann möglich (z.B. Trovis-View, Heimautomation und 55Mobile gleichzeitig).
Für USB-Adapter
In aktuellen Betriebssystemen wird ein USB-Adapter nach dem Einstecken normalerweise automatisch erkannt:
Windows (ca. ab Win7): Eine Schnittstelle 'COMx' (x=nächster freier COM-Port) wird automatisch eingerichtet. Welcher Port für 'x' verwendet wird, lässt sich über den Gerätemanager ermitteln. Bitte den Port notieren, da wir diesen im nächsten Schritt zum Testen von Kabel und Adapter per Trovis-View benötigen.
Bitte beachten: Nach Angaben einiger Nutzer sollte kein zu hoher COM-Port für die Schnittstelle gewählt werden; ggf. nicht mehr benötigte niedrige COM-Ports im Gerätemanager löschen und das USB-Kabel Adapter abziehen und neu einstecken. Bei einem User funktionierte z.B. COM14 nicht; nach Umstellung auf COM3 lief dann alles problemlos.
Unix / Linux: Der USB-Adapter ist zumeist unter /dev/ttyUSBx oder /dev/ttyAMAx ansprechbar. x steht wie der COM-Port unter Windows für eine Zahl (hier meist 0).
Für LAN-/Wifi-Adapter
Windows: Für Windows liefern einige Adapterhersteller bereits Software mit, um eine virtuelle Schnittstellen zu erstellen (z.B. die Windows-Software VCOM von USRIOT). Vereinfacht gesagt wird bei dieser Art von Software ein Treiber bzw. Geräteport installiert, der dann auf einen COM-Port gemapped wird. Das weitere Prozedere ist dann identisch zu USB-Apaptern. Auch hier bitte den Port notieren, da wir diesen im nächsten Schritt zum Testen von Kabel und Adapter per Trovis-View benötigen:
Das Praktische an dieser Art Treiber ist, dass man quasi einen kostenlosen 'Port sniffer' gleich mitgeliefert bekommt, mit dem man die Kommunikation über die Schnittstelle verfolgen kann. Dies hilft sehr bei der Entwicklung für Geräte mit wenig dokumentierten Registern, wie es z.B. bei meiner Helios KWL der Fall war:
Unix / Linux: Hier kann man sich mit Bordmitteln eine virtuelle Schittstelle schnell selbst erstellen:
Unter /lib/systemd/system
eine Datei trovis.service
mit folgendem Inhalt erstellen (Achtung, root-Berechtigung erforderlich):
[Install]
WantedBy=default.target[Unit]
Description=Samson Trovis RS232C controller for smarthomeNG
After=network.target
Before=smarthome.service[Service]
PIDFile=/usr/local/smarthome/var/run/trovis.pid
ExecStart=/usr/bin/socat -s -ly pty,link=/dev/trovis,setuid=root,raw tcp:192.168.178.8:8234
User=root
Restart=always
RestartSec=10
Type=simple
Bitte beachten: Am Ende der Zeile ExecStart
die richtige IP und den Port Deines Adapters einstellen!
Mit sudo systemctl enable trovis.service
kann der Dienst bzw. die Schnittstelle jetzt dauerhaft aktiviert werden. Bei sudo systemctl status trovis.service
sollte der Dienst danach 'grün' und als gestartet dargestellt weren.
Abschließend mit sudo chmod 777 /dev/trovis
den Zugriff auf die Schnittstelle auch für nicht-root-User zulassen.
Weitere Befehle zur Steuerung der Schnittstelle: sudo service trovis [start | stop | restart]
. Insbesondere ein restart
kann bei einigen Adaptern manchmal erforderlich sein. Es scheint so, als würden manche LAN-Adapter nach einem gewissen Zeitraum ohne Aktivität (z.B. >30 Minuten) die offene Verbindung kappen und in eine Art 'sleep mode' gehen; dann hilft ein einfaches sudo service trovis restart
, und die Verbindung ist wieder da.
Grundsätzliche Hinweise zu Unix/Linux-Systemen
Aus meinem Helios-Projekt weiss ich, dass Devices unter /dev/tty* oft für Standard-Benutzer nicht ansprechbar sind. Grund sind fast immer fehlende Rechte.
Ein einmaliges sudo chmod 777 /dev/ttyUSB0
(oder /dev/ttyAMA1, /dev/trovis oder welcher Port auch immer zugewiesen ist) wirkt hier oft Wunder. (Für die Sicherheitsfetischisten: Sinn oder Unsinn von 777 möchte ich hier nicht diskutieren. Wem das nicht gefällt, der darf für seinen Adapter gern eigene Methoden austüfteln, um ihn zum Laufen zu bringen.)
Manchmal (wenn auch selten) wird auch die standardmäßig eingestellte Baudrate der verwendeten Device nicht korrekt erkannt. Dies läßt sich mit stty -F /dev/trovis 19200 raw -echo
beheben (für /dev/trovis natürlich die verwendete Device eintragen, wenn diese anders heißt, z.B. /dev/ttyUSB0).