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.
    • 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

                        924
                        Online

                        31.8k
                        Users

                        80.0k
                        Topics

                        1.3m
                        Posts

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