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

    • [erledigt] 15. 05. Wartungsarbeiten am ioBroker Forum

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [Frage]Skript zur Steuerung ONVIF Kameras

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

      Hat das Script schonmal jemand erweitert um ptz Bewegung obenlinks, obenrechts, untenlinks, untenrechts, und die Funktion zum autonmatischen Abfahren der voreingestelleten Presetpositionen?

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

        Das sollte gehen am Beispiel hoch rechts..

        das mit den verschiedenen presets abfahren wäre mittels skript auch kein problem..Die Kamera hat dies alerdings on board muesste also auch mittels onvif gehen oder..

        const idHochRechts = pfad + 'hochrechts';
        
        createState(idHochRechts, false, fC, {def: false,name: 'Kamera 1 PTZ obenrechts',desc: 'Bewegung nach obenrechts',type: 'boolean',role: 'switch'});
        
        
        
        on(idHochRechts, function (obj) {
           if (!obj.state.ack && obj.state.val) {
              var stoppzeit = getState(idStoppzeit).val;
              var speed = getState(idSpeed).val;
              movePTZ(1 * speed , 0, 0, stoppzeit);
              movePTZ(0, 1 * speed, 0, stoppzeit);
              setStateDelayed(idHochRechts, false, 500);
           }
        });
        
        1 Reply Last reply Reply Quote 0
        • smartboart
          smartboart last edited by

          noch ne Frage ..habe noch Probleme mit dem profiletoken.
          habe davon 2 in der Kamera... prof0 und prof1.
          die scheinen immer abwechselnd aktiv zu sein...Wenn die Presetfahrt nicht funktioniert muss ich im script den profiletoken wieder ändern dann gehts wieder.
          Wenn es wieder nicht geht wieder zurück zum anderen...Jemand ne Idee wie ich das lösen kann?

                     var ptz = device.services.ptz;
                     if (ptz) {
                         var params = {
                             'ProfileToken': 'prof1',
                             'PresetToken' : presetNumber.toString(),
                             'Speed'       : {'x': 1, 'y': 1, 'z': 1}
                         };
          
          Glasfaser 1 Reply Last reply Reply Quote 0
          • Glasfaser
            Glasfaser @smartboart last edited by

            @smartboart

            Leider kann ich dir dazu nicht weiterhelfen ….
            Hatte es auch mal versucht es auf meine Hikvison PTZ Kameras umzustricken , aber bin mehr auf die Lösung zu den " http " Ansteuerungen umgeschwenkt . ( siehe oben )

            Es ist nur eine einmalige Sache gewesen die Buttons dazu zu belegen .
            Rechts - Links - Unten - Oben
            Oben links - oben rechts
            unten links - unten rechts
            Stop
            Zoom in - Zoom out
            4 x PTZ Anfahrten

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

              @Glasfaser danke, das funktioniert mit meiner cam leider nicht so...

              1 Reply Last reply Reply Quote 0
              • D
                dare last edited by

                Hi,
                Hat da bitte wer eine Ahnung wo ich bei erfolgreicher installation des ONVIF Adapter die Status bzw. Steuerobjekte für die PTZ Cam finde ?
                Bei den Objekten sehe ich ledglich den Ordner ONVIV 0 und den Unterordner mit der IP der CAM -> connection = true
                Die Cam ist eine H.VIEW HV-PTZ500. Mit dem Onfiv Device Manager kann ich die Cam steuern liveBild sehen usw...
                Was mache ich hier falsch bzw. braucht man zur Steuerung der Cam noch zusätzlich zu dem Onvif Adapter etwas

                BG dare

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

                  @pix

                  ist es möglich die 5MP Dome Kamera von YoLuke einzubinden ?

                  Habe es versucht mit deinem Skript , auch dem Port auf 80
                  geändert aber er meldet mir :

                  javascript.0
                  2020-01-13 20:37:49.336
                  info
                  (9808) script.js.common.PTZ_Kamera: [ERROR] Failed to initialize the device: Error: 404 Not Found
                  javascript.0
                  2020-01-13 20:37:48.309
                  info
                  (9808) script.js.common.PTZ_Kamera: [ERROR] Failed to initialize the device: Error: 404 Not Found
                  javascript.0
                  2020-01-13 20:37:24.672
                  info
                  (9808) script.js.common.PTZ_Kamera: registered 15 subscriptions and 0 schedules 
                  

                  Beim Aufruf im Browser : http://192.168.86.34:80/onvif/device_service

                  meldet er mir :

                  Error 404: Not Found
                  File not found
                  
                  

                  Grüße Alex

                  Glasfaser 1 Reply Last reply Reply Quote 0
                  • 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
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            710
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

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