UDP eine bestimmte Stelle auslesen

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • logol01
    MS Profi
    • 03.03.2018
    • 832

    #1

    UDP eine bestimmte Stelle auslesen

    Hallo zusammen,

    ich habe eine kleines Problem.....
    Ich möchte eine bestimmte Wertestelle aus meinem UDP virtuellen FHEM Eingang von meinem FHEM Reading des Homematic Heizungsthermostaten auslesen.
    Ich bekomme es aber nicht hin.

    Ich habe das einen Screenshot angefügt, um zu zeigen welcher String in der Loxone ankommt:

    Ich möchte den Wert "23.0" auslesen - das ist der desired-temp Wert des Homematic Gerätes.

    ich mache das wie in dem weiteren Bild das ich auch hier eingefügt habe - sprich ich lese die 5. Stelle der Übertragung aus.....
    Leider bekomme ich in meiner Loxone aber den Wert "-1" - was mache ich hier falsch?

  • romildo
    Lebende Foren Legende
    • 25.08.2015
    • 5144

    #2
    Hallo,
    Ich denke, zwischen den einzelnen Werten hat es jeweils ein Leerzeichen.
    Versuch mal:
    Code:
    HM_Badheiz_Clima: \#\b\#\b\#\b\#\b\v
    lg Romildo

    Kommentar

    • logol01
      MS Profi
      • 03.03.2018
      • 832

      #3
      Danke! Läuft!

      Kommentar


      • romildo
        romildo kommentierte
        Kommentar bearbeiten
        Bitte gerne.
        Warum aber von Loxone abholen, kannst Du denn nicht einfach nur den gewünschten Wert an den Loxone Eingang pushen?
    • Christian Fenzl
      Lebende Foren Legende
      • 31.08.2015
      • 11235

      #4
      btw
      MQTT-Gateway Plugin "Werbung"
      MQTT-Gateway und 5 Zeilen in der FHEM-Config -> Alle FHEM-Readings am Miniserver: https://www.loxwiki.eu/display/LOXBE...gs+weitergeben

      Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

      Kommentar

      • logol01
        MS Profi
        • 03.03.2018
        • 832

        #5
        Zitat von Christian Fenzl
        btw

        MQTT-Gateway und 5 Zeilen in der FHEM-Config -> Alle FHEM-Readings am Miniserver: https://www.loxwiki.eu/display/LOXBE...gs+weitergeben
        Hallo Christian,

        von Dir ist Werbung immer herzlich willkommen..... :-)

        mein FHEM sagt: "Cannot load module MQTT"
        :-(

        Kommentar


        • Christian Fenzl
          Christian Fenzl kommentierte
          Kommentar bearbeiten
          Bist wohl mit FHEM nicht auf dem aktuellen Stand.
          Hast du "update" bei FHEM gemacht?
      • logol01
        MS Profi
        • 03.03.2018
        • 832

        #6
        Zitat von logol01

        Hallo Christian,

        von Dir ist Werbung immer herzlich willkommen..... :-)

        mein FHEM sagt: "Cannot load module MQTT"
        :-(
        Doch eigentlich schon....
        Habe aber FHEM nicht auf dem Loxberry sondern auf einem eigenen Raspberry.
        Habs jetzt hinbekommen - hoffentlich nichts falsches gemacht....

        Hab das auf dem FHEM Raspberry gemacht.....


        und dann
        sudo apt-get install -y mosquitto mosquitto-clients

        jetzt ballert er ohne Ende Richtung Miniserver und die Readings kommen an.

        Kommentar

        • hismastersvoice
          Supermoderator
          • 25.08.2015
          • 7271

          #7
          Ich habe gerade eine ähnliche Aufgabenstellung...

          Ich muss aus einem UDP String 2 Stellen auslesen und bekomme es nicht hin.....

          A55A0B071C080D8001A0420B00B1

          Der Rest des String bleibt gleich, die 08 verändert sich je nach Batterie-Spannung.
          Ich bekomme es hin das er entweder die 0 oder 8 liest, aber nicht beides. (Simuliere das mit UDP-Tool)
          Wenn er nur die zweite Stelle liest wird die Batterie nie leer

          romildo

          Du verstehst doch diese verflu.... Befehlserkennung, die ich nicht in den Kopf bekomme. *grrr*
          Kein Support per PN!

          Kommentar

          • Tico
            Lox Guru
            • 31.08.2016
            • 1035

            #8
            Versuchen Sie vielleicht zwei virtuelle Eingänge -

            Code:
            1. Befehlserkennung - \s10\1
            Code:
            2. Befehlserkennung - \s11\1
            Für jedes Zeichen werden ASCII-Werte zurückgegeben. Kombinieren Sie dann Byte 1 & Byte 2 mit State Blocks.

            Ich spreche kein Deutsch. Gib Google Translate die Schuld, wenn ich unverständlich bin.

            Kommentar

            • Tico
              Lox Guru
              • 31.08.2016
              • 1035

              #9
              Ich war neugierig zu erfahren, ob ein TQ-Ausgang (Text) in einem Analogeingang verwendbar ist.
              Es scheint als "normaler" Zahlenwert gut zu funktionieren.
              Ich spreche kein Deutsch. Gib Google Translate die Schuld, wenn ich unverständlich bin.

              Kommentar

              • Christian Fenzl
                Lebende Foren Legende
                • 31.08.2015
                • 11235

                #10
                hismastersvoice Tico hat recht, es wird nicht viel anders gehen. Ich hab grad am Test-MS und mit Command Recognition herumprobiert, aber ich hab keine Lösung gefunden, die 08 direkt als dezimalen Hexwert herauszubekommen.

                Wenn du zwei Befehlserkennungen machst, eine mit \s10\2 und eine mit \s11\1 und die Zahlen summierst, bekommst du den Dezimalwert-Wert von 0x3038h = 12344. Aber selbst das bringt auch nichts, weil der ASCII-Code nicht von 0-F aufsteigend ist...

                Mit \s10\h bekommst du nicht nur das 08 (dafür gleich in Dezimal 8), sondern 080D8001A0420B00B1 als Hexzahl.

                Und das waren dann auch schon alle Möglichkeiten. Also kombinieren, wie Tico sagt.
                Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

                Kommentar

                • romildo
                  Lebende Foren Legende
                  • 25.08.2015
                  • 5144

                  #11
                  hismastersvoice
                  Bei der Befehlserkennung sehe ich da leider auch keine andere Möglichkeit wie Tico und Christian Fenzl

                  Je nachdem wie Du danach die Werte benötigst, könntest Du für Dezimal einen Formelbaustein nehmen.

                  Für Hexadezimal könnte der Inhalt der Statusbausteine auf Hexadezimalwerte vereinfacht werden.
                  Ich bin mir sicher, dass ich Dir das nicht zu zeigen brauche, möglicherweise gibt es aber Leser welche das noch nicht kennen.
                  Hier mal ein Beispiel mit Inhalt für Hexwerte (in Grossbuchstaben).

                  Klicke auf die Grafik für eine vergrößerte Ansicht

Name: HexwerteFilternDarstellen.jpg
Ansichten: 675
Größe: 219,3 KB
ID: 180410
                  lg Romildo

                  Kommentar

                  • Tico
                    Lox Guru
                    • 31.08.2016
                    • 1035

                    #12
                    hismastersvoice,

                    Könnten Sie bitte klären, ob 08 ein hexadezimaler oder dezimaler Wert ist?
                    Zuletzt geändert von Tico; 11.12.2018, 13:15.
                    Ich spreche kein Deutsch. Gib Google Translate die Schuld, wenn ich unverständlich bin.

                    Kommentar

                    • hismastersvoice
                      Supermoderator
                      • 25.08.2015
                      • 7271

                      #13
                      Danke erst Mal die die ganzen Antworten.
                      Tico
                      Es ist ein Hex Wert, und hier sagt man du und nicht sie
                      Kein Support per PN!

                      Kommentar

                      • Tico
                        Lox Guru
                        • 31.08.2016
                        • 1035

                        #14
                        Ich war neugierig, noch eine Sache auszuprobieren.

                        Code:
                        Einzelbefehlserkennung - \s10\2\1
                        Dann in einen Formelblock.

                        Code:
                        ((int(I1 / 256) - 55) * int(log((int(I1 / 256) - 48) * 0,9 + 1)) + (int(I1 / 256) - 48) * (1 - int(log((int(I1 / 256) - 48) * 0,9 + 1)))) * 16 + ((I1 - int(I1 / 256) * 256 - 55) * int(log((I1 - int(I1 / 256) * 256 - 48) * 0,9 + 1 )) + (I1 - int(I1 / 256) * 256 - 48) * (1 - int(log((I1 - int(I1 / 256) * 256 - 48) * 0,9 + 1))))

                        Ich habe 08 in deiner ursprünglichen Zeichenkette durch eine Vielzahl von Hex-Werten ersetzt.

                        Alle Gutschriften gehen an Aleq.

                        https://www.loxwiki.eu/display/LOXEN...ng+to+a+number
                        Zuletzt geändert von Tico; 11.12.2018, 14:43.
                        Ich spreche kein Deutsch. Gib Google Translate die Schuld, wenn ich unverständlich bin.

                        Kommentar


                        • Christian Fenzl
                          Christian Fenzl kommentierte
                          Kommentar bearbeiten
                          Cool, ich wusste gar nicht, dass man damit zwei Wertübernahmen in _einem_ Befehl (\2\1) machen kann.
                      • hismastersvoice
                        Supermoderator
                        • 25.08.2015
                        • 7271

                        #15
                        Tico
                        Perfekt, so bekomem ich es hin.Danke...
                        Kein Support per PN!

                        Kommentar

                        Lädt...