Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Thomas Huber

    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

    • Profile
    • Following 0
    • Followers 0
    • Topics 1
    • Posts 16
    • Best 1
    • Groups 1

    Thomas Huber

    @Thomas Huber

    Starter

    1
    Reputation
    7
    Profile views
    16
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    Thomas Huber Follow
    Starter

    Best posts made by Thomas Huber

    • RE: Datenpunkt lässt sich nicht in VIS anzeigen

      @hans_m
      Ich habe das mit Material-Design Widgets von Scrounger umgesetzt. Im Fall der Programmwahl mit dem Select Widget. Da muss dann für die einzelnen Programme im Auswahlmenü eine Jsonliste, mit folgendem Inhalt, erstellt werden:

      [
         {
         	"text": "Auto 45-65°",
         	"value": "Dishcare.Dishwasher.Program.Auto2",
         	"icon": "state-machine"
         },
         {
         	"text": "Eco 50°",
         	"value": "Dishcare.Dishwasher.Program.Eco50",
         	"icon": "leaf"
         },	
         {
         	"text": "Intensiv 70°",
         	"value": "Dishcare.Dishwasher.Program.Intensiv70",
         	"icon": "thermometer-high"
         },
         {
         	"text": "Express 60°",
         	"value": "Dishcare.Dishwasher.Program.Kurz60",
         	"icon": "fast-forward-60"
         },
         {
         	"text": "Maschinenpflege",
         	"value": "Dishcare.Dishwasher.Program.MachineCare",
         	"icon": "creation"
         },
         {
         	"text": "Leise 50°C",
         	"value": "Dishcare.Dishwasher.Program.NightWash",
         	"icon": "volume-mute"
         },
         {
         	"text": "Vorspülen",
         	"value": "Dishcare.Dishwasher.Program.PreRinse",
         	"icon": "water"
         }
      ]
      


      Hier noch ein paar Bilder wie es in VIS aussieht:
      Programmwahl.png
      Screenshot 2024-01-28 082014.png
      Gruß Thomas

      posted in Einsteigerfragen
      Thomas Huber
      Thomas Huber

    Latest posts made by Thomas Huber

    • RE: [gelöst] Startseite des web-Adapters ist leer

      @BananaJoe @ESP8266
      ich habe aktuell ein ähnliches Problem. Ich befinde mich aber hinter einem Reverse Proxy (Traefik), wenn ich den Admin oder die Vis über den DNS Eintrag aufrufen will bleibt der Bildschirm weiß. Rufe aber die Seiten mit der IP Adresse auf läd alles wie gewohnt.

      posted in Error/Bug
      Thomas Huber
      Thomas Huber
    • RE: Umbau von request auf httpGet schickt nur den Pfad

      @andre
      hat hier vielleicht eine Lösung, da das Script ursprünglich von seinem Blog ist 🤔

      posted in JavaScript
      Thomas Huber
      Thomas Huber
    • RE: Umbau von request auf httpGet schickt nur den Pfad

      @crunchip said in Umbau von request auf httpGet schickt nur den Pfad:

      @thomas-huber sagte in Umbau von request auf httpGet schickt nur den Pfad:

      das

      was genau?

      Das Script aus dem verlinkten Thread

      Hier nochmal angepasst an meine Umgebung:

      // -------------------------------------------------------------------------
      // Dieses Script überwacht den Zustand eines Bewegungsmelders und speichert bei
      // Aktivierung ein Bild einer Überwachnungskamera in einem Vereichnis und sendet
      // dieses via Telegram.0-Adapter.
      // Die Speicherung der Bilder erfolgt als "Stack", d.h. das aktuellste Bild bekommt
      // immer den Suffix "0" und es werden n Bilder mit den Suffixen 1..n-1 vorgehalten
       
      // -------------------------------------------------------------------------
       
      // -------------------------------------------------------------------------
      // Konfiguration
      // -------------------------------------------------------------------------
      const adapterId = '0_userdata.0';
       
      // Pfadangabe für die Speicherung der Bilder, der Pfad muss existieren
      const imageDir = '/IPCams/FDT';
       
      // Prefix für die Bildnamen
      const imageNamePrefix = 'FDT';
       
      // Objekt-ID des Bewegungsmelders
      const oidLichtBewmelderTuer = 'Datenpunkte.0.QigaQuad.Klingel';
       
      // Anzahl der Bilder, die vorgehalten werden sollen
      const imageCountMax = 8;
       
      const camUrl = 'http://xxx.xxx.10.99:88/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=xxxr&pwd=xxx'; 
      // const cameraUsername = 'ixxr';
      // const cameraPassword = 'Txx!';
       
      // -------------------------------------------------------------------------
      // Scriptteil
      // -------------------------------------------------------------------------
       
      // Bild an telegram schicken
      function sendImage(path) { 
          try {
              const caption = `${formatDate(new Date(), 'DD.MM.YYYY hh:mm:ss')} ${path.substring(path.lastIndexOf('/') + 1)}`;
       
              sendTo('telegram.0', {
                  text: path,
                  caption, 
                  disable_notification: true,
              });
          } catch (err) {
              log(err);
          }
      }
       
      // Bild holen, speichern und senden
      async function saveImage() {
          const prefix = `${imageDir}/${imageNamePrefix}`;
       
          await delFileAsync(adapterId, `${prefix}${imageCountMax - 1}.jpg`);
       
          // Bilder 0..imageCountMax - 2 umbenennen
          for (let i = imageCountMax - 2; i >= 0; i-- ) {
              await renameFileAsync(adapterId, `${prefix}${i}.jpg`, `${prefix}${i + 1}.jpg`);
          }
       
          const latestFilePath = `${prefix}0.jpg`;
       
          httpGet(camUrl, {
              timeout: 2000,
              responseType: 'arraybuffer',
              },
          (error, response) => {
              if (!error) {
                  writeFile(adapterId, latestFilePath, response.data, (err) => {
                      if (err) {
                          log('Fehler beim Bild speichern: ' + err, 'warn');
                      } else {
                          const tempFilePath = createTempFile(latestFilePath, response.data);
                          sendImage(tempFilePath);
                      }
                  });
              } else {
                  console.error(error);
              }
          }
      )};
       
      on({ id: oidLichtBewmelderTuer, change: 'ne' }, async (obj) => {
          if (obj.state.val) {
              // sofort ein Bild senden und nach 3, 6 und 9 Sek erneut
              saveImage();
       
              setTimeout(saveImage, 3 * 1000);
              setTimeout(saveImage, 6 * 1000);
              setTimeout(saveImage, 9 * 1000);
          }
      });
      
      

      Gruß Thomas

      posted in JavaScript
      Thomas Huber
      Thomas Huber
    • RE: Umbau von request auf httpGet schickt nur den Pfad

      @crunchip
      das funktioniert auch nicht, folgende Fehler werden ausgegeben:

      
      javascript.0
      2024-06-15 10:06:57.492	error	Error: Not exists at ObjectsInRedisClient._rm (file:///opt/iobroker/node_modules/@iobroker/db-objects-redis/src/lib/objects/objectsInRedisClient.ts:1891:23) at processTicksAndRejections (node:internal/process/task_queues:95:5) at Immediate.<anonymous> (file:///opt/iobroker/node_modules/@iobroker/db-objects-redis/src/lib/objects/objectsInRedisClient.ts:1378:39)
      
      javascript.0
      2024-06-15 10:06:57.492	error	Error: Not exists
      
      javascript.0
      2024-06-15 10:06:57.492	error	An error happened which is most likely from one of your scripts, but the originating script could not be detected.
      

      Gruß Thomas

      posted in JavaScript
      Thomas Huber
      Thomas Huber
    • Umbau von request auf httpGet schickt nur den Pfad

      Hallo zusammen,

      ich weiß das Thema wurde schon mehrfach behandelt, aber ich komme mit den hier angebotenen Lösungen nicht ans Ziel.
      Mein Problem ist, nach dem Umbau von "request" auf "httpGet", wird mir nur der Pfad geschickt und die Bilder werden auch erst gar nicht gespeichert.
      Vielleicht kann sich das einer mal anschauen 😕

      // JavaScript zur Verwendung in ioBroker
      //
      // Das Script speichert bei Auslösung (z.B. durch einen Bewegungsmelder) drei Bilder einer Überwachungskamera in frei definierbaren Zeitabständen und versendet das erste Bild per telegram.
      // Über telegram können dann bei Bedarf auch die weiteren zwei Bilder abgefragt werden. Natürlich ist auch eine manuelle Auslösung (ohne Bewegungsmelder) per telegram möglich.
      // Der Automatische Versand der Bilder kann über telegram auch aktiviert/ deaktiviert werden. 
      //
      // Mehr Infos zum Script und dessen Einrichtung hier:  
        
      // Hier können Einstellungen vorgenommen werden:
       
      // Variablen
      var cam_img = 'http://x.x.10.99:88/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=xxx&pwd=xxx';   // Pfad zum Kamerabild (Im Beispiel eine Foscam)
      var trigger_auto = 'Datenpunkte.0.QigaQuad.Klingel'/*Klingel*/; // Datenpunkt zur autmatischen Auslösung (Status des Bewegungsmelders, Fenster-/ Türkontakt oder der Türklingel)
      var trigger_manu = 'javascript.0.notify.telegram.cam.trigger_manu'; // Datenpunkt zur manuellen Auslösung (wird bei Bedarf automatisch angelegt)
      var trigger_more_img = 'javascript.0.notify.telegram.cam.trigger_more_img'; // Datenpunkt zur Abfrage weiterer Bilder (wird bei Bedarf automatisch angelegt)
      var disable = 'javascript.0.notify.telegram.cam.disable';   // Aktivierung/Deaktivierung des Versands per telegram (wird bei Bedarf automatisch angelegt)
      var interval = '3000';  // Verzögerung der weiteren Aufnahmen in Millisekunden
      var img_path = '0_userdata.0';   // Pfad zum lokalen Speicherort der aufgenommenen Bilder. Bilder werden bei jeder Auslösung überschrieben. Pfad muss schon vorhanden sein!
       
       
      // -------------------------------------------
      // Ab hier braucht in der Regel nichts mehr geändert zu werden. Also Finger weg wenn du nicht weißt was du tust. :) 
      // -------------------------------------------
       
      // Datenpunkte anlegen (Kann unter Umständen auskommentiert werden, wenn die Datenpunkte manuell angelegt wurden.)
      //createState( trigger_auto, false, {name: 'Datenpunkt zur autmatischen Auslösung'});
      //createState( trigger_manu, false, {name: 'Datenpunkt zur manuellen Auslösung'});
      //createState( trigger_more_img, false, {name: 'Datenpunkt zur Abfrage weiterer Bilder'});
      //createState( disable, false, {name: 'Aktivierung/Deaktivierung des Versands per telegram'});
       
      // Variablendeklaration und Initialisierung bei Scriptstart
      var stateTrigger_auto = getState(trigger_auto).val;
      var stateTrigger_manu = getState(trigger_manu).val;
      var stateTrigger_more_img = getState(trigger_more_img).val;
      var stateDisable = getState(disable).val;
      var fs      = require('fs');
      var timer; 
       
      // Funktionen
      // -------------------------------------------
       
      // Funktion Bilder versenden
      function sendImage (pfad) {
          setTimeout(function() {
              sendTo('telegram.0', {
          text:   pfad,
          reply_markup: {
              keyboard: [
                  ['Mehr Bilder', 'Danke']
              ],
              resize_keyboard:   true,
              one_time_keyboard: true
          }
      });
              log('Webcam Bild per telegram verschickt.');
          }, 2000);
      }
      
      // Funktion Bilder speichern
      function saveImage() {
          httpGet(cam_img, { responseType: 'arraybuffer' }, async (error, response) => {
              fs.writeFile(img_path + 'cam1_1.jpg', response.data, function(err) {
              if (error) {
                  log('Fehler beim Speichern von Bild 1: ' + err, 'warn');
              } else {
                  log('Bild 1 gespeichert.');
                  sendImage(img_path + 'cam1_1.jpg');
              }
            }); 
          });
           
          if (timer) {
              clearTimeout(timer);
              timer = null;
          } 
          timer = setTimeout(function () {
          httpGet(cam_img, { responseType: 'arraybuffer' }, async (error, response) => {
              fs.writeFile(img_path + 'cam1_1.jpg', response.data, function(err) {
                  if (error) {
                      log('Fehler beim Speichern von Bild 2: ' + err, 'warn');
                  } else {
                      log('Bild 2 gespeichert.');
              }
            }); 
          });
              }, interval);
          timer = setTimeout(function () {
          httpGet(cam_img, { responseType: 'arraybuffer' }, async (error, response) => {
              fs.writeFile(img_path + 'cam1_1.jpg', response.data, function(err) {
                  if (error) {
                      log('Fehler beim Speichern von Bild 3: ' + err, 'warn');
                  } else {
                      log('Bild 3 gespeichert.');        }
            }); 
          });
              }, 2 * interval);
      }
       
       
      // Trigger für die verschiedenen Aktionen
      // -------------------------------------------
       
      // trigger_auto
      on(trigger_auto, function(dp) {
          stateTrigger_auto = dp.newState.val;
          stateDisable = getState(disable).val;
          if (stateTrigger_auto === true && stateDisable === false) {
              saveImage();
              // setState(trigger_auto, false);     // Option zum Zurücksetzen des Triggers. Standardmäßig auskommentiert, da sich der Bewegungsmelder automatisch zurück setzt. Bei Bedarf "//" am Zeilenafang entfernen.
          }
      });
       
      // trigger_more_img
      on(trigger_more_img, function(dp) {
          stateTrigger_more_img = dp.newState.val;
          if (stateTrigger_more_img === true) {
              sendImage(img_path + 'cam1_2.jpg');
              sendImage(img_path + 'cam1_3.jpg');
              setState(trigger_more_img, false);
          }
      });
       
      // trigger_manu
      on(trigger_manu, function(dp) {
          stateTrigger_manu = dp.newState.val;
          if (stateTrigger_manu === true) {
              saveImage();
              setState(trigger_manu, false);
          }
      });
      

      Gruß lcd4linux

      posted in JavaScript
      Thomas Huber
      Thomas Huber
    • RE: Test Adapter Solarlog v2.x.x latest

      @forelleblau

      seid dem letzten Update des Solar-Log Base 15 auf die Firmwareversion 6.1.0 Build 163 - 12.04.2024 ist keine saubere Verbindung mehr gegeben.
      im Log stehen nur Meldungen mit "access denied" und es wird kein Objekt mehr aktualisiert.

      Gruß Thomas

      posted in Tester
      Thomas Huber
      Thomas Huber
    • RE: Datenpunkt lässt sich nicht in VIS anzeigen

      @hans_m
      Ich habe das mit Material-Design Widgets von Scrounger umgesetzt. Im Fall der Programmwahl mit dem Select Widget. Da muss dann für die einzelnen Programme im Auswahlmenü eine Jsonliste, mit folgendem Inhalt, erstellt werden:

      [
         {
         	"text": "Auto 45-65°",
         	"value": "Dishcare.Dishwasher.Program.Auto2",
         	"icon": "state-machine"
         },
         {
         	"text": "Eco 50°",
         	"value": "Dishcare.Dishwasher.Program.Eco50",
         	"icon": "leaf"
         },	
         {
         	"text": "Intensiv 70°",
         	"value": "Dishcare.Dishwasher.Program.Intensiv70",
         	"icon": "thermometer-high"
         },
         {
         	"text": "Express 60°",
         	"value": "Dishcare.Dishwasher.Program.Kurz60",
         	"icon": "fast-forward-60"
         },
         {
         	"text": "Maschinenpflege",
         	"value": "Dishcare.Dishwasher.Program.MachineCare",
         	"icon": "creation"
         },
         {
         	"text": "Leise 50°C",
         	"value": "Dishcare.Dishwasher.Program.NightWash",
         	"icon": "volume-mute"
         },
         {
         	"text": "Vorspülen",
         	"value": "Dishcare.Dishwasher.Program.PreRinse",
         	"icon": "water"
         }
      ]
      


      Hier noch ein paar Bilder wie es in VIS aussieht:
      Programmwahl.png
      Screenshot 2024-01-28 082014.png
      Gruß Thomas

      posted in Einsteigerfragen
      Thomas Huber
      Thomas Huber
    • RE: ZigBee neue Version 1.4.4

      @arteck said in ZigBee neue Version 1.4.4:

      @thomas-huber ist der gelistet ?

      Wenn du so frägst, dann wohl nicht. Dachte ich mir doch, das es nicht so einfach ist 😞

      Sieht so aus als wäre es baugleich mit dem A6121(lumi.lock.v1) Vima Smart Lock.

      posted in Tester
      Thomas Huber
      Thomas Huber
    • RE: ZigBee neue Version 1.4.4

      @arteck
      ist es möglich folgendes Türschloss hinzu zu fügen:

      Türschloss NX4661

      Screenshot 2021-03-08 154049.png
      Screenshot 2021-03-08 154114.png
      Screenshot 2021-03-08 154141.png

      Danke im voraus.

      posted in Tester
      Thomas Huber
      Thomas Huber
    • RE: Test Adapter shuttercontrol v2.0.x

      @simatec said in Test Adapter shuttercontrol v0.6.x:

      @Thomas-Huber
      Hast du den Abgleich der Rollläden States in den Extra-Einstellungen aktiviert und deine Rollladenaktoren mal kalibriert?
      Ich habe hier von einigen gehört, dass 100% bei shelly auch mal durchaus 99,5% sein können.

      Das sieht shuttercontrol als manuellen Eingriff und deaktiviert bis zum Abend die Automatik.
      Wie sehen die states "position" aus?

      Stimmen die Werte exakt mit den in shuttercontrol konfigurierten überein?

      Hallo, hab meinen letzten Post editiert, es scheint an den Namen gelegen zu haben. Sorry für die Umstände.

      Thomas

      posted in Tester
      Thomas Huber
      Thomas Huber
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo