Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Node-Red
    5. Daten per Serieller Schnittstelle übertragen

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Daten per Serieller Schnittstelle übertragen

    This topic has been deleted. Only users with topic management privileges can see it.
    • mickym
      mickym Most Active @Bavarian last edited by

      @bavarian Was ich allerdings nicht verstehe - wenn Du Strings verschickst - warum dann keine JSON Strings.
      Wenn der JS Code hier frei sit mit dem strcmp - da können wir doch das ganze Array schicken und das auf der Empfängerseite anlysieren?

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

        @bavarian So ansonsten habe ich es jetzt mal so hingebracht, dass das Array in einen Puffer geschrieben wird.

        f4850edb-f30d-4464-bfee-b03bd24a937b-image.png

        Diese Meldung
        2073b418-603f-4a59-852e-6406b334d7f4-image.png
        bekommst Du von der serial out Node - wenn Du einen Buffer schreiben willst, weil Buffer und String sich nicht vertragen.

        \n ist ja das Zeilenvorschubzeichen. Wenn Du das unbedingt brauchst, damit was geschickt wird, dann kann man das HEX eintragen und dann gibt es auch die Fehlermeldung beim Buffer nicht mehr:

        f4b8f87a-5c0a-4795-90f7-457573037e75-image.png

        Hier der Flow - ich hab allerdings für den Bool auch den Type Byte genommen - anders mag das Teil nicht.

        [{"id":"e08ae59281d89c61","type":"buffer-maker","z":"61c5ee22.b88f1","name":"","specification":"spec","specificationType":"ui","items":[{"name":"item1","type":"string","length":-1,"dataType":"msg","data":"payload[0]"},{"name":"item2","type":"byte","length":1,"dataType":"msg","data":"payload[1]"},{"name":"item3","type":"byte","length":1,"dataType":"msg","data":"payload[2]"},{"name":"item4","type":"byte","length":1,"dataType":"msg","data":"payload[3]"}],"swap1":"","swap2":"","swap3":"","swap1Type":"swap","swap2Type":"swap","swap3Type":"swap","msgProperty":"payload","msgPropertyType":"str","x":730,"y":480,"wires":[["4ce6d6acb107c8d7","1df6c50f97d2dbea"]]},{"id":"4ce6d6acb107c8d7","type":"debug","z":"61c5ee22.b88f1","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":910,"y":480,"wires":[]},{"id":"1df6c50f97d2dbea","type":"serial out","z":"61c5ee22.b88f1","name":"","serial":"e13e4297edea67b8","x":940,"y":420,"wires":[]},{"id":"445effb16bf3ad09","type":"inject","z":"61c5ee22.b88f1","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"[\"MSS:\",200,50,true]","payloadType":"json","x":530,"y":480,"wires":[["e08ae59281d89c61"]]},{"id":"2b3000e4.63106","type":"inject","z":"61c5ee22.b88f1","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"LEDON","payloadType":"str","x":730,"y":420,"wires":[["4ce6d6acb107c8d7","1df6c50f97d2dbea"]]},{"id":"e13e4297edea67b8","type":"serial-port","serialport":"/dev/ttyACM0","serialbaud":"57600","databits":"8","parity":"none","stopbits":"1","waitfor":"","dtr":"none","rts":"none","cts":"none","dsr":"none","newline":"\\n","bin":"bin","out":"char","addchar":"0x10","responsetimeout":""}]
        

        ec41fc70-f4cf-408f-9beb-3011ed547515-image.pngc739e42e-d2e7-403e-b6da-9e10a01de1d4-image.png

        Als Type Bool den letzten Parameter im Array für die Buffer Node zu verwenden funktioniert anscheinend nur, wenn das insgesamt ein Array ist.

        8c15d429-8e73-4a2e-adc4-45d4e5a6e830-image.png

        In der Hilfe zur Parser Node steht es dann auch wohl so drin, das hier auch ein Array ausgegeben wird.
        2d1b0b7c-b148-4769-b3c2-cd2cbcfe2f9a-image.png


        Im Prinzip bekommt man den Puffer auch ohne buffer Node hin - man muss allerdings Strings getrennt vom übrigen Array behandeln:

        ca048304-6497-44e6-bb0e-bdd764138227-image.png

        Hier der Code der Function Node:

        var buffArr = [];
        var topic = msg.payload.shift();
        buffArr.push(Buffer.from(topic));
        buffArr.push(Buffer.from(msg.payload));
        msg.payload=Buffer.concat(buffArr);
        return msg;
        
        B 1 Reply Last reply Reply Quote 0
        • B
          Bavarian @mickym last edited by

          @mickym

          Ich kann auf der Arduino Seite nichts ändern, nicht weil ich nicht will sondern weil es sonst zu einer anderen Software nicht mehr passt.

          Das mit dem \n ist gelöst mit 0x10 kann ich die Strings senden und bekomme auch mit dem Buffer keine Meldung mehr 👍
          Leider sehen aber auch nur die Debug Meldungen gut aus, es geht nichts raus.
          Da der Arduino verbaut ist, sehe ich die RX/TX LED nicht, also noch eine Arduino genomme, Programm drauf und LED's ansehen.
          String mit 0x10 angehangen und LED blinkt auf.
          Ansonsten bleibt die RX LED aus, Debug Message kommt aber Serial passiert nix.

          Ich denke bevor ich mit dem Inhalt der Nachrichten weiter mache die ich senden will, sollte ich erstmal sicherstellen, dass da
          aus dem Buffer auch Seriell gesendet wird.

          mickym B 2 Replies Last reply Reply Quote 0
          • mickym
            mickym Most Active @Bavarian last edited by mickym

            @bavarian Probier mal statt 0x10, 0x0A ich hab da dezimal statt hex 10 dezimal 10 genommen, sorry.

            c0fa10d3-f72d-4d61-b05b-a11dee826556-image.png

            Alternativ auch CR - habe ich auch gelesen - also 0x0D.

            1 Reply Last reply Reply Quote 0
            • B
              Bavarian @Bavarian last edited by

              @bavarian

              🤘
              DAS war es !
              Statt \n eben nicht leer lassen sonden 0x0a senden 😎

              Ich hab es nun als im Inject als JSON ["MSS:",89,27,1] das klappt, nun wird das ja von mir per klick ausgelöst.
              Der JSON Datenpunkt sieht ja genauso aus, ändert sich aber ein Wert im DP wird nicht automatisch gesendet.
              Muss ich hierzu noch was beachten?
              Irgendein trigger setzten, wenn sich was im DP ändert bitte senden?

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

                @bavarian Na statt der Inject Node nimmst Du doch eine iobroker In Node und wenn der Wert neu geschrieben wird, dann triggert die Node auch. Vielleicht hast Du in der iobroker In Node was ausgefiltert zum Beispiel ACK=true oder so.

                Du musst halt jetzt den ganzen Flow nehmen - iobroker in- json Node die das in Objekt konvertiert und dann halt in den Buffer Maker oder function Node.

                Wenn all Events in der iobroker In Node spezifiziert ist, dann wird auch gesendet, selbst wenn sich gar nichts ändert und der Wert nur neu geschrieben wird.

                1597f955-9306-4aea-8215-96d36a5e1df6-image.png

                funktioniert bei mir einwandfrei - hier der gesamte Flow - nur das halt bei Dir hinten die serial Node dranhängt:

                ec1fc68c-fce5-4ac9-a60e-3d3ea9bb9c0f-image.png

                Du sendest ja nicht einzelne Werte im JSON - sondern immer den Datenpunkt und der enthält ja den kompletten JSON String.

                B 1 Reply Last reply Reply Quote 0
                • B
                  Bavarian @mickym last edited by

                  @mickym

                  LÄUFT!

                  Problem war noch ein bool im Script.

                  Vielen Dank Michael!!!

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

                    @bavarian Na freut mich - zusammen bekommt man das meist hin - auch wenn ich kein Arduino Board habe. 😉 Ich lerne ja auch immer - nächstes Mal weiss ich dass man 0x0a in die serielle Node eintragen muss, wenn man Buffer überträgt - ausserdem habe ich mich ja wieder etwas mit der Buffer Node und der JS Buffer Funktion heute auseinandergesetzt. Dieses Wissen ist mir ja Gewinn genug und deswegen mache ich so was ja auch gerne, weil es mein eigenes Wissen und die Erfahrung vergrößert.

                    H 1 Reply Last reply Reply Quote 0
                    • H
                      Hansi1234 @mickym last edited by

                      Wäre es auf diese Weise auch möglich einen Fingerprint Reader (zfm 20/40/60 etc) zu integrieren?

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

                        @hansi1234 sagte in Daten per Serieller Schnittstelle übertragen:

                        Es scheint wohl Libaries für Arduino bzgl. fingerprint zu geben - aber das müssen dann wohl Leute mit so einem Board sagen und wie die Befehle aussehen müssen. Es scheint aber üblich zu sein über die serielle Schnittstelle mit dem Board zu kommunzieren. Gibt auch im Netz einige Beispiele wie Fingerprint Sensoren an so ein Arduino angeschlossen wurden.

                        Ich kann dazu leider nichts beitragen.

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        1.1k
                        Online

                        31.7k
                        Users

                        79.7k
                        Topics

                        1.3m
                        Posts

                        3
                        12
                        721
                        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