Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Einsteigerfragen
    4. [gelöst] Datenpunkt mit base64 in Bilddatei schreiben

    NEWS

    • [erledigt] 15. 05. Wartungsarbeiten am ioBroker Forum

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [gelöst] Datenpunkt mit base64 in Bilddatei schreiben

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

      Okay, ich komme null weiter...

      data:image/png;base64,iVBORw0KGgoAAAANSUhEUg...
      

      Das steht im Datenpunkt und ich möchte ein Script haben dass mir beim ändern des Datenpunkts, das Bild daraus auf das Laufwerk legt. Kann mir da jemand helfen?

      1 Reply Last reply Reply Quote 0
      • OliverIO
        OliverIO last edited by OliverIO

        @accessburn

        https://stackoverflow.com/questions/6926016/how-can-i-save-a-base64-encoded-image-to-disk

        let imgstr = getState("datepunktidmitbild");
        var base64Data = imgstr.rawBody.replace(/^data:image\/png;base64,/, "");
        require("fs").writeFile("out.png", base64Data, 'base64', function(err) {
          console.log(err);
        });
        
        accessburn 1 Reply Last reply Reply Quote 0
        • accessburn
          accessburn @OliverIO last edited by

          Danke @oliverio , habe ich einfach mal kopiert und die werte angepasst.
          76938d8c-b342-4f18-97dc-7499596aea69-image.png

          haus-automatisierung OliverIO 2 Replies Last reply Reply Quote 0
          • haus-automatisierung
            haus-automatisierung Developer Most Active @accessburn last edited by haus-automatisierung

            @accessburn

            const value = getState('mihome-vacuum.0.cleanmap.map64').val;
            const base64str = value.replace(/^data:image\/png;base64,/, '');
            const base64data = Buffer.from(base64str, 'base64');
            
            writeFile('0_userdata.0', '/cleanmap.png', base64data, (err) => {
                if (!err) {
                    console.info('File written');
                } else {
                    console.error(err);
                }
            });
            
            accessburn 1 Reply Last reply Reply Quote 1
            • accessburn
              accessburn @haus-automatisierung last edited by

              @haus-automatisierung

              on({ id: [].concat(['mihome-vacuum.0.cleanmap.map64']), change: 'ne' }, async (obj) => {
              
                  const value = getState('mihome-vacuum.0.cleanmap.map64').val;
                  const base64str = value.replace(/^data:image\/png;base64,/, '');
                  const base64data = Buffer.from(base64str, 'base64');
                  
                  writeFile('0_userdata.0', '/cleanmap.png', base64data, (err) => {
                      if (!err) {
                          console.info('File written');
                      } else {
                          console.error(err);
                      }
                  });
              
                // console.error(getState('mihome-vacuum.0.cleanmap.map64').val);
              });
              

              Vielen Dank, das klappte schon mal auf anhieb.
              Macht das so Sinn mit dem "change"?

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

                @accessburn sagte in Datenpunkt mit base64 in Bilddatei schreiben:

                Macht das so Sinn mit dem "change"?

                Ja, wenn es nur eine ID ist, würde ich mir aber das Array sparen:

                on({ id: 'mihome-vacuum.0.cleanmap.map64', change: 'ne' }, async (obj) => {
                

                Und Du kannst direkt mit dem Wert arbeiten (ohne den nochmal zu holen):

                on({ id: 'mihome-vacuum.0.cleanmap.map64', change: 'ne' }, async (obj) => {
                    const value = obj.state.val;
                    const base64str = value.replace(/^data:image\/png;base64,/, '');
                    const base64data = Buffer.from(base64str, 'base64');
                    
                    writeFile('0_userdata.0', '/cleanmap.png', base64data, (err) => {
                        if (!err) {
                            console.info('File written');
                        } else {
                            console.error(err);
                        }
                    });
                });
                
                accessburn 1 Reply Last reply Reply Quote 0
                • accessburn
                  accessburn @haus-automatisierung last edited by

                  @haus-automatisierung sagte in Datenpunkt mit base64 in Bilddatei schreiben:

                  n({ id: 'mihome-vacuum.0.cleanmap.map64', change: 'ne' }, async (obj) => {

                  Sehr cool. Danke! ♥
                  Diese Sprache beherrsche ich einfach nicht. Bin in PHP groß geworden 😉

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

                    @accessburn sagte in Datenpunkt mit base64 in Bilddatei schreiben:

                    Bin in PHP groß geworden

                    Ja, ich auch.

                    Gerade 2 Tage lang alle PHP-Klassen des Online-Shops auf PHP 8.3 und strict types umgestellt...

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

                      @haus-automatisierung
                      Na das passt ja. 🙂

                      Aber Frage, würde sich das mit Blockly umsetzen lassen?

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

                        @accessburn sagte in Datenpunkt mit base64 in Bilddatei schreiben:

                        würde sich das mit Blockly umsetzen lassen?

                        Zu 90%, ja.

                        1 Reply Last reply Reply Quote 0
                        • OliverIO
                          OliverIO @accessburn last edited by

                          @accessburn

                          ahja das rawbody hatte ich nicht entfernt

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

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          747
                          Online

                          31.6k
                          Users

                          79.5k
                          Topics

                          1.3m
                          Posts

                          3
                          15
                          366
                          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