Hallo,
da ich den MAX Cube auf culfw umgeflasht habe zu einem MAX Cul und diesen dann via LAN bereiben wollte, habe ich mal das Forum durchsucht und leider keine Lösung gefunden. Also hieß es, selbst nachdenken und eine Lösung finden.
Diese Lösung möchte ich euch nun hier als meinen ersten Beitrag im Forum zur Verfügung stellen!
Ziel: Einbinden eines MAX-Cube (Firmware culfw via LAN) an den Adapter maxcul.
Vorraussetzungen: Iobroker läuft direkt auf einer Linux-Maschine oder in einer virtuellen Maschine (VM). Auch im LCX-Container funktioniert diese Anleitung. Der MAX-Cube muss eine feste IP-Adresse im Netzwerk haben.
Sicherheitshinweis: evtl. zerschießt ihr euch das gesamte System. Also vorher unbedingt ein Backup erstellen! Die Anwendung der Anleitung erfolgt auf eigenes Risiko.
Testsystem ist ein NUC11I3 mit Proxmox 7.3.4. iobroker in einer amd64-VM unter Debian 11 bullseye
1.)
Das Tool socat muss installiert werden. [https://installati.one/debian/11/socket/]
Im Terminal (Putty) oder direkt in der Kommandozeile auf der VM die Befehle eingeben.
zuerst bringen wir mal unser System auf den neusten Stand mit:
sudo apt update && sudo apt upgrade
dann installieren wir Socat mit:
sudo apt-get -y install socat
2.)
Aufruf-Skript für Socat erstellen mit
sudo nano /usr/local/bin/avsp.sh
Hierher folgendes Script kopieren und in Zeile 7-10 die eigenen Daten eingeben:
#!/bin/bash
#
# add Virtual Serial Port (avsp)
#
#
#
CUBE_IP=192.168.178.78 # enter the fix IP of your Cube
CUBE_PORT=2323 # enter the Port of your Cube
BAUD=57600 # Baudrate to virtual serial Port
SER_PORT=/dev/virtualcom0 # Link to virtual serial Port
#
socat pty,link=$SER_PORT,raw,b$BAUD tcp:$CUBE_IP:$CUBE_PORT&
sudo chmod 666 $SER_PORT
sleep 2
iobroker restart maxcul.0 # restart Instanz of Adapter for vsp
Den Editor nano mit Strg-X J und Enter beenden.
nun das Script ausführbar machen:
sudo chmod +x /usr/local/bin/avsp.sh
Nun kann man mit testen beginnen.
Hier sind noch folgende Befehle hilfreich:
ps aux | grep socat
Zeigt die Prozess-ID der im Hintergrund laufenden Prozesse von socat an.
kill -9 Prozess-ID
Beendet den im Hintergrund laufenden Prozell mit der Prozess-ID.
Der max-cul-Adapter sollte zum konfigurieren gestoppt werden.
Hier nun die Daten aus dem Aufrufskript Zeile 8-10 konfigurieren.
Beim Start kann man den Aufbau der Verbindung im Protokoll der Instanz hervorragend beobachten.
3.)
Da nach einem Neustart das Script jedesmal von Hand gestartet werden muss, ist ein Autostart sinnvoll.
Hier bietet sich der Systemdienst förmlich an, da man hier auf Netzwerkverfügbarkeit warten kann.
Dazu erstellen wir die notwendige Servicedatei mit:
sudo nano /etc/systemd/system/avsp.service
mit folgenden Inhalt:
[Unit]
Description=ad a virual serial Port linked to configurated IP
After=network.target
[Service]
Type=forking
Restart=always
RestartSec=15
ExecStart=/usr/local/bin/avsp.sh
[Install]
WantedBy=multi-user.target
Den Editor nano mit Strg-X J und Enter beenden.
Mit diesem Befehl den Daemon mit dem neuen Service-File neu laden.
sudo systemctl daemon-reload
Hiermit den Service aktivieren.
sudo systemctl enable test.service
Nach einem Neustart der VM sollte nun alles laufen.
Ein besonderer Dank geht an Elton & Ingo für die Unterstützung.
Gruß Jens
edit am 05.01.23: Tippfehler beseitigt und sudo ergänzt