Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [Frage]Skript zur Steuerung ONVIF Kameras

    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

    [Frage]Skript zur Steuerung ONVIF Kameras

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

      @Alexxx2005

      Hast du ONVIF in der Kamera freigegeben !?

      Hiermit kannst du es testen , ob ein ONVIF im Netzwerk vorhanden ist .
      Die Ausgabe erfolgt im LOG .

      /// ONVIF Ausgabe ioBroker 01.01.2020 Glasfaser
      
      const onvif = require('node-onvif');// 
      
      console.log('Start the discovery process.');
      // Find the ONVIF network cameras.
      // It will take about 3 seconds.
      onvif.startProbe().then((device_info_list) => {
       console.log(device_info_list.length + ' devices were found.');
       // Show the device name and the URL of the end point.
       device_info_list.forEach((info) => {
         console.log('- ' + info.urn);
         console.log('  - ' + info.name);
         console.log('  - ' + info.xaddrs[0]);
       });
      }).catch((error) => {
       console.error(error);
      });
      
      

      A 1 Reply Last reply Reply Quote 0
      • A
        Alexxx2005 @Glasfaser last edited by Alexxx2005

        @Glasfaser

        tolles Skript von dir , ja er meldet bei mir das er etwas findet allerdings unter 8080

        javascript.0
        2020-01-13 21:04:04.629
        info
        (9808) script.js.common.Onvif_testen: - http://192.168.86.34:8080/onvif/device_service 
        javascript.0
        2020-01-13 21:04:04.629
        info
        (9808) script.js.common.Onvif_testen: - IPCAM 
        

        Habe jetzt mal das WebInterface der Kamera geöffnet wenn ich dann die
        Kamera im VIS bewege , bewegt sie sich auch im WebInterface , ich verstehe
        nur nicht warum das Widget kein Bild anzeigt , als Quelle wird hier auf :

        {javascript.0.Xeoma.Kamera.1.IP} verwiesen , benötige ich ein weiteres Skript
        zum Bild anzeigen ?

        Grüße Alex

        1 Reply Last reply Reply Quote 0
        • A
          Alexxx2005 last edited by

          Ich vermute das hat mit diesem hier noch zu tun :

          const dest_path = 'C:/Program Files/iobroker/SmartHome/iobroker-data/webcam/'; // OS X Pfad
          
          const pfad = 'javascript.' + instance + '.VIS.Kamera.1.PTZ.';
          

          hier meckert er noch das der Pfad auch nicht stimmt 😕

          Glasfaser 1 Reply Last reply Reply Quote 0
          • Glasfaser
            Glasfaser @Alexxx2005 last edited by Glasfaser

            @Alexxx2005

            Er hat doch Windows ... du nicht 😉
            Nimm das erstmal als Füller ... :

            const dest_path = '/opt/iobroker/iobroker-data/files/vis.0/snapsonvif.jpg';
            

            @Alexxx2005 sagte in [Frage]Skript zur Steuerung ONVIF Kameras:

            @Glasfaser
            Habe jetzt mal das WebInterface der Kamera geöffnet wenn ich dann die
            Kamera im VIS bewege , bewegt sie sich auch im WebInterface , ich verstehe
            nur nicht warum das Widget kein Bild anzeigt , als Quelle wird hier auf :
            {javascript.0.Xeoma.Kamera.1.IP} verwiesen , benötige ich ein weiteres Skript
            zum Bild anzeigen ?

            Meinst du das :
            Dort kannst du deine URL auch eingeben (Snapshot )

            http://user:passwort@.......

            1.JPG

            1 Reply Last reply Reply Quote 0
            • A
              Alexxx2005 last edited by

              @Glasfaser said in [Frage]Skript zur Steuerung ONVIF Kameras:

              snapsonvif.jpg';

              Okay ja ich benötige einen Windows Pfad da iobroker bei mir auf einem
              Nuc mit Windows läuft.

              Verstehe jetzt nur nicht ob die Klammern \ oder so / hin müssen normal ja :

              C:\Program Files\iobroker\SmartHome\iobroker-data\files\vis.0\snap.jpg
              

              Das nächste große Problem ist wie finde ich die Snapshot URL heraus
              da es sich um eine Kamera handelt die nicht so gängig ist (5MP YoLuke
              PTZ) , habe ich mit dem Programm Ispy64 hunderte URL`s ermittelt aber
              die wo ich mal getestet haben gehen nicht :

              rtsp://admin:admin@192.168.86.34:554/1
              rtsp://192.168.86.34/12:
              http://admin:admin@192.168.86.34/snap.jpg?JpegCam=0
              

              Kennst du zufällig Möglichkeiten oder gibt es ein Skript sowas auszulesen ?

              Danke, Grüße Alex

              Glasfaser 1 Reply Last reply Reply Quote 0
              • Glasfaser
                Glasfaser @Alexxx2005 last edited by

                @Alexxx2005

                Mit dem Windows Pfad kann ich dir nicht helfen ….

                Kennst du zufällig Möglichkeiten oder gibt es ein Skript sowas auszulesen ?

                Von Jey Cee der Adapter onvif v0.1.x , ist sehr gut !

                1 Reply Last reply Reply Quote 0
                • A
                  Alexxx2005 last edited by

                  @Glasfaser

                  habe nun festgestellt das nach einem Iobroker neustart die URL

                  http://<IP>/web/tmpfs/snap.jpg
                  http://Name:PW@<IP>/snap.jpg?JpegCam=1
                  

                  funktioniert.

                  Was noch nicht funktioniert ist der PTZ Present ist es möglich diese
                  Steuerung im Skript anzupassen ?

                  Nach Stundenlangen Googeln kam ich auf diesen Pfad was durch ändern
                  der Number=1 die verschiedenen Postionen anfährt.

                  http://<IP>/cgi-bin/hi3510/param.cgi?cmd=preset&-act=goto&-status=1&-number=2
                  

                  Grüße Alex

                  1 Reply Last reply Reply Quote 0
                  • B
                    BamBam89 last edited by

                    Hallo zusammen,

                    ich möchte mich gerne hier mit ran hängen.
                    Auch ich möchte meine Cams gerne mit VIS visualisieren.
                    Allerdings bin ich noch recht neu in der Materie und an der ein oder anderen Stelle hakt es noch ein wenig.
                    Eine Stelle an der es gewaltig hakt, ist die Einbindung der CAMS.

                    Ich habe mir den Adapter Onvif Support geladen. Die Kameras gesucht und auch gefunden.
                    Allerdings komme ich nun nicht weiter. Unter den Objekten wird mir die Kamera angezeigt

                    18f1f7aa-48e6-4fc1-b466-67db37649b9f-image.png

                    Aber wie komme ich nun an die Bilder?

                    Danke euch und schönes Wochenende
                    Gruß BamBam89

                    Glasfaser 1 Reply Last reply Reply Quote 0
                    • Glasfaser
                      Glasfaser @BamBam89 last edited by Glasfaser

                      @BamBam89

                      Du hast den offiziellen Onvif Adapter installiert ...

                      Nimm den Test Adapter onvif v0.1.x ,dazu kann man sagen , er funktioniert .

                      ( aber vorher den Adapter komplett deinstallieren )

                      1 Reply Last reply Reply Quote 0
                      • Wiednitz
                        Wiednitz @pix last edited by Wiednitz

                        @pix

                        Grüsse,

                        ich habe das Script auch am Laufen. Funktioniert soweit, wenn ich die States direkt in den Objekten ändere, zum Beispiel gotopreset auf 7, Kamera geht auf Position 7. Wenn ich den State jedoch durch Blockly ändere, Datenpunkt steuern oder aktualisieren, dann wird zwar die Zahl eingetragen, aber die Kamera bewegt sich nicht !?

                        Wo ist der Fehler ?

                        Wiednitz 1 Reply Last reply Reply Quote 0
                        • Wiednitz
                          Wiednitz @Wiednitz last edited by

                          @wiednitz

                          Ich antworte mir mal selbst....

                          Nachdem ich alles aus dem Skript außer die gotopreset Funktion gelöscht habe, funktioniert es mit dem Blockly steuere Befehl.

                          R 1 Reply Last reply Reply Quote 0
                          • R
                            Ritschy2000 @Wiednitz last edited by

                            @wiednitz könntest du eventl. deine gekürzte Version online stellen?
                            Habe ein ähnliches Problem und brauche eigentlich auch nur die gotopreset Funktion.
                            Danke

                            Wiednitz 1 Reply Last reply Reply Quote 0
                            • Wiednitz
                              Wiednitz @Ritschy2000 last edited by

                              @ritschy2000

                              const fC = false;
                              const logging = false;
                              const pfad = 'javascript.' + instance + '.Yucheng.PTZ.';
                              const idGotoPreset =   pfad + 'gotoPreset';
                              const onvif = require('node-onvif');
                              const fs = require('fs');
                              
                              createState(idGotoPreset, 0, fC, {
                                 def:  0,
                                 name: 'Kamera 1 PTZ Preset Wähler',
                                 desc: 'Preset auswählen (Zahlen von 1 bis X)',
                                 type: 'number'
                              });
                              
                              // Create an OnvifDevice object
                              const device = new onvif.OnvifDevice({
                                 xaddr: 'http://192.xxx.xx.xx:80/onvif/device_service',
                                 user : 'xxxxx',
                                 pass : 'xxxxx'
                              });
                              
                              // https://github.com/futomi/node-onvif#gotopresetparams-callback-method
                              function gotoPreset (presetNumber) { // 1,2,3 kommt als ganze Zahl
                                 if (presetNumber > 0) {
                                     device.init((error) => {
                                         if (error) {
                                             log('[ERROR] ' + error.message, 'error');
                                             return;
                                         } /*else {*/
                                         // The OnvifServicePtz object
                                         var ptz = device.services.ptz;
                                         if (ptz) {
                                             //var profile = device.getCurrentProfile(); // debug
                                             //log(JSON.stringify(profile, null, '  ')); // debug log
                               
                                             var params = {
                                                 'ProfileToken': 'PROFILE_000',
                                                 'PresetToken' : presetNumber.toString(),
                                                 'Speed'       : {'x': 1, 'y': 1, 'z': 1}
                                             };
                               
                                             device.services.ptz.gotoPreset(params, (error, result) => {
                                                 if (error) {
                                                     log('[ERROR] ' + error.message, 'error');
                                                 } else {
                                                     if (logging) log('Preset: ' + JSON.stringify(result.data, null, '  ')); // statt result.['data']
                                                     log('Camera moved to Preset #' + presetNumber.toString());
                                                 }
                                             });
                                         } else {
                                             log('[ERROR] Your ONVIF network camera does not support the PTZ service.');
                                         }
                                         //}
                                     });
                                 } else {
                                     log('Preset für Kamera 1 kein valider Preset-Wert'); // debug log
                                 }
                              }
                              
                              // zum bereits gespeicherten Preset X fahren (Ganze Zahl, kommt aus VIS, Scenes oder Script)
                              on(idGotoPreset, function (obj) {
                                 if (!obj.state.ack && obj.state.val) {
                                    gotoPreset(parseInt(obj.state.val,10)); // wird später zu einem String gewandelt
                                    //setStateDelayed(idGotoPreset, 0, 500); // reset
                                 }
                              });
                              // Skriptstart
                              //setTimeout(saveImage, 15000);
                              // setTimeout(goHome, 1000);
                              /*
                              setTimeout(function() {
                                 movePTZ(1,0,0,5); // rechts, 2 sek
                              }, 1000);
                              */
                               
                              
                              

                              Achtung ! Hab den Profile Token an meine Kamera angepasst und verwende anderen Pfad zu den Objekten !

                              Habe jetzt für meine Cam endlich die http xml requests herausgefunden mit einem speziellen Programm. Eine API Dokumentation wie für Hikvision ist für meine Yucheng/Esunstar nirgends zu finden. Node-onvif ist irgendwie langsam, XML reagiert sofort, werde das wohl nicht weiter verwenden. Mit XML kann man alle Funktionen aufrufen, die auch die Konfiguration der Cam im Browser bietet.

                              Glasfaser 1 Reply Last reply Reply Quote 0
                              • Glasfaser
                                Glasfaser @Wiednitz last edited by

                                @wiednitz sagte in [Frage]Skript zur Steuerung ONVIF Kameras:

                                Eine API Dokumentation wie für Hikvision ist für meine Yucheng/Esunstar nirgends zu finden.

                                Teste mal :

                                Schwenkt nach rechts :

                                http://user:passwort@192.168.178.53/PTZ/channels/1/PTZControl?command=PAN_RIGHT&speed=2&mode=start
                                

                                Schwenken stop :

                                http://user:passwort@192.168.178.53/PTZ/channels/1/PTZControl?command=PAN_RIGHT&speed=1&mode=stop
                                
                                Wiednitz 1 Reply Last reply Reply Quote 0
                                • Wiednitz
                                  Wiednitz @Glasfaser last edited by Wiednitz

                                  @glasfaser

                                  nein alles schon durch. Für PTZ 1 (bei cgi oder xml Aufruf muss dafür 0 eingetragen werden) funktioniert folgendes Script:

                                  var request = require('request');
                                  var options = {
                                    'method': 'PUT',
                                    'url': 'http://192.168.10.62/PTZ/1/Presets/Goto',
                                    'headers': {
                                      'Host': '192.168.10.62',
                                      'Connection': 'keep-alive',
                                      'Cache-Control': 'max-age=0',
                                      'Authorization': 'Basic XXXXXXXXXXXXXX',
                                      'Accept': '*/*',
                                      'DNT': '1',
                                      'X-Requested-With': 'XMLHttpRequest',
                                      'If-Modified-Since': '0',
                                      'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36',
                                      'Content-Type': 'application/x-www-form-urlencoded',
                                      'Origin': 'http://192.168.10.62',
                                      'Referer': 'http://192.168.10.62/main.html',
                                      'Accept-Encoding': 'gzip, deflate',
                                      'Accept-Language': 'de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7',
                                      'Cookie': 'userInfo=XXXXXXXXXXXXXXX; stream=1; language=de; commandPort=6060; rtspPort=554'
                                    },
                                    form: {
                                      'Param1': '0'
                                    }
                                  };
                                  request(options, function (error, response) {
                                    if (error) throw new Error(error);
                                    console.log(response.body);
                                  });
                                  setStateDelayed('javascript.' + instance +  '.scriptEnabled.' + name.slice(10), false, 3*1000);
                                  

                                  Url, Cookie und Parameter gilt es eben herauszufinden, ohne Doku ein Rätsel, aber nun gelöst 🤗

                                  1 Reply Last reply Reply Quote 0
                                  • B
                                    Bully85 last edited by

                                    Hallo welches Widget benutzt ihr um den livestream anzuzeigen?

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

                                    Support us

                                    ioBroker
                                    Community Adapters
                                    Donate

                                    697
                                    Online

                                    31.8k
                                    Users

                                    80.0k
                                    Topics

                                    1.3m
                                    Posts

                                    27
                                    79
                                    23325
                                    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