Navigation

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

    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 7
    • Best 0
    • Groups 1

    philipplindnerDE

    @philipplindnerDE

    0
    Reputation
    3
    Profile views
    7
    Posts
    0
    Followers
    0
    Following
    Joined Last Online
    Website www.philipp-lindner.de Location Leipzig Age 38

    philipplindnerDE Follow
    Starter

    Latest posts made by philipplindnerDE

    • RE: IP Kamera Bilder via Telegram, 2. Daten Punt Auslösung

      @asgothian ok das habe ich Versanden.
      das Problem was ich jetzt habe ist wenn beide Bedingungen erfüllt sind würd die Aktion ausgeführt. So ball ich eine ändere ist die Aktion aktiv. Was sie eigentlich nich sein dürfte. Muss ich da was zurückstellen?

      Meine Cod sieht aktuell so aus:

      // Konfiguration
      // -------------------------------------------------------------------------
            //2. Bewerbungs angabe
      const bewegung02 ="mqtt.1.Philipp_Lindner_Überwachung.arlamStatus";
            // Objekt-ID des Bewegungsmelders
      const bewegung01 = "mqtt.1.Philipp_Lindner_Überwachung.cameras.flurcam_01.motion";
            // URL zur Kamera um ein Image (jpg) zu erhalten
      const cam_url = "http://192.168.1.23:8090/grab.jpg?oid=2&size=1280x720";
            // Pfadangabe für die Speicherung der Bilder, der Pfad muss existieren
      const dest_path = '/opt/iobroker/temp/cam';
            // Anzahl der Bilder, die vorgehalten werden sollen
      const imageCountMax = 4;                
            // Prefix für die Bildnamen
      const imageNamePre = "Flur_"; 
      
      // -------------------------------------------------------------------------
      // Scriptteil
      // -------------------------------------------------------------------------
      var request = require('request');
      var fs      = require('fs');
      
      var Alarmanlage_status = getState(bewegung02).val;
      
      // Bild an telegram schicken 
      function sendImage (path) { 
          try {
              var stats = fs.statSync(path);
              var msg = formatDate(stats.birthtime,"DD.MM.YYYY hh:mm:ss") + " " + path.substring(path.lastIndexOf('/')+1);
              sendTo('telegram.0', {
                  text:                   path,
                  caption:                msg, 
                  disable_notification:   true
              });
          }
          catch(err) { if (err.code != "ENOENT") log(err); }     
      }
      
      // löscht eine Datei synchron (wartet auf das Ergebnis)
      function fsUnlinkSync(path) {
          try {
              var stats = fs.statSync(path);
              try { fs.unlinkSync(path); }
              catch(err) { if (err.code != "ENOENT") log(err); }     
          }
          catch(err) { if (err.code != "ENOENT") log(err); }
      }
      
      // benennt eine Datei synchron um (wartet auf das Ergebnis)
      function fsRenameSync(oldPath, newPath) {
          try {
              var stats = fs.statSync(oldPath);
              try { fs.renameSync(oldPath, newPath); }
              catch(err) { if (err.code != "ENOENT") log(err); }     
          }
          catch(err) { if (err.code != "ENOENT") log(err); }
      }
      
      // Bild speichern und senden
      function saveImage() {
          // Bild imageCountMax-1 löschen
          fsUnlinkSync( dest_path + imageNamePre + (imageCountMax-1) + ".jpg" );
          // Bilder 0..imageCountMax-2 umbenennen
          for (var i=imageCountMax-2; i >= 0; i-- ) { 
              fsRenameSync(dest_path + imageNamePre + i + ".jpg", dest_path + imageNamePre + (i+1) + ".jpg"); 
          }
          // Bild 0 löschen
          var fname = imageNamePre + "0.jpg";
          fsUnlinkSync( fname );
          // Bild holen und speichern
          request.get({url: cam_url, encoding: 'binary'}, function (err, response, body) {
              fs.writeFile(dest_path + fname, body, 'binary', function(err) {
                  if (err) {
                      log('Fehler beim Bild speichern: ' + err, 'warn');
                  } else {
                      // dem Filesystem 2 Sek Zeit zum Speichern lassen
                      setTimeout(function() { sendImage(dest_path + fname); }, 2000); 
                  }
              }); 
          });
      }
      
      // sofort ein Bild senden und nach 10 Sek erneut
      function onEvent(t) {
          saveImage();
          setTimeout(function() { saveImage(t); }, 10 * 1000); 
          log('onEVenter go ('+t+')', 'info');
      }
      
      // Ereignisroutine
      
      /*function auloeser(){
          log('Überwachunbg test start', 'info');
          on({id:bewegung02, change:'ne'}, function(obj) {Alarmanlage_status=obj.state.val;})
          
          if (Alarmanlage_status =="1"){
              log('Arlame Scharf!','info');
              on({id:bewegung01, val:true}, function(obj){onEvent(obj); log ('BEWEGUNG!','info');})
              
          }
          log('test ende', 'info');
      }*/
      
      let Alarmanlage_status2 = 0;
      on({id:bewegung02, change:'ne'}, function(obj) {Alarmanlage_status=obj.state.val;});
       
      on({id:bewegung01, val:true}, function(obj){onEvent(obj); if (Alarmanlage_status == 1){log('BEWEGUNG!','info');}});
       
      
      //schedule("*/5 * * * * *", function(){ auloeser()});
      
      
      // manuelle Ausführung (Test)
      onEvent("test");
      

      Nachtrag: so das Problem habe ich jetzt gelöst, bin selber bescheuert umd habe den fehler nicht gesehen:

      let Alarmanlage_status2 = 0;
      on({id:bewegung02, change:'ne'}, function(obj) {Alarmanlage_status=obj.state.val;});
       
      on({id:bewegung01, val:true}, function(obj){if (Alarmanlage_status == 1){onEvent(obj); log('BEWEGUNG!','info');}});
      

      Danke an @Asgothian für die auf klährung.

      posted in Skripten / Logik
      philipplindnerDE
      philipplindnerDE
    • RE: IP Kamera Bilder via Telegram, 2. Daten Punt Auslösung

      @asgothian Danke! aber eigentlich kommt die Schaf Schaltung über meine PHP Skript und da über den MQTT Broker in den IOBroker . Aber so get es auch danke noch mal. 🙂

      posted in Skripten / Logik
      philipplindnerDE
      philipplindnerDE
    • RE: IP Kamera Bilder via Telegram, 2. Daten Punt Auslösung

      @fabian1 habe ich mir auch so überlegt. Na Ja es Geht und ich habe was Über Java Skript gelernt. 🤗 😜

      posted in Skripten / Logik
      philipplindnerDE
      philipplindnerDE
    • RE: IP Kamera Bilder via Telegram, 2. Daten Punt Auslösung

      so Meine Skript mit 2 Auslöse Datenpunkte ist Verding. Danke nochmal an @Asgothian der Denkansatz wahr richtig hier für alle die sich auch für das Thema interessieren:

      // Konfiguration
      // -------------------------------------------------------------------------
            //2. Bewerbungs angabe
      const bewegung02 ="mqtt.1.Philipp_Lindner_Überwachung.arlamStatus";
            // Objekt-ID des Bewegungsmelders
      const bewegung01 = "mqtt.1.Philipp_Lindner_Überwachung.cameras.flurcam_01.motion";
            // URL zur Kamera um ein Image (jpg) zu erhalten
      const cam_url = "http://192.168.xxx.xxx:8090/grab.jpg?oid=2&size=1280x720";
            // Pfadangabe für die Speicherung der Bilder, der Pfad muss existieren
      const dest_path = '/opt/iobroker/temp/cam';
            // Anzahl der Bilder, die vorgehalten werden sollen
      const imageCountMax = 4;                
            // Prefix für die Bildnamen
      const imageNamePre = "Flur_"; 
      
      // -------------------------------------------------------------------------
      // Scriptteil
      // -------------------------------------------------------------------------
      var request = require('request');
      var fs      = require('fs');
      
      var Alarmanlage_status = getState(bewegung02).val;
      
      // Bild an telegram schicken 
      function sendImage (path) { 
          try {
              var stats = fs.statSync(path);
              var msg = formatDate(stats.birthtime,"DD.MM.YYYY hh:mm:ss") + " " + path.substring(path.lastIndexOf('/')+1);
              sendTo('telegram.0', {
                  text:                   path,
                  caption:                msg, 
                  disable_notification:   true
              });
          }
          catch(err) { if (err.code != "ENOENT") log(err); }     
      }
      
      // löscht eine Datei synchron (wartet auf das Ergebnis)
      function fsUnlinkSync(path) {
          try {
              var stats = fs.statSync(path);
              try { fs.unlinkSync(path); }
              catch(err) { if (err.code != "ENOENT") log(err); }     
          }
          catch(err) { if (err.code != "ENOENT") log(err); }
      }
      
      // benennt eine Datei synchron um (wartet auf das Ergebnis)
      function fsRenameSync(oldPath, newPath) {
          try {
              var stats = fs.statSync(oldPath);
              try { fs.renameSync(oldPath, newPath); }
              catch(err) { if (err.code != "ENOENT") log(err); }     
          }
          catch(err) { if (err.code != "ENOENT") log(err); }
      }
      
      // Bild speichern und senden
      function saveImage() {
          // Bild imageCountMax-1 löschen
          fsUnlinkSync( dest_path + imageNamePre + (imageCountMax-1) + ".jpg" );
          // Bilder 0..imageCountMax-2 umbenennen
          for (var i=imageCountMax-2; i >= 0; i-- ) { 
              fsRenameSync(dest_path + imageNamePre + i + ".jpg", dest_path + imageNamePre + (i+1) + ".jpg"); 
          }
          // Bild 0 löschen
          var fname = imageNamePre + "0.jpg";
          fsUnlinkSync( fname );
          // Bild holen und speichern
          request.get({url: cam_url, encoding: 'binary'}, function (err, response, body) {
              fs.writeFile(dest_path + fname, body, 'binary', function(err) {
                  if (err) {
                      log('Fehler beim Bild speichern: ' + err, 'warn');
                  } else {
                      // dem Filesystem 2 Sek Zeit zum Speichern lassen
                      setTimeout(function() { sendImage(dest_path + fname); }, 2000); 
                  }
              }); 
          });
      }
      
      // sofort ein Bild senden und nach 10 Sek erneut
      function onEvent(t) {
          saveImage();
          setTimeout(function() { saveImage(); }, 10 * 1000); 
          log('onEVenter go ('+t+')', 'info');
      }
      
      // Ereignisroutine
      
      function auloeser(){
          log('Überwachunbg test start', 'info');
          on({id:bewegung02, change:'ne'}, function(obj) {Alarmanlage_status=obj.state.val;})
          
          if (Alarmanlage_status =="1"){
              log('Arlame Scharf!','info');
              on({id:bewegung01, val:true}, function(obj){onEvent(obj); log ('BEWEGUNG!','info');})
              
          }
          log('test ende', 'info');
      }
      
      schedule("*/5 * * * * *", function(){ auloeser()});
      
      
      // manuelle Ausführung (Test)
      onEvent("test");
      

      der Skript läuft aller 5 sec. durch und prüft die punkte ab.

      posted in Skripten / Logik
      philipplindnerDE
      philipplindnerDE
    • RE: IP Kamera Bilder via Telegram, 2. Daten Punt Auslösung

      Habe Ihre Parameter Eingebaut. Gehet aber nicht. Schuldigen wenn ich so doof bin. JavaScript habe ich nur Grundkenntnisse.

      // Konfiguration
      // -------------------------------------------------------------------------
            //2. Bewwgung angabe
      const bewegung02 ="mqtt.1.Philipp_Lindner_Überwachung.arlamStatus";
            // Objekt-ID des Bewegungsmelders
      const bewegung01 = "mqtt.1.Philipp_Lindner_Überwachung.cameras.flurcam_01.motion";
            // URL zur Kamera um ein Image (jpg) zu erhalten
      const cam_url = "http://192.168.1.23:8090/grab.jpg?oid=2&size=1280x720";
            // Pfadangabe für die Speicherung der Bilder, der Pfad muss existieren
      const dest_path = '/opt/iobroker/temp/cam';
            // Anzahl der Bilder, die vorgehalten werden sollen
      const imageCountMax = 4;                
            // Prefix für die Bildnamen
      const imageNamePre = "Flur_"; 
      
      // -------------------------------------------------------------------------
      // Scriptteil
      // -------------------------------------------------------------------------
      var request = require('request');
      var fs      = require('fs');
      
      var Alarmanlage_status = getState(bewegung02).val;
      
      ....
      
      on({id:bewegung02, change:'ne'}, function(obj) {Alarmanlage_status = obj.state.val;})
      
      if(Alarmanlage_status=="1"){
      
      on({id: bewegung01, val: true}, function (obj) {
          onEvent( obj );
      })}
      
      posted in Skripten / Logik
      philipplindnerDE
      philipplindnerDE
    • RE: IP Kamera Bilder via Telegram, 2. Daten Punt Auslösung

      @asgothian Danke für ihre Antwort ich probiere es mal aus. Die Variabel "bewerbung02" soll bewergung02 heißen

      posted in Skripten / Logik
      philipplindnerDE
      philipplindnerDE
    • IP Kamera Bilder via Telegram, 2. Daten Punt Auslösung

      Hallo,

      ich habe eine Frage, wie kann man Bilder via Telegram schicken die durch 2 Daten punkte aktiviert werden?

      ich habe eine Javascript gefunden was durch 1 Daten Punkt aktiviert wird (den bewegung02 habe ich hinzugefügt):

      // Konfiguration
      // -------------------------------------------------------------------------
            //2. Bewerbungs angabe
      const bewerbung02 ="mqtt.1.Philipp_Lindner_Überwachung.arlamStatus";
            // Objekt-ID des Bewegungsmelders
      const oidLichtBewmelderTuer = "mqtt.1.Philipp_Lindner_Überwachung.cameras.flurcam_01.motion";
            // URL zur Kamera um ein Image (jpg) zu erhalten
      const cam_url = "http://192.168.1.23:8090/grab.jpg?oid=2&size=1280x720";
            // Pfadangabe für die Speicherung der Bilder, der Pfad muss existieren
      const dest_path = '/opt/iobroker/temp/cam';
            // Anzahl der Bilder, die vorgehalten werden sollen
      const imageCountMax = 4;                
            // Prefix für die Bildnamen
      const imageNamePre = "Flur_"; 
      
      // -------------------------------------------------------------------------
      // Scriptteil
      // -------------------------------------------------------------------------
      var request = require('request');
      var fs      = require('fs');
      
      // Bild an telegram schicken 
      function sendImage (path) { 
          try {
              var stats = fs.statSync(path);
              var msg = formatDate(stats.birthtime,"DD.MM.YYYY hh:mm:ss") + " " + path.substring(path.lastIndexOf('/')+1);
              sendTo('telegram.0', {
                  text:                   path,
                  caption:                msg, 
                  disable_notification:   true
              });
          }
          catch(err) { if (err.code != "ENOENT") log(err); }     
      }
      
      // löscht eine Datei synchron (wartet auf das Ergebnis)
      function fsUnlinkSync(path) {
          try {
              var stats = fs.statSync(path);
              try { fs.unlinkSync(path); }
              catch(err) { if (err.code != "ENOENT") log(err); }     
          }
          catch(err) { if (err.code != "ENOENT") log(err); }
      }
      
      // benennt eine Datei synchron um (wartet auf das Ergebnis)
      function fsRenameSync(oldPath, newPath) {
          try {
              var stats = fs.statSync(oldPath);
              try { fs.renameSync(oldPath, newPath); }
              catch(err) { if (err.code != "ENOENT") log(err); }     
          }
          catch(err) { if (err.code != "ENOENT") log(err); }
      }
      
      // Bild speichern und senden
      function saveImage() {
          // Bild imageCountMax-1 löschen
          fsUnlinkSync( dest_path + imageNamePre + (imageCountMax-1) + ".jpg" );
          // Bilder 0..imageCountMax-2 umbenennen
          for (var i=imageCountMax-2; i >= 0; i-- ) { 
              fsRenameSync(dest_path + imageNamePre + i + ".jpg", dest_path + imageNamePre + (i+1) + ".jpg"); 
          }
          // Bild 0 löschen
          var fname = imageNamePre + "0.jpg";
          fsUnlinkSync( fname );
          // Bild holen und speichern
          request.get({url: cam_url, encoding: 'binary'}, function (err, response, body) {
              fs.writeFile(dest_path + fname, body, 'binary', function(err) {
                  if (err) {
                      log('Fehler beim Bild speichern: ' + err, 'warn');
                  } else {
                      // dem Filesystem 2 Sek Zeit zum Speichern lassen
                      setTimeout(function() { sendImage(dest_path + fname); }, 2000); 
                  }
              }); 
          });
      }
      
      // sofort ein Bild senden und nach 10 Sek erneut
      function onEvent() {
          saveImage();
          setTimeout(function() { saveImage(); }, 10 * 1000); 
      }
      
      // Ereignisroutine
      on({id: oidLichtBewmelderTuer, val: true}, function (obj) {
          onEvent( obj );
      })
      
      // manuelle Ausführung (Test)
      onEvent();
      

      Zu meine Aufbau:

      ich verwende als IP Kamera die TP-Link Tapo C100 wie dies auch über das ONVIF Standard verfügt. Dies und 2 weiter laufen in die IP Kamera Überwachungssoftware iSpy auf. Dies ist mit meine MQTT Broker verbunden so bekomme ich mit wen eine Bewerbung Stad findet. Dies soll aber nur ausgelöst werden wenn die Software in Arlammodus gestezt ist. Dies kann ich dank der mitgelieferten API Schitstelle an und aus Schalten, welches ich über ein PHP script ereiche:

      <?php
      $rfid           =$_REQUEST["rf"];
      $modi           =$_REQUEST["modi"];
      
      $MYSQL_Host     ="192.168.X.X:XXXX";
      $MYSQL_User     ="smarthome";
      $MYSQL_pass     ="XXXXXXXX";
      $MYSQL_DBNa     ="smarthome";
      
      require "/var/www/html/ESP/vendor/autoload.php";
      $MQTT_Server="192.168.X.XX";
      $MQTT_Port      =1883;
      $MQTT_CID       ="SmartHomeSteuetung";
      $MQTT_User      ="XXXXXXX";
      $MQTT_Pass      ="XXXXXXX";
      $MQTT_Pfad      ="Philipp Lindner Überwachung/arlamStatus";
      
      //Ausage;
      echo "RFID: ".$rfid."<br>";
      echo "Modi: ".$modi."<br>";
      
      //programm
      $db=mysqli_connect("192.168.X.X:XXXX","smarthome","XXXXXXX","smarthome");
      
      $sql="SELECT * FROM user WHERE rfid LIKE '".$rfid."'";
      
      $res=mysqli_query($db,$sql);
      $num=mysqli_num_rows($res);
      
      if($num>"2" or $num=="0"){echo"Error no RFID"; mysqli_error($db);  exit;}
      while($d=mysqli_fetch_assoc($res))
      {
              //Berechtigung Prüfen Ob RFID ID Schalten Darf (Mindesten level 5)
              if($d["level"]=="5")
              {
                 //Dar nur Aktivirt werden
                 if($modi==="Aktiv")
                 {
                      shell_exec("curl http://192.168.XXX.XXX:8090/command.cgi?cmd=Arm");
                      echo"Alles OK AKTIV<br><a href='http://192.168.X.XXX:8082/vis/?pi#Überwaung'>Zurück</a>";
                      //MQTT Meldung!
                      $mqtt = new \PhpMqtt\Client\MQTTClient($MQTT_Server, $MQTT_Port, $MQTT_CID);
                      $mqtt->connect($MQTT_User,$MQTT_Pass);
                      $mqtt->publish($MQTT_Pfad, '1', 0);
                      $mqtt->close();
                }
                //Dar nur Aktivirt werden
                if($modi==="DeAktivieren")
                {
                      shell_exec("curl http://192.168.XXX.XXX:8090/command.cgi?cmd=disArm");
                      echo"Alles OK DEAKTVIRT<br><a href='http://192.168.XXX.XXX:8082/vis/?pi#Überwaung'>Zurück</a>";
                      //MQTT Meldung!
                      $mqtt = new \PhpMqtt\Client\MQTTClient($MQTT_Server, $MQTT_Port, $MQTT_CID);
                      $mqtt->connect($MQTT_User,$MQTT_Pass);
                      $mqtt->publish($MQTT_Pfad, '0', 0);
                      $mqtt->close();
               }
               else
              {
               echo"Kein Modi gesetzt Bitte wählem<br><a href='?rf=".$rfid."&modi=Aktiv'>Aktiviren</a> | <a href='?rf=".$rfid."&modi=DeAktivieren'>DeAktivieren</a><br><a href='http://192.168.XXX.XXX:8082/vis/?pi#Überwaung'>Zurück</a>";
              }
             }
      echo"<br><a href='http://192.168.1.23:8082/vis/?pi#Überwaung'>Zurück</a>";
      }
      ?>
      

      das zu Verschickende Kamera Bild kommt auch über die API Schnitstelle.

      Es soll wie Folgt ablaufen: System ist Schaft geschalten (MQTT: Philipp Lindner Überwachung/arlamStatu = 1) und wir über den Daten Punkt (mqtt.1.Philipp_Lindner_Überwachung.cameras.flurcam_01.motion) eine Bewegung festgestellt > Bild über Telegram Ferschicken.

      Vielen Dank in voraus.

      posted in Skripten / Logik
      philipplindnerDE
      philipplindnerDE
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo