Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript… und mühsam ernährt sich das Eichhörnchen!

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    11
    1
    472

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.6k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.5k

JavaScript… und mühsam ernährt sich das Eichhörnchen!

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
30 Beiträge 5 Kommentatoren 3.6k Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • P Offline
    P Offline
    pafra
    schrieb am zuletzt editiert von
    #17

    Hallo Mirko,

    was passiert, wenn Du die Variable "daten" auf der Console ausgeben lässt?

    Gruß

    Franz

    1 Antwort Letzte Antwort
    0
    • wendy2702W Online
      wendy2702W Online
      wendy2702
      schrieb am zuletzt editiert von
      #18

      Hi Franz,

      wenn ich das richtig verstehe ist die variable "daten" nichts anderes als die Ausgabe von:

      console.log('Data: ' + data.toString('hex'));
      

      Wenn ich also zum testen ein:

      console.log('Daten: ' + daten);
      

      einfüge, erhalte ich in der Ausgabe jeweils zwei Zeilen mit demselben Inhalt: Beispiel Auszug –>

      08:19:11.522	[info]	javascript.0 script.js.Parser: Data: 0000000127008901270028
      08:19:11.522	[info]	javascript.0 script.js.Parser: Daten: 0000000127008901270028
      08:19:11.538	[info]	javascript.0 script.js.Parser: Data: 351210038929ff
      08:19:11.538	[info]	javascript.0 script.js.Parser: Daten: 351210038929ff
      

      Oder meintest du das anders?

      Mirko

      Bitte keine Fragen per PN, die gehören ins Forum!

      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

      1 Antwort Letzte Antwort
      0
      • P Offline
        P Offline
        pafra
        schrieb am zuletzt editiert von
        #19

        Hi Mirko,

        ja, genau so.

        Die Daten stehen also in der Variable "daten".

        Und damit landet dann wirklich nichts hier?

        setState('Waterkotte.Daten.Rohdaten', daten);

        Was passiert, wenn Du das manuell machst?

        var test = 1234

        Waterkotte.Daten.Rohdaten', test);

        Gruß

        Franz

        1 Antwort Letzte Antwort
        0
        • wendy2702W Online
          wendy2702W Online
          wendy2702
          schrieb am zuletzt editiert von
          #20

          Hallo Franz,

          doch, es landet etwas in dem Datenpunkt.

          Aber immer nur das letzte der Ausgabe und nicht der komplette String.

          z.B.

          Ergebnis der Abfrage in der Console:

          08:54:57.546	[info]	javascript.0 script.js.Parser: Data: ff
          08:54:57.562	[info]	javascript.0 script.js.Parser: Data: 100200171fbe120c0603052918
          08:54:57.577	[info]	javascript.0 script.js.Parser: Data: 33cdc01191bfc0ffe9d3c0fb56
          08:54:57.592	[info]	javascript.0 script.js.Parser: Data: d8413d84de4165fb0742d3
          08:54:57.608	[info]	javascript.0 script.js.Parser: Data: ff334212c928425238dec20000
          08:54:57.625	[info]	javascript.0 script.js.Parser: Data: 704156ee5abeefa68dc0d000
          08:54:57.640	[info]	javascript.0 script.js.Parser: Data: 01c1c5c011429a9999bf0000
          08:54:57.656	[info]	javascript.0 script.js.Parser: Data: 0000b1e7933f61560341fb56
          08:54:57.673	[info]	javascript.0 script.js.Parser: Data: d8413d84de41000090413d84de
          08:54:57.689	[info]	javascript.0 script.js.Parser: Data: 4112c928421333090103126a
          08:54:57.704	[info]	javascript.0 script.js.Parser: Data: 2f5d46eaf01b46ea05834500
          08:54:57.720	[info]	javascript.0 script.js.Parser: Data: 00000001010101010101010101
          08:54:57.737	[info]	javascript.0 script.js.Parser: Data: 01010000000000c753000002
          08:54:57.752	[info]	javascript.0 script.js.Parser: Data: 09252a1212010d01e3200000
          08:54:57.768	[info]	javascript.0 script.js.Parser: Data: 4e5b1dc082e9434092e61740
          08:54:57.785	[info]	javascript.0 script.js.Parser: Data: e151fe3e096f1442b58b0042cc
          08:54:57.800	[info]	javascript.0 script.js.Parser: Data: 771b413f3f474202000000
          08:54:57.816	[info]	javascript.0 script.js.Parser: Data: a04100000000000000002cc502
          08:54:57.833	[info]	javascript.0 script.js.Parser: Data: 0002a320002000000002000000
          08:54:57.848	[info]	javascript.0 script.js.Parser: Data: 0000000003010808000000
          08:54:57.864	[info]	javascript.0 script.js.Parser: Data: 00000000012700890127002835
          08:54:57.880	[info]	javascript.0 script.js.Parser: Data: 1210039197ff
          

          Eintrag im Datenpunkt:

          999_waterkotte_daten.jpg

          Das versuche ich jetzt zu lösen…

          Bitte keine Fragen per PN, die gehören ins Forum!

          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

          1 Antwort Letzte Antwort
          0
          • wendy2702W Online
            wendy2702W Online
            wendy2702
            schrieb am zuletzt editiert von
            #21

            Also vorausgesetzt die Antwort der WP ist immer 253 Zeichen lang kommt es jetzt so im Datenpunkt an:

            999_waterkotte_daten_komplett.jpg

            Kannst du das so mit deinem Script weiterverarbeiten oder musst du die Leerzeichen haben?

            Bitte keine Fragen per PN, die gehören ins Forum!

            Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

            1 Antwort Letzte Antwort
            0
            • P Offline
              P Offline
              pafra
              schrieb am zuletzt editiert von
              #22

              Hi Mirko,

              nein, ich brauche jetzt keine Leerzeichen mehr.

              Das habe ich gelöst.

              Hast Du die Antwort jetzt generell auf 253 Zeichen begrenzt?

              Die ist nämlich variabel und kann mehr oder weniger Zeichen haben.

              Eine "0x10" wird nämlich verdoppelt.

              Aber lass uns das mal einfach testen.

              Kannst Du mir das Script vielleicht erst mal per PN schicken?

              Ich würde es dann ausprobieren, ob mein Auswertescript damit klar kommt.

              Wenn ja, dann schick ich Dir das Auswertescript und wir können beide mal ausführlich testen und ggf. Fehler ausmerzen.

              Gruß

              Franz

              1 Antwort Letzte Antwort
              0
              • P Offline
                P Offline
                Pman
                schrieb am zuletzt editiert von
                #23

                Du setzt den State jedes mal neu, wenn Teile (on "data") der Übertragung eintreffen, du hast am Ende also auch nur den letzten Teil der Übertragung drin. Daher solltest du warten bis die WP die Übertragung abgeschlossen hat, das wird meist durch eine ganz bestimmte Bit-Folge signalisiert.

                Diese Arbeit sollte eigentlich der Parser von serial-port übernehmen, du sagst ihm was dein Übertragungsende-Zeichen ist und er sammelt die Daten bis zu diesem Zeichen und übergibt der dir dann alles auf einmal.

                EDIT:

                Achja, der ByteLength-parser macht genau das, wonach er sich anhört, er gibt alle x Bytes etwas aus. Das ist nur sinnvoll, wenn vorher schon klar ist, welche länge die Übertragung hat.

                1 Antwort Letzte Antwort
                0
                • wendy2702W Online
                  wendy2702W Online
                  wendy2702
                  schrieb am zuletzt editiert von
                  #24

                  Hallo Pman,

                  liege ich denn da mit dem "Readline" Parser richtig?

                  Dem kann ich ja eine Delimiter mitgeben.

                  Jetzt habe ich nur das Problem das die ersten bytes am Anfang und am Ende immer FF sind, kann ich also so nicht verwenden.

                  Das Ende ist allerdings, danke an Franz, immer so:

                  10 03 xx xx FF (xx = CRC)
                  

                  Versuche das jetzt einzubauen, wobei ich noch nicht weiß wie ich das mit der CRC Summe mache. Gibt es für den Delimiter einen "Platzhalter" ?

                  Bedeutet ich setzte den Delimiter z.B.: ({ delimiter: '1003%%%%FF' }));

                  Das Prozent ist nur ein Beispiel da ich den Platzhalter nicht kenne und noch nicht weiß ob es den gibt.

                  Danke für deine Denkanstöße

                  Mirko

                  Bitte keine Fragen per PN, die gehören ins Forum!

                  Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                  1 Antwort Letzte Antwort
                  0
                  • P Offline
                    P Offline
                    Pman
                    schrieb am zuletzt editiert von
                    #25

                    Ich bin auch kein Experte für das Serialport-Modul, aber ich denke da ist der RegexParser das richtige:

                    https://node-serialport.github.io/node- … arser.html

                    vielleicht mit:

                    { regex: /\x10\x30..\xFF/ }
                    

                    Irgendwas sagt mir aber, dass du auch auf das Encoding aufpassen musst, ich weiß nicht ob das Modul standardmäßig die Daten als utf-8 oder ascii interpretiert.

                    Du kannst natürlich auch ohne Parser arbeiten und mit "on('data')" selber die Daten sammeln, bis die gewünschte Sequenz ankommt.

                    1 Antwort Letzte Antwort
                    0
                    • wendy2702W Online
                      wendy2702W Online
                      wendy2702
                      schrieb am zuletzt editiert von
                      #26

                      Hi Pman,

                      mit dem Regex muss ich mal schauen. Auf die schnelle eingebaut bringt es mir keine Ausgabe.

                      Aber das mit dem "on.('data')… ist es nicht das was wir hier benutzen:

                      port.on('data', function (data) {
                      

                      Mirko

                      Bitte keine Fragen per PN, die gehören ins Forum!

                      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                      1 Antwort Letzte Antwort
                      0
                      • P Offline
                        P Offline
                        Pman
                        schrieb am zuletzt editiert von
                        #27

                        @wendy2702:

                        Aber das mit dem "on.('data')… ist es nicht das was wir hier benutzen:

                        port.on('data', function (data) {
                        ```` `  
                        

                        Ja korrekt, du musst dann nur erstmal selber die Daten sammeln, bevor du sie in den State schreibst, dann hast du praktisch einen eigenen Parser gebaut.

                        1 Antwort Letzte Antwort
                        0
                        • wendy2702W Online
                          wendy2702W Online
                          wendy2702
                          schrieb am zuletzt editiert von
                          #28

                          Das hat leider nicht funktioniert ohne den Bytelength parser.

                          Da wurde ja der lange String immer in mehrere Zeilen aufgeteilt.

                          Wie man erst alle Daten sammelt ohne einen anderen Parser habe ich noch nicht herausgefunden.

                          Bitte keine Fragen per PN, die gehören ins Forum!

                          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                          I 1 Antwort Letzte Antwort
                          0
                          • wendy2702W wendy2702

                            Das hat leider nicht funktioniert ohne den Bytelength parser.

                            Da wurde ja der lange String immer in mehrere Zeilen aufgeteilt.

                            Wie man erst alle Daten sammelt ohne einen anderen Parser habe ich noch nicht herausgefunden.

                            I Offline
                            I Offline
                            ioStarter
                            schrieb am zuletzt editiert von
                            #29

                            @wendy2702
                            Hi,
                            dieses Thema ist ja nun schon etwas älter. Gibt es denn hier letztendlich einen Erfolg und die Daten lassen sich auslesen?
                            Viele Grüße
                            Thomas

                            wendy2702W 1 Antwort Letzte Antwort
                            0
                            • I ioStarter

                              @wendy2702
                              Hi,
                              dieses Thema ist ja nun schon etwas älter. Gibt es denn hier letztendlich einen Erfolg und die Daten lassen sich auslesen?
                              Viele Grüße
                              Thomas

                              wendy2702W Online
                              wendy2702W Online
                              wendy2702
                              schrieb am zuletzt editiert von
                              #30

                              @ioStarter

                              Ja. Auslesen geht. Irgendwo im Forum ist das Script dazu.

                              Kann ich nur am Handy gerade schlecht finden.

                              Bitte keine Fragen per PN, die gehören ins Forum!

                              Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                              1 Antwort Letzte Antwort
                              0
                              Antworten
                              • In einem neuen Thema antworten
                              Anmelden zum Antworten
                              • Älteste zuerst
                              • Neuste zuerst
                              • Meiste Stimmen


                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              769

                              Online

                              32.5k

                              Benutzer

                              81.8k

                              Themen

                              1.3m

                              Beiträge
                              Community
                              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                              ioBroker Community 2014-2025
                              logo
                              • Anmelden

                              • Du hast noch kein Konto? Registrieren

                              • Anmelden oder registrieren, um zu suchen
                              • Erster Beitrag
                                Letzter Beitrag
                              0
                              • Home
                              • Aktuell
                              • Tags
                              • Ungelesen 0
                              • Kategorien
                              • Unreplied
                              • Beliebt
                              • GitHub
                              • Docu
                              • Hilfe