Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Einsteigerfragen
    4. Einbindung von Geräten
    5. UDP empfangen und auswerten

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    UDP empfangen und auswerten

    This topic has been deleted. Only users with topic management privileges can see it.
    • G
      Gutty last edited by Gutty

      Hi, ich befasse mich seit kurzem mit IoBroker, um langsam mal den Wildwuchs in geordnete Bahnen zu bekommen.
      Ich habe im Haus verschiedene Geräte, die kommunizieren per udp broadcast mit selbst geschriebenem Protokoll. Z.B. sendet einer #23M19.5< das heisst dann, die Variable 23 hat den Wert 19,5
      Das wird dann geparst, von dem Gerät, das den Wert verwendet, z.B. Display für die Aussentemperatur, und ein anderes Gerät schickt den Wert auf Thingspeak.
      Nun will ich die werte in IoBroker reinbekommen, finde aber keinen "Adapter" der udp annimmt und dann z.B. über js parst und zur Verfügung stellt. Wie kann ich sowas angehen?
      Viele Grüsse vom Newbie aus Spanien

      paul53 2 Replies Last reply Reply Quote 0
      • paul53
        paul53 @Gutty last edited by

        @gutty
        Den Multicast-Adapter probiert?

        G 1 Reply Last reply Reply Quote 0
        • G
          Gutty @paul53 last edited by Gutty

          @paul53 Nein, weil "Have a uniform API available based on multicast communication and JSON formatted data transmission"

          und ich momentan am implementierten Protokoll nichts ändern will/kann. Aber für zukünftige Sachen käme der wohl in Frage

          1 Reply Last reply Reply Quote 0
          • mickym
            mickym Most Active last edited by mickym

            Wenn Du Node-Red nutzt, da gibts per Default UDP Nodes.

            1 Reply Last reply Reply Quote 0
            • paul53
              paul53 @Gutty last edited by

              @gutty
              Man kann in der Javascript-Instanz udp-packet als zusätzliches NPM-Modul installieren.

              mickym 1 Reply Last reply Reply Quote 0
              • mickym
                mickym Most Active @paul53 last edited by

                @paul53 sagte in UDP empfangen und auswerten:

                @gutty
                Man kann in der Javascript-Instanz udp-packet als zusätzliches NPM-Modul installieren.

                Na wenn er eh schon Node-Red nutzt dann wäre es halt eine zusätzliches Modul was geladen werden muss.

                G 1 Reply Last reply Reply Quote 0
                • G
                  Gutty @mickym last edited by

                  @mickym nein, node-Red benutze ich (noch?) nicht. werds mir anschauen. Wie gesagt, ich bin noch sehr neu im IoBroker.

                  Danke für die Infos

                  mickym 1 Reply Last reply Reply Quote 0
                  • mickym
                    mickym Most Active @Gutty last edited by

                    @gutty

                    @gutty sagte in UDP empfangen und auswerten:

                    node-Red benutze ich (noch?) nicht.

                    Ein Fehler. 😉 - Adapter installieren und auf gehts. 😉

                    G 1 Reply Last reply Reply Quote 0
                    • G
                      Gutty @mickym last edited by

                      @mickym Nun, ich hab mich inzwischen etwas mehr mit befasst. Es war zu kompliziert gedacht. In Javascript direkt geht es am einfachsten:

                      const dgram = require('dgram');
                      const server = dgram.createSocket('udp4');
                      
                      server.on('listening', function () {
                        const address = server.address();
                      });
                      
                      server.on('message', function (message, remote) {
                      const text = message.toString();
                      
                      var regex = /#03M(-?\d+\.\d+)</;            
                      
                      var match = text.match(regex);
                      if (match) {
                        const zahl = Number(match[1]);
                      
                      setState('0_userdata.0.Druck'/*Druck*/, zahl, true);
                      }
                      
                      regex = /#43M(-?\d+\.\d+)</;            
                      match = text.match(regex);
                      if (match) {
                          const zahl = Number(match[1]);
                          setState('0_userdata.0.TempSonne', zahl);
                      }
                      
                      regex = /#42M(-?\d+\.\d+)</;            
                      match = text.match(regex);
                      if (match) {
                          const zahl = Number(match[1]);
                          setState('0_userdata.0.TempSchatten', zahl);
                      }
                      
                      const numArray = [getState('0_userdata.0.ESP_Dach.Temp1'/*Temp1*/).val, getState('0_userdata.0.ESP_Dach.Temp2'/*Temp2*/).val, getState('0_userdata.0.ESP_Dach.Temp3'/*Temp3*/).val, getState('0_userdata.0.TempSchatten'/*TempSchatten*/).val, getState('0_userdata.0.TempSonne'/*TempSonne*/).val];
                      const lowestNum = Math.min(...numArray);
                      const MaxNum = Math.max(...numArray);
                      setState('0_userdata.0.NiedriegstTemp'/*NiedriegstTemp*/, lowestNum);
                      setState('0_userdata.0.HoechstTemp'/*HoechstTemp*/, MaxNum);
                      });
                      server.bind(6001);
                      

                      Ein Grossteil davon stammt von ChatGPT, von Javascript habe ich noch so gut wie keine Ahnung.

                      mickym 1 Reply Last reply Reply Quote 0
                      • mickym
                        mickym Most Active @Gutty last edited by mickym

                        @gutty sagte in UDP empfangen und auswerten:

                        von Javascript habe ich noch so gut wie keine Ahnung.

                        Na deswegen habe ich Dir ja Node Red empfohlen, wenn Du nicht codieren willst.

                        Aber ich will niemand zu seinem Glück zwingen. chatGPT kann das sicher besser. 😉

                        G 1 Reply Last reply Reply Quote 0
                        • G
                          Gutty @mickym last edited by

                          @mickym naja, etwas codieren kann ich schon, Arduino C halt. Deswegen ist mir Code grundsätzlich lieber als Blöcke zusammen klicken.

                          1 Reply Last reply Reply Quote 0
                          • First post
                            Last post

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          523
                          Online

                          31.9k
                          Users

                          80.2k
                          Topics

                          1.3m
                          Posts

                          3
                          11
                          907
                          Loading More Posts
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes
                          Reply
                          • Reply as topic
                          Log in to reply
                          Community
                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                          The ioBroker Community 2014-2023
                          logo