Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Gelöst: Verwendung Dynamischer Namen im Basic Image

    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

    Gelöst: Verwendung Dynamischer Namen im Basic Image

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

      Hallo ich habe folgende Herausforderung: Die RING an meinem Ferienhaus liefert mir Snapshots, die sehen vom Namen her etwa so aus: "snapshot53727335_1604943864756.jpg". Ich möchte diese Bilder gerne automatisch sobald ein neues Bild gesendet wird in einem Widget Basic Image darstellen. Das einzige beständige an dem Dateinamen ist das "snapshot" am Anfang.
      Der Speicherort sieht so aus: C:\iobroker\SmartHome\iobroker-data\files\ring.0\doorbell_53727335
      Wie kann ich das lösen?
      Michael

      EDIT: Nach langen suchen habe ich hier im Forum einen Ansatz gefunden. Ich habe zwei kleine Scripte, das erste schaut sich einen Vorgegebenen Ordner an und sucht die zuletzt gespeicherte Datei.
      Der Dateiname wird dann in einen Datenpunkt geschrieben, den sich das zweite Script abholt und diese Datei dann in einen VIS Ordner schreibt, damit ich das Bild dann auch in der View sehen kann.
      Script 1:

      /*****Letztes Kamerabild Giethoorn**************************************
      **    November 2020
      **    Outlook, Kamera
      **    
      **    Ermittelt das letzte gespeicherte Bild
      **    geändert:11.11.20
      ************************************************************/
      
      var path = require('path');
      var fs = require('fs');
      var request = require('request');
      
      createState('Giethoorn.CAM.Steg.LetztesBild');
       schedule("*/1 * * * *", function () {
      var getMostRecent = function (dir, cb) {
      	var dir = path.resolve(dir);
      	var files = fs.readdir(dir, function (err, files) {
      		var sorted = files.map(function(v) {
      			var filepath = path.resolve(dir, v);
      			return {
      				name:v,
      				time:fs.statSync(filepath).mtime.getTime()
      			}; 
      		})
      		.sort(function(a, b) { return b.time - a.time; })
      		.map(function(v) { return v.name; });
       
      		if (sorted.length > 0) {
      			cb(null, sorted[0]);
      		} else {
      			cb('Y U NO have files in this dir?');
      		}
      	})
      }
      getMostRecent('/Ferienhaus/Steg', function (err, recent) {
      	if (err) console.error(err);
      	console.log(recent);
          setState('Giethoorn.CAM.Steg.LetztesBild', recent);
      });
      });
      

      Script 2:

      /*****Kamera Giethoorn**************************************
      **    Oktober 2020
      **    Outlook, Kamera
      **    
      **    Stellt die Snaps der NL Kameras für VIS zur Verfügung
      **    geändert:23.10.20
      ************************************************************/
      var request = require('request');
      var fs = require('fs');
      schedule("*/1 * * * *", function () {
          var dummy =getState('javascript.3.Giethoorn.CAM.Steg.LetztesBild').val;
          console.log (dummy);
      //const body = fs.readFileSync('/Ferienhaus/Eingang/01Eingang.jpg');
      //writeFile("vis.0", "/NL/01Eingang.jpg", body);
      const body1 = fs.readFileSync('/Ferienhaus/Steg/'+dummy);
      writeFile("vis.0", "/NL/01Steg.jpg", body1);
      });
      

      Sorry die Scripte sind noch in der Erprobung, daher nicht komplett zu Ende gedacht. Aber klappt soweit.
      Michael

      M 1 Reply Last reply Reply Quote 0
      • M
        MCU @michihorn last edited by MCU

        @michihorn Sobald ein neues Bild generiert wird, kannst du das neue Bild kopieren auf den Namen snapshot.jpg.
        Prüfen auf Änderung vom Bildnamen und dann KOPIE ausführen.

        /vis.0/HOME/BILD_TUER.jpg (Wichtig Muss im vis.0-Verzeichnis sein!!!)

        e6fabca6-779b-442a-9514-660eb2222968-image.png

        M 1 Reply Last reply Reply Quote 0
        • M
          michihorn @MCU last edited by

          @MCU Guten Morgen, die Umbenennung des Bildes oder kopieren und speichern soll automatisch passieren, also per Script

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

          Support us

          ioBroker
          Community Adapters
          Donate

          732
          Online

          31.9k
          Users

          80.1k
          Topics

          1.3m
          Posts

          javascript
          2
          3
          228
          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