Daten über RS232 übertragen
Moderator: Ulrich
Daten über RS232 übertragen
Hallo an alle,
mein Hybridinverter besitzt nur eine RS232 Schnittstelle (EASun MPS 5KVA älterer Baureihe). Mir ist bekannt dass man den mittels RS232->USB Adapter einbinden kann. Das scheidet bei mir jedoch aus da alle USB-Ports meines Raspi bereits belegt sind. Auch ist es sinnvoller direkt den auf dem Raspi vorhandenen RS232-Port zu nutzen - ein primitiver RS232 Adapter mit MAX232 Chip für den RPI kostet incl. Versand weniger als 5 Euro Vielleicht habe ich etwas übersehen - aber ich habe kein einziges PHP gefunden in dem tatsächlich dieser Port genutzt wird. Ist hier etwas vorhanden was ich übersehen habe oder ist hier Eigenleistung gefragt?
mein Hybridinverter besitzt nur eine RS232 Schnittstelle (EASun MPS 5KVA älterer Baureihe). Mir ist bekannt dass man den mittels RS232->USB Adapter einbinden kann. Das scheidet bei mir jedoch aus da alle USB-Ports meines Raspi bereits belegt sind. Auch ist es sinnvoller direkt den auf dem Raspi vorhandenen RS232-Port zu nutzen - ein primitiver RS232 Adapter mit MAX232 Chip für den RPI kostet incl. Versand weniger als 5 Euro Vielleicht habe ich etwas übersehen - aber ich habe kein einziges PHP gefunden in dem tatsächlich dieser Port genutzt wird. Ist hier etwas vorhanden was ich übersehen habe oder ist hier Eigenleistung gefragt?
- Ulrich
- Administrator
- Beiträge: 5980
- Registriert: Sa 7. Nov 2015, 10:33
- Wohnort: Essen
- Hat sich bedankt: 152 Mal
- Danksagung erhalten: 812 Mal
- Kontaktdaten:
Re: Daten über RS232 übertragen
Hier ist Eigenleistung gefragt.
-----------------------------------------------------
Ulrich . . . . . . . . [ Admin ]
Ulrich . . . . . . . . [ Admin ]
Re: Daten über RS232 übertragen
Danke für die schnelle Antwort! Ich werde meine Ergebnisse hier teilen wenn ich welche habe. Aktuell ist noch das 10m RS232-Kabel auf dem Versandweg zu mir
Ansonsten kann ich über mein Projekt folgenden Zwischenstadn geben:
Einrichtung von Solaranzeige auf einem Raspi 3b+, Betriebssystem Arch 64 Bit, Kernel 5.18.1-1-aarch64-ARCH #1 SMP PREEMPT
Alle Dienste laufen problemlos. Zusätzlich läuft noch ein pi-hole, ein nfs-Server und ein (Amateurfunk) APRS-Gateway mit SDR Stick und diverse andere Steuerungs- und Regelaufgaben auf dem Gerät. Es arbeitet "monitorlos" - eine grafische Oberfläche / ein X-Server ist nicht vorhanden. Swap ist deaktiviert. Wegen der fehlenden Datenanbindung werden noch keine Daten vom Wechselrichter übertragen - aber ich bin sehr zuversichtlich dass das nach Eintreffen des Kabels schnell gelöst werden kann.
Ansonsten kann ich über mein Projekt folgenden Zwischenstadn geben:
Einrichtung von Solaranzeige auf einem Raspi 3b+, Betriebssystem Arch 64 Bit, Kernel 5.18.1-1-aarch64-ARCH #1 SMP PREEMPT
Alle Dienste laufen problemlos. Zusätzlich läuft noch ein pi-hole, ein nfs-Server und ein (Amateurfunk) APRS-Gateway mit SDR Stick und diverse andere Steuerungs- und Regelaufgaben auf dem Gerät. Es arbeitet "monitorlos" - eine grafische Oberfläche / ein X-Server ist nicht vorhanden. Swap ist deaktiviert. Wegen der fehlenden Datenanbindung werden noch keine Daten vom Wechselrichter übertragen - aber ich bin sehr zuversichtlich dass das nach Eintreffen des Kabels schnell gelöst werden kann.
Re: Daten über RS232 übertragen
Ich kann meinen Inverter nicht korrekt identifizieren - ich hänge mal zwei Fotos an. Aktuell nutze ich auf meinem Linux-Desktop das ätzende Programm "watchpower" (Java...) - die Schnittstelle ist /dev/ttyS0 . Die Kommunikation ist einwandfrei, sie läuft mit 2400 Baud.
Wenn ich die Schnittstelle mit einem Terminalprogramm (minicom) anspreche und z.B. den Befehl QPI<cr> absetze passiert GAR NICHTS. Ich vermutete dass es der Inverter Typ "59" ist - das scheint aber nicht zu stimmen. Solange ich ihn noch nicht mal auf meinem PC mit "echter" RS232-Schnittstelle mit einem Terminalprogramm ansprechen kann machen weitere Versuche mit solaranzeige im Moment keinen Sinn - zu viele Fehlermöglichkeiten...
Es ist ein MPPT, er hat nur eine RS232 Schnittstelle.
Wenn ich die Schnittstelle mit einem Terminalprogramm (minicom) anspreche und z.B. den Befehl QPI<cr> absetze passiert GAR NICHTS. Ich vermutete dass es der Inverter Typ "59" ist - das scheint aber nicht zu stimmen. Solange ich ihn noch nicht mal auf meinem PC mit "echter" RS232-Schnittstelle mit einem Terminalprogramm ansprechen kann machen weitere Versuche mit solaranzeige im Moment keinen Sinn - zu viele Fehlermöglichkeiten...
Es ist ein MPPT, er hat nur eine RS232 Schnittstelle.
- Ulrich
- Administrator
- Beiträge: 5980
- Registriert: Sa 7. Nov 2015, 10:33
- Wohnort: Essen
- Hat sich bedankt: 152 Mal
- Danksagung erhalten: 812 Mal
- Kontaktdaten:
Re: Daten über RS232 übertragen
Bitte versuche es einmal mit Regler = 45
Die Chance ist groß, dass der es ist. Wenn der Wechselrichter angeschlossen und die user.config.php angepasst ist, dann den Raspberry unbedingt noch einmal neu starten, da erst beim Hochfahren die serielle Geschwindigkeit eingestellt wird.
Die Chance ist groß, dass der es ist. Wenn der Wechselrichter angeschlossen und die user.config.php angepasst ist, dann den Raspberry unbedingt noch einmal neu starten, da erst beim Hochfahren die serielle Geschwindigkeit eingestellt wird.
-----------------------------------------------------
Ulrich . . . . . . . . [ Admin ]
Ulrich . . . . . . . . [ Admin ]
Re: Daten über RS232 übertragen
Reboot verbietet sich für sowas bei meinem Raspi - dafür laufen zu viele Dienste drauf die nicht unterbrochen werden sollte (nur bei Kernel- und Systemd - Updates...)
Ich denke es reicht die usb_init.php einmal laufen zu lassen - oder? Ich habe "45" eingetragen - aber es kommen immer noch keine Daten.
Ich bin aber trotzdem irgendwie weitergekommen:
Auf meinem Desktop bekomme ich mit picocom (Terminalprogramm) eine Antwort, wenn ich mit 2400 8N1 den String QPI absetze. Da die Checksumme fehlt antwortet der Inverter mit NACK. Daraufhin habe ich mal einen RS232 zu USB Adapter gearbeitet - dort bekomme ich ebenfalls ein NACK. Dann habe ich einen USB-Port an meinem Raspi freigeschaufelt und genau den Adapter dort eingesteckt - wird auch brav als ttyUSB0 erkannt. Aber dort bekomme ich mit gleichen Parametern kein NACK. Vielleicht sind 10m Kabel doch zu lang ohne elektronische Treiber - glaube ich aber bei 2400 Baud eher nicht. Ich buddele erstmal alleine weiter.
Ein HowTo wwas man alles auf einem Arch64 System nachinstallieren muss habe ich mitgeführt. Dort gibt es noch eine Nicklichkeit: ich bekomme Fehlermeldungen bei der Verbindung zu Influx. Influx läuft (ich kann mit Browser auf Port 8086 darauf zugreifen). Ich habe einen User "solaranzeige" angelegt mit Passwort und eine db mit Namen solaranzeige. Trotzdem bekomme ich die Meldung dass die User-ID oder das PW zum Einloggen in Influx nicht stimmen. Aber immer einen Schritt nach dem anderen:
1) Kommunikation herstellen - erstmal mit RS232 zu USB Adapter
2) danach auf den "direkten RS232" umstellen
3) dann geht es weiter.
Danke für den Support!
Ich denke es reicht die usb_init.php einmal laufen zu lassen - oder? Ich habe "45" eingetragen - aber es kommen immer noch keine Daten.
Ich bin aber trotzdem irgendwie weitergekommen:
Auf meinem Desktop bekomme ich mit picocom (Terminalprogramm) eine Antwort, wenn ich mit 2400 8N1 den String QPI absetze. Da die Checksumme fehlt antwortet der Inverter mit NACK. Daraufhin habe ich mal einen RS232 zu USB Adapter gearbeitet - dort bekomme ich ebenfalls ein NACK. Dann habe ich einen USB-Port an meinem Raspi freigeschaufelt und genau den Adapter dort eingesteckt - wird auch brav als ttyUSB0 erkannt. Aber dort bekomme ich mit gleichen Parametern kein NACK. Vielleicht sind 10m Kabel doch zu lang ohne elektronische Treiber - glaube ich aber bei 2400 Baud eher nicht. Ich buddele erstmal alleine weiter.
Ein HowTo wwas man alles auf einem Arch64 System nachinstallieren muss habe ich mitgeführt. Dort gibt es noch eine Nicklichkeit: ich bekomme Fehlermeldungen bei der Verbindung zu Influx. Influx läuft (ich kann mit Browser auf Port 8086 darauf zugreifen). Ich habe einen User "solaranzeige" angelegt mit Passwort und eine db mit Namen solaranzeige. Trotzdem bekomme ich die Meldung dass die User-ID oder das PW zum Einloggen in Influx nicht stimmen. Aber immer einen Schritt nach dem anderen:
1) Kommunikation herstellen - erstmal mit RS232 zu USB Adapter
2) danach auf den "direkten RS232" umstellen
3) dann geht es weiter.
Danke für den Support!
- Ulrich
- Administrator
- Beiträge: 5980
- Registriert: Sa 7. Nov 2015, 10:33
- Wohnort: Essen
- Hat sich bedankt: 152 Mal
- Danksagung erhalten: 812 Mal
- Kontaktdaten:
Re: Daten über RS232 übertragen
Ja, die usb_init.php einmal starten reicht. Die stellt die Geschwindigkeit der Schnittstelle ein.
-----------------------------------------------------
Ulrich . . . . . . . . [ Admin ]
Ulrich . . . . . . . . [ Admin ]
Re: Daten über RS232 übertragen
Dein Projekt ist genial und verdient weitere Verbreitung (meine Meinung). Auch außerhalb eines Raspbian-Images auf anderen Distris. So wie ich das bis jetzt abschätze steckt 95% der Arbeit im Ordner /var/www . Und die ist nach kurzer Sichtung wirklich bemerkenswert!
Re: Daten über RS232 übertragen
Ich habe ein Hardwareproblem. Durch die räumliche Trennung von Raspi und Inverter (verbunden mit unterschiedlichen Potentialen) habe ich eine Brummschleife auf der RS232 Leitung. Schließe ich am Ende ein potentialfreies Gerät an klappt alles - ist es geerdet klappt es nicht mehr. Abhilfe: Galvanische Trennung. Dafür gibt es Adapter mit Optokopplern (gerade bestellt -ebay mit Versand < 25 Euro). 2be continued....
Lösung zur Nutzung der "echten" seriellen Schnittstelle des Raspi
Jeder Raspi hat eine "echte" RS232 schon on board. Man braucht nur einen Pegelwandler und kann dann das RS232-Kabel eines Inverters ohne USB-Lösung einstöpseln. Das ist auch schon die ganze Hardwareseite.
Nun zur Softwareseite:
Die echte serielle Schnittstelle heißt bei meinem Raspi (Arch 64 Bit System) /dev/ttyS1
Ich ermittle zunächst die Node-Informationen mit
und erhalte bei mir
Mit dieser Schnittstelle kann solaranzeige nicht umgehen. Aber ein kleiner Dreizeiler macht aus dieser Schnittstelle eine USB-Schnittstelle! Dazu wird sie sozusagen "mit anderem Namen neu erzeugt". Man muss vorher kontrollieren ob die neu zu erzeugende Schnittstelle vielleicht schon existiert (USB-Dongle noch gesteckt). In dem Fall ist es ratsam den USB-Dongle abzuziehen. Wer das nicht kann/möchte (mehrere Inverter / Regler) muss sich eine freie serielle USB heraussuchen. Man kann sich alle vorhandenen anzeigen lassen mit
Ich nehme mal an auf eurem System kommt da keine Ausgabe - dann wählen wir gleich die erste: /dev/ttyUSB0
Jetzt kommt "die Magie": Führt die folgenden Bash-Befehle als "root" aus:
Dabei sind die beiden roten Zahlen die Infos die ihr mit 'ls -l /dev/ttyS1' erhalten habt. Ob die Schnittstelle bei einem Raspbian ebenfalls der Gruppe "tty" gehört kann ich nicht sagen - ich nutze keine Raspbian-Systeme. Diese haben ein eingebautes Verfallsdatum, und sowas mag ich gar nicht (darum nutze ich ein Arch-basiertes System). Sollte die Gruppe bei euch anders heißen dann nehmt ihr eben die Gruppe zu der /dev/ttyS1 gehört. Damit existiert die einfache serielle Schnittstelle nun auch als USB-Pendant und wird sofort von solaranzeige erkannt und kann verwendet werden.
Allerdings übersteht die so erzeugt Schnittstelle keinen Reboot. Um das sicherzustellen schreibt man die drei Zeilen in die /etc/rc.local - und ab sofort wird die Schnittstelle bei jedem Reboot automatisch erzeugt.
EDIT:
Ich sehe Farben im Codeblock kann das Forum nicht. Aber wer sich in der Lage sieht die Befehle einzutippen wird auch mit der verstümmelten Anzeige des Codeblocks etwas anfangen können...
EDITEDIT:
Vielleicht baut Ulrich dieses Feature auch in seine Images ein. Dann wird die serielle Schnittstelle generell nutzbar gemacht.
Nun zur Softwareseite:
Die echte serielle Schnittstelle heißt bei meinem Raspi (Arch 64 Bit System) /dev/ttyS1
Ich ermittle zunächst die Node-Informationen mit
Code: Alles auswählen
ls -l /dev/ttyS1
Code: Alles auswählen
crw--w---- 1 root tty 4, 65 11. Aug 07:32 /dev/ttyS1
Code: Alles auswählen
ls -l /dev/ttyUSB*
Jetzt kommt "die Magie": Führt die folgenden Bash-Befehle als "root" aus:
Code: Alles auswählen
mknod "/dev/ttyUSB0" c [color=red]4 65[/color]
chown :tty /dev/ttyUSB0
chmod 660 /dev/ttyUSB0
Allerdings übersteht die so erzeugt Schnittstelle keinen Reboot. Um das sicherzustellen schreibt man die drei Zeilen in die /etc/rc.local - und ab sofort wird die Schnittstelle bei jedem Reboot automatisch erzeugt.
EDIT:
Ich sehe Farben im Codeblock kann das Forum nicht. Aber wer sich in der Lage sieht die Befehle einzutippen wird auch mit der verstümmelten Anzeige des Codeblocks etwas anfangen können...
EDITEDIT:
Vielleicht baut Ulrich dieses Feature auch in seine Images ein. Dann wird die serielle Schnittstelle generell nutzbar gemacht.