Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [Frage]Skript zur Steuerung ONVIF Kameras

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.7k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.2k

[Frage]Skript zur Steuerung ONVIF Kameras

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
79 Beiträge 27 Kommentatoren 27.5k Aufrufe 16 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • smartboartS Offline
    smartboartS Offline
    smartboart
    schrieb am zuletzt editiert von smartboart
    #55

    Hi , habe das Script am Laufen mit ner Foscam FI9938P. funktioniert soweit alles , ausser der Zoom in beide Richtungen... Hat jremand ne Idee?
    Update: ist ein Firmware Fehler der Kamera...

    1 Antwort Letzte Antwort
    0
    • M melodoi

      Hi,
      kennt jemand auch eine einfachere Möglichkeit der PTZ Steuerung wie über http get (z.B. http//user:pw/192.168.1.15/onvif/steuerung/nach_links). Ich stelle mir das sicher zu einfach vor. Aber das wäre doch schön.
      Gruß
      Sylvio

      GlasfaserG Offline
      GlasfaserG Offline
      Glasfaser
      schrieb am zuletzt editiert von
      #56

      @melodoi
      Kenne deine Kamera nicht bzw. wurde nicht angegeben .

      Bei meinen PTZ Hikvision habe ich es so, hier einige Beispiele:

      links:
      http://user:passwort@IPadresse/PTZ/channels/1/PTZControl?command=PAN_LEFT&speed=2&mode=start
      rechts:
      http://user:passwort@IPadresse//PTZ/channels/1/PTZControl?command=PAN_RIGHT&speed=2&mode=start
      stop:
      http://user:passwort@IPadresse//PTZ/channels/1/PTZControl?/PTZ/channels/1/PTZControl?command=PAN_RIGHT&speed=1&mode=stop

      55555555555555555555555.JPG
      hier ein Widget davon :

      [{"tpl":"tplIconHttpGet","data":{"g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"url":"http://user:passwort@IPadresse/PTZ/channels/1/PTZControl?command=PAN_RIGHT&speed=1&mode=stop","text":"","src":"/vis.0/Wohnen/audio_stop.png"},"style":{"left":"110px","top":"261px","width":"86px","height":"58px","z-index":"5"},"widgetSet":"jqui"}]
      
      

      Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

      smartboartS 1 Antwort Letzte Antwort
      0
      • GlasfaserG Glasfaser

        @melodoi
        Kenne deine Kamera nicht bzw. wurde nicht angegeben .

        Bei meinen PTZ Hikvision habe ich es so, hier einige Beispiele:

        links:
        http://user:passwort@IPadresse/PTZ/channels/1/PTZControl?command=PAN_LEFT&speed=2&mode=start
        rechts:
        http://user:passwort@IPadresse//PTZ/channels/1/PTZControl?command=PAN_RIGHT&speed=2&mode=start
        stop:
        http://user:passwort@IPadresse//PTZ/channels/1/PTZControl?/PTZ/channels/1/PTZControl?command=PAN_RIGHT&speed=1&mode=stop

        55555555555555555555555.JPG
        hier ein Widget davon :

        [{"tpl":"tplIconHttpGet","data":{"g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"url":"http://user:passwort@IPadresse/PTZ/channels/1/PTZControl?command=PAN_RIGHT&speed=1&mode=stop","text":"","src":"/vis.0/Wohnen/audio_stop.png"},"style":{"left":"110px","top":"261px","width":"86px","height":"58px","z-index":"5"},"widgetSet":"jqui"}]
        
        

        smartboartS Offline
        smartboartS Offline
        smartboart
        schrieb am zuletzt editiert von
        #57

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

        smartboartS 1 Antwort Letzte Antwort
        0
        • smartboartS smartboart

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

          smartboartS Offline
          smartboartS Offline
          smartboart
          schrieb am zuletzt editiert von smartboart
          #58

          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 Antwort Letzte Antwort
          0
          • smartboartS Offline
            smartboartS Offline
            smartboart
            schrieb am zuletzt editiert von
            #59

            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}
                           };
            
            GlasfaserG 1 Antwort Letzte Antwort
            0
            • smartboartS smartboart

              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}
                             };
              
              GlasfaserG Offline
              GlasfaserG Offline
              Glasfaser
              schrieb am zuletzt editiert von
              #60

              @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

              Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

              smartboartS 1 Antwort Letzte Antwort
              0
              • GlasfaserG Glasfaser

                @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

                smartboartS Offline
                smartboartS Offline
                smartboart
                schrieb am zuletzt editiert von
                #61

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

                1 Antwort Letzte Antwort
                0
                • D Offline
                  D Offline
                  dare
                  schrieb am zuletzt editiert von
                  #62

                  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 Antwort Letzte Antwort
                  0
                  • A Offline
                    A Offline
                    Alexxx2005
                    schrieb am zuletzt editiert von
                    #63

                    @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

                    GlasfaserG 1 Antwort Letzte Antwort
                    0
                    • A Alexxx2005

                      @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

                      GlasfaserG Offline
                      GlasfaserG Offline
                      Glasfaser
                      schrieb am zuletzt editiert von
                      #64

                      @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);
                      });
                      
                      

                      Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

                      A 1 Antwort Letzte Antwort
                      0
                      • GlasfaserG Glasfaser

                        @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 Offline
                        A Offline
                        Alexxx2005
                        schrieb am zuletzt editiert von Alexxx2005
                        #65

                        @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 Antwort Letzte Antwort
                        0
                        • A Offline
                          A Offline
                          Alexxx2005
                          schrieb am zuletzt editiert von
                          #66

                          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 :confused:

                          GlasfaserG 1 Antwort Letzte Antwort
                          0
                          • A Alexxx2005

                            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 :confused:

                            GlasfaserG Offline
                            GlasfaserG Offline
                            Glasfaser
                            schrieb am zuletzt editiert von Glasfaser
                            #67

                            @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

                            Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

                            1 Antwort Letzte Antwort
                            0
                            • A Offline
                              A Offline
                              Alexxx2005
                              schrieb am zuletzt editiert von
                              #68

                              @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

                              GlasfaserG 1 Antwort Letzte Antwort
                              0
                              • A Alexxx2005

                                @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

                                GlasfaserG Offline
                                GlasfaserG Offline
                                Glasfaser
                                schrieb am zuletzt editiert von
                                #69

                                @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 !

                                Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

                                1 Antwort Letzte Antwort
                                0
                                • A Offline
                                  A Offline
                                  Alexxx2005
                                  schrieb am zuletzt editiert von
                                  #70

                                  @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 Antwort Letzte Antwort
                                  0
                                  • B Offline
                                    B Offline
                                    BamBam89
                                    schrieb am zuletzt editiert von
                                    #71

                                    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

                                    GlasfaserG 1 Antwort Letzte Antwort
                                    0
                                    • B BamBam89

                                      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

                                      GlasfaserG Offline
                                      GlasfaserG Offline
                                      Glasfaser
                                      schrieb am zuletzt editiert von Glasfaser
                                      #72

                                      @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 )

                                      Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

                                      1 Antwort Letzte Antwort
                                      0
                                      • P pix

                                        Hallo,

                                        nach langem Tüfteln habe ich es diesen Sommer geschafft, meine ONVIF Kamera einzubinden.

                                        Es wird ein Node-Modul benötigt, dass im Javascript Adapter eingestellt werden muss (https://www.npmjs.com/package/node-onvif von futomi (https://github.com/futomi/node-onvif/tree/master/sample))

                                        /* Kinderzimmer Kamera 1 ONVIF
                                        Steuerung meiner einzigen ONVIF Kamera via Javascript
                                        https://github.com/futomi/node-onvif/tree/master/sample
                                          hostname: "192.168.178.XXX",
                                         username: "username",
                                         password: "passwort"
                                        
                                        Presets direkt in Kamera-Webserver (sihe hostname) speichern.
                                        Todo: 
                                        Presets speichern und dabei Snapshot für Preview in vis.0 speichern
                                        Presets löschen und dabei neutrales Vorschaubild in vis.0 erstellen
                                        Wie AutoPan oder Pattern oder Tour aufrufen?
                                        23.07.2017 Presets zugefügt
                                        14.08.2017 Test beendet, umbeannt
                                        */
                                        const fC = false;
                                        const logging = false;
                                        const dest_path = '/Users/pix/Documents/iobroker/iobroker-data/webcam/'; // OS X Pfad
                                        const pfad = 'javascript.' + instance + '.VIS.Kamera.1.PTZ.';
                                        const idSpeed     = pfad + 'Geschwindigkeit';
                                        const idStoppzeit = pfad + 'Stoppzeit';
                                        const idStopp =     pfad + 'Stopp';
                                        const idRechts =    pfad + 'rechts';
                                        const idLinks =     pfad + 'links';
                                        const idHoch =      pfad + 'hoch';
                                        const idRunter =    pfad + 'runter';
                                        const idZoomIn =    pfad + 'ZoomIn';
                                        const idZoomOut =   pfad + 'ZoomOut';
                                        const idGotoPreset =   pfad + 'gotoPreset';
                                        const onvif = require('node-onvif');
                                        const fs = require('fs');
                                        createState(idSpeed, 1, fC, {
                                           def: 1,
                                           min: 0,
                                           max: 1,
                                           name: 'Kamera 1 PTZ Geschwindkeit bei Bewegung',
                                           desc: 'Geschwindigkeit von 0-1 bei der Bewegung',
                                           type: 'number'
                                        });
                                        createState(idStoppzeit, 1, fC, {
                                           def: 0,
                                           min: 0,
                                           name: 'Kamera 1 PTZ Stoppzeit',
                                           desc: 'Dauer in Sekunden bis zum Stopp der Bewegung',
                                           type: 'number',
                                           unit: 's'
                                        });
                                        createState(idStopp, false, fC, {
                                           def: false,
                                           name: 'Kamera 1 PTZ Stopp',
                                           desc: 'Sofortiger Stopp der Bewegung',
                                           type: 'boolean',
                                           role: 'switch'
                                        });
                                        createState(idRechts, false, fC, {
                                           def: false,
                                           name: 'Kamera 1 PTZ rechts',
                                           desc: 'Bewegung nach rechts',
                                           type: 'boolean',
                                           role: 'switch'
                                        });
                                        createState(idLinks, false, fC, {
                                           def: false,
                                           name: 'Kamera 1 PTZ links',
                                           desc: 'Bewegung nach links',
                                           type: 'boolean',
                                           role: 'switch'
                                        });
                                        createState(idHoch, false, fC, {
                                           def: false,
                                           name: 'Kamera 1 PTZ oben',
                                           desc: 'Bewegung nach oben',
                                           type: 'boolean',
                                           role: 'switch'
                                        });
                                        createState(idRunter, false, fC, {
                                           def: false,
                                           name: 'Kamera 1 PTZ unten',
                                           desc: 'Bewegung nach unten',
                                           type: 'boolean',
                                           role: 'switch'
                                        });
                                        createState(idZoomIn, false, fC, {
                                           def: false,
                                           name: 'Kamera 1 PTZ Zoom in',
                                           desc: 'Bild vergößern',
                                           type: 'boolean',
                                           role: 'switch'
                                        });
                                        createState(idZoomOut, false, fC, {
                                           def: false,
                                           name: 'Kamera 1 PTZ Zoom out',
                                           desc: 'Bild verkleinern',
                                           type: 'boolean',
                                           role: 'switch'
                                        });
                                        createState(idGotoPreset, 0, fC, {
                                           def:  0,
                                           name: 'Kamera 1 PTZ Preset Wähler',
                                           desc: 'Preset auswählen (Zahlen von 1 bis X)',
                                           type: 'number'
                                        });
                                        /*
                                        log('Start the discovery process.');
                                        // Find the ONVIF network cameras
                                        onvif.startDiscovery((info) => {
                                         // Show the device name and the URL of the end point
                                         log('- ' + info.urn);
                                         log('  - ' + info.name);
                                         log('  - ' + info.xaddrs[0]);
                                        });
                                        // Stop the discovery process in 3 seconds
                                        setTimeout(() => {
                                         onvif.stopDiscovery(() => {
                                           log('Stopped the discovery process.');
                                        
                                         });
                                        }, 3000);
                                        */
                                        // Create an OnvifDevice object
                                        const device = new onvif.OnvifDevice({
                                           xaddr: 'http://192.168.178.xxx:8999/onvif/device_service',
                                           user : 'username',
                                           pass : 'passwort'
                                        });
                                        function movePTZ (ptz_x, ptz_y, ptz_z, stoptime) {
                                           // https://github.com/futomi/node-onvif#ptzmoveparams-callback
                                           device.init((error) => {
                                               if (error) {
                                                   log('[ERROR] ' + error.message);
                                                   return;
                                               } else {
                                                   // +++ CONTROL via PTZ 
                                                   var ptzlog = '';
                                                   ptz_x = (ptz_x <=1 && ptz_x >=-1) ? ptz_x : 0;
                                                   ptz_y = (ptz_y <=1 && ptz_y >=-1) ? ptz_y : 0;
                                                   ptz_z = (ptz_z <=1 && ptz_z >=-1) ? ptz_z : 0;
                                                   if (ptz_x > 0) ptzlog = 'Schwenk nach rechts';
                                                   if (ptz_x < 0) ptzlog = 'Schwenk nach links';
                                                   if (ptz_y > 0) ptzlog = 'Schwenk nach oben';
                                                   if (ptz_y < 0) ptzlog = 'Schwenk nach unten';
                                                   if (ptz_z > 0) ptzlog = 'Zoom in';
                                                   if (ptz_z < 0) ptzlog = 'Zoom out';
                                                   ptzlog += ' für ' + stoptime + 's';
                                                   if (logging) log(ptzlog);
                                                   // Create the parameters
                                                   var params = {
                                                       'speed': {
                                                           x: ptz_x, // Speed of pan (in the range of -1 to 1.0)
                                                           y: ptz_y, // Speed of tilt (in the range of -1 to 1.0)
                                                           z: ptz_z  // Speed of zoom (in the range of -1 to 1.0)
                                                       },
                                                       'timeout': 30 // seconds
                                                   };
                                                   // Move the camera
                                                   device.ptzMove(params, (error) => {
                                                       if (error) {
                                                           log(error.message, 'error');
                                                       } else {
                                                           log('Camera moved!');
                                                       }
                                                   });
                                        
                                                   // Stop to the PTZ in X seconds
                                                   setTimeout(() => {
                                                       device.ptzStop((error) => {
                                                           if (error) {
                                                               log(error.message, 'error');
                                                           } else {
                                                               log('Succeeded to stop after ' + stoptime + ' seconds.');
                                                           }
                                                       });
                                                   }, stoptime * 1000);  // stopzeit
                                               }
                                           });
                                        }
                                        function stopMoving () {
                                           device.ptzStop((error) => {
                                               if (error) {
                                                   log(error.message, 'error');
                                               } else {
                                                   log('Succeeded to stop.');
                                               }
                                           });
                                        }
                                        // 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': 'MainStream',
                                                           '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
                                           }
                                        }
                                        // Bild an telegram schicken
                                        function sendImage (pfad, bildtext) {
                                           setTimeout(function() {
                                               sendTo('telegram.1', {
                                                   text: pfad,
                                                   caption: bildtext
                                               });
                                               log('Webcam Bild per telegram verschickt');
                                           }, 2 * 1000);
                                        }
                                        function saveImage () {
                                               // Initialize the OnvifDevice object
                                               device.init((error) => {
                                                   if (error) {
                                                       log('[ERROR] ' + error.message, 'error');
                                                       return;
                                                   } else {
                                                       if (logging) log('The OnvifDevice object has been initialized successfully.');
                                                       // +++ Get the detailed device information
                                                       var device_info = device.getInformation();
                                                       if (logging) log(JSON.stringify(device_info, null, '  '));
                                                       // +++ Get the UDP stream URL
                                                       var url = device.getUdpStreamUrl();
                                                       if (logging) log('UDP-Stream: ' + url);
                                        
                                                       // +++ Get Profile
                                                       var profile = device.getCurrentProfile();
                                                       if (logging) log('Profile: ' + JSON.stringify(profile, null, '  ')); // Viele Infos
                                                       // für debug: 
                                                       //log('http: ' + profile.stream.http);
                                        
                                                       var cam_info = 'ONVIF Bild' + '\n'
                                                                    + 'Model: ' + device_info.Model + '\n'
                                                                    + 'Firmware: ' + device_info.FirmwareVersion + '\n'
                                                                    + 'Seriennummer: ' + device_info.SerialNumber + '\n'
                                                                    + 'Harware ID: ' + device_info.HardwareId + '\n'
                                                                    + 'RTSP-Stream: ' + url;     
                                        
                                                       // +++ Get the data of the snapshot
                                                       log('fetching the data of the snapshot...');
                                                       device.fetchSnapshot((error, res) => {
                                                           if (error) {
                                                               log(error.message, 'error');
                                                               return;
                                                           }
                                                           // Save the data to a file and send via telegram
                                                           fs.writeFile(dest_path + 'onvif_snapshot.jpg', res.body, function (error) { // Anpassen an die OS X gegebenheiten (oder per Telegram senden)
                                                               if (error) {
                                                                   log(error.message, 'error');
                                                               } else {
                                                                   sendImage(dest_path + 'onvif_snapshot.jpg', cam_info);
                                                                   log('Image sent!');
                                                               }
                                                           });
                                                       });
                                                   }
                                               });    
                                        }
                                        // Start beim Setzen auf true
                                        // Links
                                        on(idLinks, 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);
                                              setStateDelayed(idLinks, false, 500); // ggf , 500 + (stoppzeit * 1000)
                                           }
                                        });
                                        // rechts
                                        on({id: idRechts, val: true}, 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);
                                              setStateDelayed(idRechts, false, 500);
                                           }
                                        });
                                        // oben
                                        on(idHoch, function (obj) {
                                           if (!obj.state.ack && obj.state.val) {
                                              var stoppzeit = getState(idStoppzeit).val;
                                              var speed = getState(idSpeed).val;
                                              movePTZ(0, 1 * speed, 0, stoppzeit);
                                              setStateDelayed(idHoch, false, 500, 500);
                                           }
                                        });
                                        // rechts
                                        on(idRunter, function (obj) {
                                           if (!obj.state.ack && obj.state.val) {
                                              var stoppzeit = getState(idStoppzeit).val;
                                              var speed = getState(idSpeed).val;
                                              movePTZ(0, -1 * speed, 0, stoppzeit);
                                              setStateDelayed(idRunter, false, 500);
                                           }
                                        });
                                        // vergrößern
                                        on(idZoomIn, function (obj) {
                                           if (!obj.state.ack && obj.state.val) {
                                              var stoppzeit = getState(idStoppzeit).val;
                                              var speed = getState(idSpeed).val;
                                              movePTZ(0, 0, 1 * speed, stoppzeit);
                                              setStateDelayed(idZoomIn, false, 500);
                                           }
                                        });
                                        // verkleinern
                                        on(idZoomOut, function (obj) {
                                           if (!obj.state.ack && obj.state.val) {
                                              var stoppzeit = getState(idStoppzeit).val;
                                              var speed = getState(idSpeed).val;
                                              movePTZ(0, 0, -1 * speed, stoppzeit);
                                              setStateDelayed(idZoomOut, false, 500);
                                           }
                                        });
                                        // sofortiger Stopp
                                        on(idStopp, function (obj) {
                                           if (!obj.state.ack && obj.state.val) {
                                              stopMoving();
                                              setStateDelayed(idStopp, false, 500);
                                              setState(idGotoPreset, 0);
                                           }
                                        });
                                        // bei Bedienung aller Knöpfe sofert Preset Anzeige löschen 
                                        // klappt noch nicht so richtig, da laufende Fahrt zum Presetpunkt noch beendet wird
                                        on({
                                           id: [idStopp, idZoomOut, idZoomIn, idRunter, idHoch, idRechts, idLinks], 
                                           change: 'any'
                                        }, function (obj) {
                                           if (!obj.state.ack && obj.state.val) {
                                              setState(idGotoPreset, 0);
                                           }
                                        });
                                        // 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);
                                        */
                                        
                                        

                                        So wie das Skript hier veröffentlicht ist, läuft es bei mir (natürlich noch Nutzernamen, Passwort und Kamera-IP:Onvif-Pport anpassen).

                                        Durch setzen der Objekte kann die Kamera bewegt werden. Sieht dann bei mir so aus: 261_bildschirmfoto_2017-11-01_um_22.55.06.png
                                        Die drei Presets habe ich natürlich in der Kamera gespeichert, aber das Node-Modul lässt es auch zu, dort Positionen festzulegen und abzufahren. War mir zu aufwendig 8-) .

                                        Viel Erfolg! :D

                                        Gruß

                                        Pix

                                        PS: Leider habe ich derzeit, überhaupt keine Zeit, daraus einen Adapter zu machen. Aber geplant ist es eigentlich schon :roll:

                                        Edit 7.3.2019 nach Portierung ins neue Forum Skript bereinigt

                                        WiednitzW Offline
                                        WiednitzW Offline
                                        Wiednitz
                                        schrieb am zuletzt editiert von Wiednitz
                                        #73

                                        @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 ?

                                        WiednitzW 1 Antwort Letzte Antwort
                                        0
                                        • WiednitzW 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 ?

                                          WiednitzW Offline
                                          WiednitzW Offline
                                          Wiednitz
                                          schrieb am zuletzt editiert von
                                          #74

                                          @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 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          807

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe