RS232 wie am einfachsten an den MS anbinden ?

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • gtrdriver
    LoxBus Spammer
    • 08.05.2016
    • 282

    #1

    RS232 wie am einfachsten an den MS anbinden ?

    Hallo zusammen

    ich habe hier ein Gerät das RS232 spricht - 2400/8N1 - alles relativ rudimentär...

    Beispiel:

    Ich connektiere mittels Linux uns einem RS232/USB Adapter zu dem Gerät - sende einen Befehl:

    "^P007PIRI8"
    und erhalte eine Antwort:
    "^D0892300,243,2300,500,243,5600,5600,480,460,540, 408,564,540,2,020,060,0,0,2,9,1,0,0,0,1,01�"

    Primär geht es darum in einem Zeitintervall von x Sekunden Daten an so abzufragen und in den MS zu bekommen.

    Aber ich kann im Gerät auch dinge "steuern" - also müsste der MS entsprechend auch Kommandos senden ...

    Gibt es einen eleganten Weg die recht teure RS232 Extension zum umgehen ?

    Im Endeffekt gibt es eine Handvoll Kommandos mit Rückwerden die ich abfragen möchte und im Gegenzug eine Handvoll die ich senden möchte ...

    CU
    GTR




  • Thomas M.
    Lebende Foren Legende
    • 25.08.2015
    • 3278

    #2
    Keine Ahnung, geht das in so eine Richtung?

    Kommentar


    • Prof.Mobilux
      Prof.Mobilux kommentierte
      Kommentar bearbeiten
      Das ist doch ein RS232 RS485 Konverter. Was soll er denn damit machen?

    • Thomas M.
      Thomas M. kommentierte
      Kommentar bearbeiten
      aso dachte rs232 "auf LAN" und er kann dann irgendwie ...
      ok vorschlag ziehe ich zurück
  • Prof.Mobilux
    Supermoderator
    • 25.08.2015
    • 4899

    #3
    Loxone RS232 Extension, wenn du nach der einfachsten Möglichkeit suchst? https://www.loxone.com/dede/kb/rs232-extension/

    Asnsonsten tut es auch ein Raspberry mit USB-RS232 Adapter.
    🇺🇦 Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine


    LoxBerry - Beyond the Limits

    Kommentar

    • Noschvie
      MS Profi
      • 24.09.2018
      • 559

      #4
      Oft wird auch der Weg über MQTT genommen. Ein ESP32 mit Tasmota, der die Bridge auf RS232 realisiert, in beide Richtungen. Vielleicht gibt es da eh schon was, wenn dein Device nicht zu exostisch ist.

      Kommentar

      • gtrdriver
        LoxBus Spammer
        • 08.05.2016
        • 282

        #5
        Hallo zusammen

        erstmal danke für die Vorschläge.

        Hardwaretechnisch wäre so ein TCP/LAN/RS232 Adapter die einfachste Lösung - ABER - das Ding spricht ja TCP Socket.
        Daher müsste der MS ja eine TCP Socket VErbindung zu dem Adapter aufbauen - aber ich meine das kann der MS nicht oder ?

        Einen Raspi hab ich da liegen - ja - klar - RS232/USB Adapter dran - ja -. hab ich schon probiert - klappt mittels Terminal...
        Aber dann brauche ich irgend eine Art von Gateway Software/Script das die Kommunikation zwischen MS und dem Raspi übernommt.

        Würde ich nur lesen wollen würde ich das vermutlich selbst hinbekommen - ein python SCript dass den RS232 alle x Sec abfragt und die Werte mittels UDP an den MS schickt.
        Aber ich habe momentan noch keine Idee wie ich das "schreibend" mache - also MS >>> Raspi >>> RS232

        Kommentar

        • Noschvie
          MS Profi
          • 24.09.2018
          • 559

          #6
          Gibt es von diesem Device eine Doc im WWW ?

          Kommentar

          • Prof.Mobilux
            Supermoderator
            • 25.08.2015
            • 4899

            #7
            Weiß nicht wieviel Bock Du hast etwas selbst zu basteln, aber Schreiben ist auch nicht schwieriger als Lesen. Da gibt es garantiert fertige Code-Schnipsel für Python. Im Smartmeter Plugin nutzen wir Perl (falls Du das magst): https://github.com/mschlenstedt/LoxB...logger.pl#L637

            Und sonst die schon erwähnte ESP-Bridge RS232 <-> MQTT mit dem Loxberry als MQTT Gateway. Oder die Loxone RS232 Extension, wenn Du nicht basteln willst.
            🇺🇦 Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine


            LoxBerry - Beyond the Limits

            Kommentar

            • gtrdriver
              LoxBus Spammer
              • 08.05.2016
              • 282

              #8
              Hallo zusammen

              na ja - wenn wir nicht basteln wollten dann wären wir hier wohl falsche :-)

              Meine Idee ist jetzt wie folgt:

              Nen RASPI hab ich eh schon da wo die serielle Konsole arbeiten soll - daher Punkt1 schon mal erledigt
              Ein Python Script - ich bin mir noch nicht ganz sicher ob ich das hinbekomme - welches auf UDP lauscht und quasi Befehle vom MS empfängt (Via UDP) - entsprechend die Serielle Schnittstelle abfragt - die empfangenen Daten dann wieder per UDP an den MS sendet.

              Kommentar

              • Prof.Mobilux
                Supermoderator
                • 25.08.2015
                • 4899

                #9
                So würde ich das auch machen. Wenn Du eh einen LoxBerry hast (könntest Du direkt auf dem Raspi mit laufen lassen) würde ich aus Python heraus direkt MQTT nehmen (anstelle UDP) und den Loxberry die Kommunikation mit dem Miniserver machen lassen. Dann brauchst Du Dich darum nicht zu kümmern. Und MQTT ist sehr leicht in Python zu realisieren (gibt es alles fertig als Bibliothek --> Google hilft).
                Zuletzt geändert von Prof.Mobilux; 14.04.2023, 16:12.
                🇺🇦 Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine


                LoxBerry - Beyond the Limits

                Kommentar

                • gtrdriver
                  LoxBus Spammer
                  • 08.05.2016
                  • 282

                  #10
                  Hallo

                  ich habe den Loxberry in der Cloud laufen und via VPN bei mir daheim eingebunden - daher fällt zumindest der Weg aus den Loxberry auf dem PI laufen zu lassen - will das auch nicht ändern da das perfekt funktioniert...

                  Mit MQTT kenne ich mich bisher nicht aus - schau ich mir aber an ... - man will ja nie auslernen ...

                  Kommentar

                  • gtrdriver
                    LoxBus Spammer
                    • 08.05.2016
                    • 282

                    #11
                    Hallo zusammen

                    Ich bin jetzt einen großen schritt weiter und bekomme jetzt schon mal die Live Daten per UDP in den Miniserver:

                    So schaut das im UDP Monitor aus:
                    Code:
                    5358    13:03:09.108    Loxone Miniserver    192.168.1.231    EASUNIN    7040    ^D1062382,499,2382,499,0000,0000,000,540,000,000,000,000,100,022,000,000,0000,0000,0000,0000,0,0,0,1,1,1,1,0\xE7\xAE\r    5e 44 31 30 36 32 33 38 32 2c 34 39 39 2c 32 33 38 32 2c 34 39 39 2c 30 30 30 30 2c 30 30 30 30 2c 30 30 30 2c 35 34 30 2c 30 30 30 2c 30 30 30 2c 30 30 30 2c 30 30 30 2c 31 30 30 2c 30 32 32 2c 30 30 30 2c 30 30 30 2c 30 30 30 30 2c 30 30 30 30 2c 30 30 30 30 2c 30 30 30 30 2c 30 2c 30 2c 30 2c 31 2c 31 2c 31 2c 31 2c 30 e7 ae 0d    Befehl VCI6 [0]
                    Die eigentliche Wertzeile schaut dann wie folgt aus:

                    Code:
                    ^D1062382,499,2382,499,0000,0000,000,540,000,000,000,000,100,022,000,000,0000,0000,0000,0000,0,0,0,1,1,1,1,0\xE7\xAE\r
                    Der 1. Wert ist der Inhaltstype:

                    Code:
                    ^D10623
                    Das sagt dass hier die Live Daten kommen - die weiteren 2 Zeichen sind die Checksumme - die interessieren nicht.
                    Dann geht es los mit Kommaseparierten Werten.

                    Ich kenne mich leider mit dem Loxone Befehlserkennung nicht aus - kann mir jemand sagen oder helfen wie ich die einzelnen Werte mittels der Loxone Befehlszeilenerkennung als Werte rein bekomme ?




                    Kommentar

                    • Tico
                      Lox Guru
                      • 31.08.2016
                      • 1035

                      #12
                      Der wichtigste Bestandteil ist die Verwendung der Funktion \i,\i. Alles, was zwischen den beiden \i\i steht, wird übersprungen.

                      Für ein Komma lautet der Befehl -
                      Code:
                      \i,\i\v
                      Für zwei Kommas lautet der Befehl -
                      Code:
                      \i,\i\i,\i\v
                      Für drei Kommas lautet der Befehl -
                      Code:
                      \i,\i\i,\i\i,\i\v
                      usw.

                      Daraus ergeben sich jeweils die ersten drei Werte:
                      499
                      2382
                      499
                      Ich spreche kein Deutsch. Gib Google Translate die Schuld, wenn ich unverständlich bin.

                      Kommentar

                      • gtrdriver
                        LoxBus Spammer
                        • 08.05.2016
                        • 282

                        #13
                        Hallo

                        vielen dank für die Erklärung

                        Kann ich hier auch kombinieren ? - Es müsste auch noch berücksichtigt werden dass nur Zeilen verarbeitet werden die mit "^D10623" beginnen

                        Kommentar

                        • gtrdriver
                          LoxBus Spammer
                          • 08.05.2016
                          • 282

                          #14
                          Hi - muss das nochmals ergänzen - habe jetzt erstmal folgenden Vorschlag probiert:

                          Da stimmt aber irgendwas noch nicht...

                          Code:
                          \i,\i\i,\i\v
                          Erzeugt dann z.b: 2345,499

                          Sieht man auch hier schön:
                          Klicke auf die Grafik für eine vergrößerte Ansicht

Name: image.png
Ansichten: 334
Größe: 30,4 KB
ID: 387766​Der Nimmt auch das nachfolgende Feld mit und hängt es als Dezimalstelle an


                          Kommentar

                          • Tico
                            Lox Guru
                            • 31.08.2016
                            • 1035

                            #15
                            Beim ersten Punkt stellen Sie die Befehlserkennung auf -

                            Code:
                            ^D10623\i,\i\i,\i\v
                            Beim zweiten Punkt hatte ich <v> in der Einheitenanzeige. Es ist nun ersichtlich, dass die Dezimalwerte auch gezogen werden, wenn <v.3> eingestellt ist.

                            Die am wenigsten ressourcenintensive Möglichkeit ist die Übergabe des Wertes an einen Formelblock mit folgendem (INT = Integer)

                            Code:
                            INT(I1)
                            Klicke auf die Grafik für eine vergrößerte Ansicht  Name: Integer.png Ansichten: 0 Größe: 6,3 KB ID: 387820
                            Zuletzt geändert von Tico; 17.04.2023, 03:22.
                            Ich spreche kein Deutsch. Gib Google Translate die Schuld, wenn ich unverständlich bin.

                            Kommentar

                            Lädt...