Programm für die Modbus/RTU mit MQTT

PaulAtreides

Well-Known Member
Ich habe in Ruby eine Software geschrieben, die Modbus/RTU-Geräte abfragt und die Daten in bestimmten Intervallen oder bei Ereignissen an einen MQTT-Server schickt. Teilweise werden auch Statistiken lokal auf dem Client berechnet, die dann nach Ablauf einer bestimmten Zeit verschickt werden. Als Puffer verwende ich eine SQLite-Datenbank, falls die Verbindung mal abbricht. Leider kommt es immer wieder vor, dass Ruby Network Exceptions wirft, die ich nicht korrekt abfangen kann, wodurch das Skript abstürzt. MQTT ist in Ruby leider nicht besonders gut implementiert. Ich habe nun über eine Alternative nachgedacht. Entweder ich implementiere das Ganze in C++ oder in GO. Mit GO habe ich noch nicht so viel gemacht. C++ ist natürlich wesentlich aufwendiger. Python mag ich nicht. Hat jemand einen Vorschlag oder eine Empfehlung?
 
Das ist immer so eine persönliche Sache. Ich habe in den letzen Wochen zwei Programme von mir "portiert". Das zusammen mit einer KI ging eigentlich ziemlich flüssig. Ich kannte die Konzepte aber schon grob und eine KI hat den Vorteil, dass sie Dir bei konkreten Problemen gezielt helfen kann. Wie immer darf man die KI nicht alleine machen lassen. Erstens lernt man dann nichts und zweitens macht sie jede Menge Murks.
Aber um auf Deine Frage zurück zu kommen: Wenn man mit funktionaler Programmierung vertraut ist, dann ist Rust nicht sonderlich anders. Die Unterstützung in VS Code mit Rust Analyser und clippy ist so ziemlich das Beste, was mir bis jetzt untergekommen ist.
 
Wie schwierig war es für dich, von Klassen auf Structs, Impls und Traits umzustellen? Wie ist die Bibliotheksunterstützung? Laut Google ist diese noch nicht so umfangreich wie bei Go oder C++. Bist du da auf Probleme gestoßen?
 
Mit Bibliotheken hatte ich keine Probleme. Serialisierung und Deserialisierung sind mit serde Standard. Das funktionierte so gut, dass ich bei einem Tool von mir gleich YAML und TOML parsing ermöglicht habe. War kaum Mehraufwand. Ansonsten sitze ich gerade an MQTT und RSCP. MQTT läuft problemlos und RSCP ist halt ein properitäres Protokoll von E3DC. Aber auch da gibt es was.
Die Umstellung von Klassen auf Structs lief Problemlos, da ich ja nur Datenklassen verwende. Rust ist nicht objektorientiert. Ich empfinde das als sehr angenehm. Entscheidender ist aber das Borrow-Konzept. Das führt dazu, dass man den Programmablauf noch mal durchdenken sollte. All die Dinge, die man noch schnell irgendwo angebaut hat sind dann problematisch. Im Großen und Ganzen war es aber kein Problem.
 
Zurück
Oben