UART Abfrage einer Chlor Dosieranlagen - minicom macht mich fertig...

  • hi,

    ich habe mir eine PI 3 zugelegt und diese mit meiner Dosieranlagen verbunden.

    Die Dosieranlagen hat einen USB Ausgang. Ich kann nun mit minicom via ttyUSB0 einen Befehl an die Dosieranlagen senden (?ist) und erhalte dann die aktuellen Werte in Klartext ASCII. Nun bash dazu geschrieben der ausliest, in Datei speichert und mir die Datei an meinen Server übermittelt. Der wertet die Daten in einem PHP aus und schreibt die Daten in ein Protokoll mysql. Nun gut. Klappt. War net so schwer trotz meines ersten PI Kontakts und nicht so der Linux Fachmann.

    Das soll schön alles im Hintergrund als Prozess oder via cron laufen.

    Schön und gut. Das Problem ist nur: dieses MINICOM schreibt keine Datei wenn es im Hintergrund läuft. Nur wenn es als offenes Terminal-Script läuft. Auch starts mit nohub & etc... nix - sobald das nicht in einem "aktiven" Terminal Fenster läuft - issnet...

    Nun suche ich eine rettende Idee - oder einen Programmiere der mir gegen Entgelt ein kleines Programm schreibt damit ich ohne minicom via ttyUSB0 den Befehl ?ist an die Dose schickt und dann die Daten auffängt.... kann ja net so schwer sein - wenn man weiß wie.

    Bin für Anregungen und Codebeispiele sehr sehr dankbar! Aber auch für jemanden der sich der Sache annimmt und via Fernzugriff das ganze für mich rockt...

    Hier mal mein Script im Detail damit Ihr wißt wie ich mir das zusammengebastelt habe (ich bin kein Fachmann... das habe ich mir zusammengesucht....)

    Info: dieses minicom (mein Lieblingsprogramm :wallbash:) reagiert nicht auf exit im Script. So habe ich mit einem crontab killall minicom alle 5 min. abgeschossen. Dann geht das bash script in den Loop und liest neu aus, schreibt neue Datei... dann kommt der crontab nach 5 min und killt minicom... usw. usw... aber NUR im offnen Terminal script. Ideen ???? Hilfe???

    Wie kann ich serielle Kommunikation im Script selber basteln? 19200,8,n,1 ASCII no Hardwarehandshake

    Lasse eure Gedanken laufen ... danke !


    Einmal editiert, zuletzt von fraso (24. Juni 2016 um 15:57)

  • UART Abfrage einer Chlor Dosieranlagen - minicom macht mich fertig...? Schau mal ob du hier fündig wirst!

  • Danke.

    Ich habe mal n Screenshot beigepackt was bei mir passiert und wie der stty den USB0 sieht. Wahrscheinlich ist eine Einstellung falsch - aber ich blick es nicht. Vllt. gibt mir einer n Tip. 19200,8,n,1 kein Hardwarehandshake - mehr Infos habe ich zu der Schnittstelle nicht, und Minicom gibt mir auch nicht mehr Info zu den Nebeneinstellungen wie delay, cr oder was sonst noch zu beachten ist...


    dosi1.png


    Hi!

    Ideen hätte ich dazu schon:
    - Dein Script in einer screen-Umgebung laufen lassen
    - Die USB-Schnittstelle als File ansprechen:

    Code
    echo "?ist" > /dev/ttyUSB0
    cat /dev/ttyUSB0


    - Das Programm mit Python, C, C++ schreiben
    - minicom mit expect bedienen

  • hab das geschickt

    Code
    echo '?ist\r' > /dev/ttyUSB0 && head /dev/ttyUSB0 -n10


    bleibt stehen bis ich ctrl-c drücken...
    auch ohne \r

    Einmal editiert, zuletzt von fraso (24. Juni 2016 um 21:46)

  • minicom kann man auch per Script betreiben. Ich hab's mal probiert und ein paar Notizen gemacht.

    Das war ein Test mit einem GSM-Modem, die Befehle und Antworten muessen natuerlich anders sein:

    Kommandozeile:

    Code
    minicom -o -D /dev/ttyUSB0 -S minicom.script

    Und in minicom.script stand:

    Code
    send "AT"
    expect {
     "OK"
    }
    print ""
    send "AT+CGMI"
    expect {
     "OK"
    }
    print ""

    Beim expect ist das Programm sehr pingelig, es lief nur wenn es genau so geschrieben war.

    Timeouts gibt's uebrigens auch, so dass ein Script nicht fuer immer haengen bleibt.

    Ein eigenes Programm waere natuerlich besser, wenn man es kann ;)

  • Wieso brichst du dir einen ab und willst es unbedingt mit minicom oder bash umsetzen? Versuchs mal mit Python und dem "serial" Module ;)
    Guck dazu auch mal in FAQ => Nützliche Links / Linksammlung da findest du evtl. auch Beispiele.
    Oder dieses: http://codepad.org/MRC0Lvha

  • Lief das auch im crontab ?

    Minicom ist bekannt dafür, dass es eben nicht im crontab läuft....


    Automatisch zusammengefügt:
    Hab das mal probiert.

    Kriege natürlich die Daten aus der Anlage gelesen. Das klappt ja auch schon vorher. Das Problem (und das ist eben minicom bug):
    - exit funktioniert nicht
    und die Daten werden nicht in eine txt Datei geschrieben wenn es im crontab läuft.

    Das Auslesen soll aber direkt via crontab ablaufen. Deine Idee klappt, aber kommt auch nur so weit wie ich schon war.

    Ziel. Nach dem senden von ?ist an die Dosieranlagen - die Empfangenen Daten in einer TXT ablegen. Das im crontab.

    Danke Dir für Deine Hilfe!


    Lief das auch im crontab ?

    Minicom ist bekannt dafür, dass es eben nicht im crontab läuft....


    Automatisch zusammengefügt:
    Python hat mich gerettet. Damit klappt das. minicom failed! Python won!


    Der Link von Dir hatte den richtigen Quellcode. Damit ging es auf anhieb. :bravo2: :danke_ATDE:

    Danke. Läuft...


    Wieso brichst du dir einen ab und willst es unbedingt mit minicom oder bash umsetzen? Versuchs mal mit Python und dem "serial" Module ;)
    Guck dazu auch mal in FAQ => Nützliche Links / Linksammlung da findest du evtl. auch Beispiele.
    Oder dieses: http://codepad.org/MRC0Lvha

    Einmal editiert, zuletzt von fraso (25. Juni 2016 um 01:47)

  • ...Bitte nicht jedes mal Beiträge vollständig quoten - insbesondere wenn diese genau da drüber stehen. Und bitte auch abgewöhnen jedes mal die Schnellantwort zu nutzen, man kann seine Beiträge auch unten rechts Bearbeiten... Danke.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!