Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Über Mqtt empfangenes Bild in Datei speichern

    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

    Über Mqtt empfangenes Bild in Datei speichern

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

      Hallo

      Ich empfange über MQTT eine Bilddatei. Diese möchte ich nun wieder als solche speichern. Hierzu muss ich die Rohdaten als Bytearray vom Broker direckt wieder in die Datei schreiben. Ich habe bisher folgendes schon lauffähig:

      const mqtt = require('mqtt')
      const url = 'mqtt://xxx.yyy.zzz.www:aaaa'
      const options = {
        // Clean session
        clean: true,
        connectTimeout: 4000,
        // Authentication
        // clientId: 'emqx_test',
        username: 'name',
        password: 'passwort',
      }
      const client  = mqtt.connect(url, options)
      
      var dest_path = 'zielpfad'
      var kamera = '123456'
      
      
      client.on('connect', function () {
        console.log('Connected')
        // Subscribe to a topic
        client.subscribe('top1' + kamera + '/picture_file', function (err) {
          if (!err) {
            // Publish a message to a topic
            // client.publish('test', 'Hello mqtt') // Mögliche Testnachricht an MQQT senden um verbindung zu bestätigen und im IO Broker zu verarbeiten
          }
        })
      })
      
      // Receive messages
      client.on('message', function (topic, message) {
        // message is Buffer
        console.log(message.toString())
        client.end()
      })
      code_text
      

      Wichtig ist dieser Bereich:

      client.on('message', function (topic, message) {
        // message is Buffer
        console.log(message.toString())
        client.end()
      code_text
      

      In VB würde ich das mit einem Streamwriter machen aber ich habe leider keine Ahnung wie ich das in Javascript machen kann, da ich dort absoluter neuling bin. Kann mir jemand weiterhelfen?

      haus-automatisierung 1 Reply Last reply Reply Quote 0
      • haus-automatisierung
        haus-automatisierung Developer Most Active @Vetinari77 last edited by haus-automatisierung

        @vetinari77 Nicht getestet, aber in die Richtung:

        const fs = require('node:fs');
        
        fs.writeFileSync('/home/iobroker/meinbild.jpg', message);
        

        https://nodejs.org/docs/latest-v18.x/api/fs.html

        V 1 Reply Last reply Reply Quote 0
        • V
          Vetinari77 @haus-automatisierung last edited by

          @haus-automatisierung said in Über Mqtt empfangenes Bild in Datei speichern:

          const fs = require('node:fs');

          Danke, das ging schnell (und unerwartet einfach). Villeicht habe ich deswegen nichts finden können bei meiner Suche. 1000 Dank. Leider kann ich die Datei nicht öffnen (scheint irgendwie fehlerhaft zu sein). Ich versuche mal herauszubekommen warum das so ist.

          haus-automatisierung 1 Reply Last reply Reply Quote 0
          • haus-automatisierung
            haus-automatisierung Developer Most Active @Vetinari77 last edited by

            @vetinari77 sagte in Über Mqtt empfangenes Bild in Datei speichern:

            Ich versuche mal herauszubekommen warum das so ist.

            Unter Linux mit dem file Befehl mal genauer schauen. Meist stehen irgendwelche Zeichen davor oder dahinter, welche dort nicht hingehören. Also

            file /home/iobroker/meinbild.jpg

            V 1 Reply Last reply Reply Quote 0
            • V
              Vetinari77 @haus-automatisierung last edited by

              @haus-automatisierung

              Danke nochmal. Scheint tatsächlich kein jpg oder anderes Bildformat zu sein. Als ausgabe kommt lediglich "data". Ich glaube ich versuche mal auf einem anderen weg die Bilder zu holen. Eventuell kann ich mir vom Server den Pfad schicken lassen und das Bld dann per SFTP holen. Trotzdem noch einmal vielen lieben Dank für die Unterstützung.

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

              Support us

              ioBroker
              Community Adapters
              Donate

              969
              Online

              31.8k
              Users

              80.0k
              Topics

              1.3m
              Posts

              2
              5
              298
              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