Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. Zustandsänderungen loggen

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    16
    1
    248

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    4.6k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.3k

Zustandsänderungen loggen

Scheduled Pinned Locked Moved ioBroker Allgemein
16 Posts 6 Posters 1.1k Views 4 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • DSt88D DSt88

    Hi,
    auch wenn dieses Topic schon recht alt ist, würde ich gerne nachfragen, wie das Loggen von allen Datenpunkten (oder beschränkt auf die Datenpunkte eines Adapters) realisiert werden kann.
    Der Hintergrund: Ich habe eine Goliath Türsprechanlage. Bei Betätigung der Klingel soll via Messenger meines Vertrauens ein Snapshot von der Goliath-Kamera gesendet werden. Per Workaround konnte ich (mit dem ONVIF-Adapter, da es keinen ioBroker-Goliath-Adapter gibt) die Kamera einbinden und kann mir Snapshots ans Handy schicken. Auslöser dafür soll nun eben die Türklingel sein, die ich leider nicht als Event im ONVIF-Adapter finde (was irgendwie logisch ist). Aber ich glaube fest daran, das es einen State gibt, der sich verändert wenn die Türklingel betätigt wird (auch weil ja die Videoübertragung von Goliath beginnt, wenn geklingelt wird). Da es aber schätzomativ 100-200 Datenpunkte im ONVIF-Adapter gibt, möchte ich alle Zustandsänderungen davon loggen (ohne diese zB einzeln erst konfigurieren zu müssen).

    CodierknechtC Offline
    CodierknechtC Offline
    Codierknecht
    Developer Most Active
    wrote on last edited by
    #6

    @dst88 sagte in Zustandsänderungen loggen:

    wie das Loggen von allen Datenpunkten (oder beschränkt auf die Datenpunkte eines Adapters) realisiert werden kann

    schätzomativ 100-200 Datenpunkte

    Du willst die ins Log schreiben? Wie? Blockly?

    59c44fc0-46d2-4fc4-9b67-613d3d9f2d6b-image.png
    Das solltest Du aber nicht dauerhaft tun, sondern nur solange, bis Du den passenden DP gefunden hast.

    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

    Proxmox 9.1.1 LXC|8 GB|Core i7-6700
    HmIP|ZigBee|Tasmota|Unifi
    Zabbix Certified Specialist
    Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

    DSt88D 1 Reply Last reply
    2
    • CodierknechtC Codierknecht

      @dst88 sagte in Zustandsänderungen loggen:

      wie das Loggen von allen Datenpunkten (oder beschränkt auf die Datenpunkte eines Adapters) realisiert werden kann

      schätzomativ 100-200 Datenpunkte

      Du willst die ins Log schreiben? Wie? Blockly?

      59c44fc0-46d2-4fc4-9b67-613d3d9f2d6b-image.png
      Das solltest Du aber nicht dauerhaft tun, sondern nur solange, bis Du den passenden DP gefunden hast.

      DSt88D Offline
      DSt88D Offline
      DSt88
      wrote on last edited by
      #7

      Danke für den Input!
      Mit Blockly hab ich leider keinen Output in den Logs generieren können. Ich habe daher versucht, entsprechende Javascript-Zeilen zu programmieren. Folgendes führt aber leider ebenso zu keinen Log-Einträgen:

      on({ id: 'onvif.0.*', change: 'any' }, function (obj) {
          log('blablabla');   
      });
      

      bzw. auch die Übersetzung von Blockly in JS:

      on({ id: [].concat(Array.prototype.slice.apply($('onvif.0.*'))), change: 'any' }, async (obj) => {
          log('blablabla');   
      });
      

      Verwende ich vielleicht die Wildcards falsch?

      HomoranH 2 Replies Last reply
      0
      • DSt88D DSt88

        Danke für den Input!
        Mit Blockly hab ich leider keinen Output in den Logs generieren können. Ich habe daher versucht, entsprechende Javascript-Zeilen zu programmieren. Folgendes führt aber leider ebenso zu keinen Log-Einträgen:

        on({ id: 'onvif.0.*', change: 'any' }, function (obj) {
            log('blablabla');   
        });
        

        bzw. auch die Übersetzung von Blockly in JS:

        on({ id: [].concat(Array.prototype.slice.apply($('onvif.0.*'))), change: 'any' }, async (obj) => {
            log('blablabla');   
        });
        

        Verwende ich vielleicht die Wildcards falsch?

        HomoranH Offline
        HomoranH Offline
        Homoran
        Global Moderator Administrators
        wrote on last edited by
        #8

        @dst88 sagte in Zustandsänderungen loggen:

        hab ich leider keinen Output in den Logs generieren können.

        hast du die js Instanz und das log auf debug?
        wenn nicht muss der Baustein auf Info gestellt werden.

        kein Support per PN! - Fragen im Forum stellen -
        Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
        Das Forum freut sich über eine Spende. Benutzt dazu den Spendenbutton im Header. Danke!
        der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

        1 Reply Last reply
        1
        • DSt88D DSt88

          Danke für den Input!
          Mit Blockly hab ich leider keinen Output in den Logs generieren können. Ich habe daher versucht, entsprechende Javascript-Zeilen zu programmieren. Folgendes führt aber leider ebenso zu keinen Log-Einträgen:

          on({ id: 'onvif.0.*', change: 'any' }, function (obj) {
              log('blablabla');   
          });
          

          bzw. auch die Übersetzung von Blockly in JS:

          on({ id: [].concat(Array.prototype.slice.apply($('onvif.0.*'))), change: 'any' }, async (obj) => {
              log('blablabla');   
          });
          

          Verwende ich vielleicht die Wildcards falsch?

          HomoranH Offline
          HomoranH Offline
          Homoran
          Global Moderator Administrators
          wrote on last edited by
          #9

          @dst88 sagte in Zustandsänderungen loggen:

          Verwende ich vielleicht die Wildcards falsch?

          @Codierknecht
          war da nicht was mit $elector?

          kein Support per PN! - Fragen im Forum stellen -
          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
          Das Forum freut sich über eine Spende. Benutzt dazu den Spendenbutton im Header. Danke!
          der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

          CodierknechtC 1 Reply Last reply
          1
          • HomoranH Homoran

            @dst88 sagte in Zustandsänderungen loggen:

            Verwende ich vielleicht die Wildcards falsch?

            @Codierknecht
            war da nicht was mit $elector?

            CodierknechtC Offline
            CodierknechtC Offline
            Codierknecht
            Developer Most Active
            wrote on last edited by Codierknecht
            #10

            @homoran sagte in Zustandsänderungen loggen:

            war da nicht was mit $elector?

            Yes. Das sollte in JS so aussehen:

            on({id: $('onvif.0.*').toArray(), change: 'any'}, function (obj) {
                log('blablabla');   
            });
            

            Edit
            @DSt88 Wenn das Script gestartet wird, sollte im Log etwas stehen wie

            registered 123 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
            

            "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

            Proxmox 9.1.1 LXC|8 GB|Core i7-6700
            HmIP|ZigBee|Tasmota|Unifi
            Zabbix Certified Specialist
            Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

            DSt88D 1 Reply Last reply
            2
            • CodierknechtC Codierknecht

              @homoran sagte in Zustandsänderungen loggen:

              war da nicht was mit $elector?

              Yes. Das sollte in JS so aussehen:

              on({id: $('onvif.0.*').toArray(), change: 'any'}, function (obj) {
                  log('blablabla');   
              });
              

              Edit
              @DSt88 Wenn das Script gestartet wird, sollte im Log etwas stehen wie

              registered 123 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
              
              DSt88D Offline
              DSt88D Offline
              DSt88
              wrote on last edited by DSt88
              #11

              Vielen Dank @Homoran und @Codierknecht. Mit der Umstellung der JS-Instanz auf Debug und einer kleinen JS-Korrektur beim Trigger hat es nun funktioniert.

              Da dabei ggf. mehrere 100 States geloggt werden, hab ich das nur sehr kurz laufen lassen. Sonst wäre mir wsl. der Raspberry explodiert :male-firefighter:.

              Bad News für meinen Task: Leider scheint nicht, wie erwartet, die Türklingel vom ONVIF-Adapter erfasst zu werden. Sondern nur vorhandene Events wie die Gartentor-Öffnung. Schade.

              1 Reply Last reply
              0
              • CodierknechtC Offline
                CodierknechtC Offline
                Codierknecht
                Developer Most Active
                wrote on last edited by
                #12

                @dst88
                "Goliath" scheint auch nur eine umgebrandete "Dahua" zu sein.
                Hat das Ding ein Web-UI?
                Kann man da möglicherweise sogar Hooks setzen?

                "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                HmIP|ZigBee|Tasmota|Unifi
                Zabbix Certified Specialist
                Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                DSt88D 1 Reply Last reply
                1
                • CodierknechtC Codierknecht

                  @dst88
                  "Goliath" scheint auch nur eine umgebrandete "Dahua" zu sein.
                  Hat das Ding ein Web-UI?
                  Kann man da möglicherweise sogar Hooks setzen?

                  DSt88D Offline
                  DSt88D Offline
                  DSt88
                  wrote on last edited by
                  #13

                  @codierknecht
                  Ja genau, Goliath ist quasi Dahua neugebrandet.
                  Und ja: WebUI gibt es. Hast du eine Idee wie ich den KlingelEvent catchen kann?

                  OliverIOO 1 Reply Last reply
                  0
                  • DSt88D DSt88

                    @codierknecht
                    Ja genau, Goliath ist quasi Dahua neugebrandet.
                    Und ja: WebUI gibt es. Hast du eine Idee wie ich den KlingelEvent catchen kann?

                    OliverIOO Offline
                    OliverIOO Offline
                    OliverIO
                    wrote on last edited by OliverIO
                    #14

                    @dst88

                    Wenn es auf der Seite signalisiert wird
                    Könntest du mal mit f12 die Web Developer Tools im Browser öffnen
                    Und dann im networktab schauen was da passiert wenn es klingelt.

                    Weiterhin auf der gleichen Seite mal nach ws = websocket filtern.

                    Oder mal hier schauen,
                    Könnte die Bibliothek dein device betreffen?
                    https://github.com/nayrnet/node-dahua-api

                    Da gibt es eine trigger Funktion on Alarm

                    Findet man vom Hersteller eine api Beschreibung?

                    Meine Adapter und Widgets
                    TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                    Links im Profil

                    DSt88D 1 Reply Last reply
                    2
                    • OliverIOO OliverIO

                      @dst88

                      Wenn es auf der Seite signalisiert wird
                      Könntest du mal mit f12 die Web Developer Tools im Browser öffnen
                      Und dann im networktab schauen was da passiert wenn es klingelt.

                      Weiterhin auf der gleichen Seite mal nach ws = websocket filtern.

                      Oder mal hier schauen,
                      Könnte die Bibliothek dein device betreffen?
                      https://github.com/nayrnet/node-dahua-api

                      Da gibt es eine trigger Funktion on Alarm

                      Findet man vom Hersteller eine api Beschreibung?

                      DSt88D Offline
                      DSt88D Offline
                      DSt88
                      wrote on last edited by
                      #15

                      Lieber @oliverio, liebe alle,
                      danke. Die Bibliothek (https://github.com/nayrnet/node-dahua-api) konnte ich leider nicht mehr zum Laufen bringen, da sie nicht mehr gewartet wird:

                      npm error notsup Required: {"node":">=0.10 <=0.12||>=4 <=7"}
                      npm error notsup Actual:   {"npm":"10.8.2","node":"v20.18.1"}
                      

                      Einiges anderes habe ich nun probiert und in Erfahrung bringen können. Unter anderem hab ich ein altes API-Skript für Dahua-Devices gefunden:
                      Link zu Dahua "API of HTTP Protocol Specification"
                      Da Goliath-Cams etc. vormals Dahua waren, und offenbar im Kern/technisch wenig verändert wurde, funktionieren auch noch Anfragen im Browser wie bspw.:
                      http://username:password@192.168.x.x/cgi-bin/alarm.cgi?action=getInSlots
                      Im Browser werden nach dieser Anfrage einfache Textfragmente wie zB "result=5" dargestellt, die sich bei Alarmen etc. verändern. Vielleicht geht da was.
                      Nun stehe ich aber an, die GET-Funktion zur Abfrage korrekt zu implementieren. Problem scheint die Authentifizierung zu sein. Mit httpGet und XMLHttpRequest habe ich es leider nicht geschafft (ich könnte CodeSnipplets dazu schicken); mit request.get() sowieso nicht. Mit Axios bzw. AxiosDigestAuth habe ich zumindest keinen Fehler erhalten. Aber response bekomme ich auch keinen. Mir scheint, dass async() niemals ausgeführt wird. Hier ein CodeSnipplet, welches ich von https://forum.iobroker.net/topic/76168/dahua-camera-snapshot-mit-axios/2
                      adaptiert habe:

                      const axios = require('axios');
                      const AxiosDigestAuth = require('@mhoc/axios-digest-auth').default;
                      
                      const options = {
                          axios,        
                          username: "username",
                          password: "password",
                      };
                      
                      const axiosDigestAuthInst = new AxiosDigestAuth(options);
                      
                      const ExecuteMyRequest = async () => {
                          const requestOptions = {
                              responseType: 'arraybuffer',
                              method: 'GET',
                              url: 'http://192.168.x.x/cgi-bin/alarm.cgi?action=getInSlots',
                          }
                       
                          const response = await axiosDigestAuthInst.request(requestOptions);
                          console.log('done.');
                      };
                      

                      Hat jemand eine Idee, warum das nicht funktioniert? Bleibt mir keine Wahl, als MQTT zu implementieren?

                      DSt88D 1 Reply Last reply
                      0
                      • DSt88D DSt88

                        Lieber @oliverio, liebe alle,
                        danke. Die Bibliothek (https://github.com/nayrnet/node-dahua-api) konnte ich leider nicht mehr zum Laufen bringen, da sie nicht mehr gewartet wird:

                        npm error notsup Required: {"node":">=0.10 <=0.12||>=4 <=7"}
                        npm error notsup Actual:   {"npm":"10.8.2","node":"v20.18.1"}
                        

                        Einiges anderes habe ich nun probiert und in Erfahrung bringen können. Unter anderem hab ich ein altes API-Skript für Dahua-Devices gefunden:
                        Link zu Dahua "API of HTTP Protocol Specification"
                        Da Goliath-Cams etc. vormals Dahua waren, und offenbar im Kern/technisch wenig verändert wurde, funktionieren auch noch Anfragen im Browser wie bspw.:
                        http://username:password@192.168.x.x/cgi-bin/alarm.cgi?action=getInSlots
                        Im Browser werden nach dieser Anfrage einfache Textfragmente wie zB "result=5" dargestellt, die sich bei Alarmen etc. verändern. Vielleicht geht da was.
                        Nun stehe ich aber an, die GET-Funktion zur Abfrage korrekt zu implementieren. Problem scheint die Authentifizierung zu sein. Mit httpGet und XMLHttpRequest habe ich es leider nicht geschafft (ich könnte CodeSnipplets dazu schicken); mit request.get() sowieso nicht. Mit Axios bzw. AxiosDigestAuth habe ich zumindest keinen Fehler erhalten. Aber response bekomme ich auch keinen. Mir scheint, dass async() niemals ausgeführt wird. Hier ein CodeSnipplet, welches ich von https://forum.iobroker.net/topic/76168/dahua-camera-snapshot-mit-axios/2
                        adaptiert habe:

                        const axios = require('axios');
                        const AxiosDigestAuth = require('@mhoc/axios-digest-auth').default;
                        
                        const options = {
                            axios,        
                            username: "username",
                            password: "password",
                        };
                        
                        const axiosDigestAuthInst = new AxiosDigestAuth(options);
                        
                        const ExecuteMyRequest = async () => {
                            const requestOptions = {
                                responseType: 'arraybuffer',
                                method: 'GET',
                                url: 'http://192.168.x.x/cgi-bin/alarm.cgi?action=getInSlots',
                            }
                         
                            const response = await axiosDigestAuthInst.request(requestOptions);
                            console.log('done.');
                        };
                        

                        Hat jemand eine Idee, warum das nicht funktioniert? Bleibt mir keine Wahl, als MQTT zu implementieren?

                        DSt88D Offline
                        DSt88D Offline
                        DSt88
                        wrote on last edited by
                        #16

                        Ich antworte mal kurz auf meinen vorigen Post, da ich das Problem schließlich lösen konnte :+1:.
                        Beim responseType musste ich noch ändern zu:

                        responseType: 'text'
                        

                        Außerdem hatte ich was beim Aufruf der asyn-Funktion ExecuteMyRequest() vermurkst. Aber nun läuft es.
                        Danke nochmals allen für den Support. Top Forum hier :clap:.

                        1 Reply Last reply
                        0
                        Reply
                        • Reply as topic
                        Log in to reply
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes


                        Support us

                        ioBroker
                        Community Adapters
                        Donate
                        FAQ Cloud / IOT
                        HowTo: Node.js-Update
                        HowTo: Backup/Restore
                        Downloads
                        BLOG

                        301

                        Online

                        32.7k

                        Users

                        82.5k

                        Topics

                        1.3m

                        Posts
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                        ioBroker Community 2014-2025
                        logo
                        • Login

                        • Don't have an account? Register

                        • Login or register to search.
                        • First post
                          Last post
                        0
                        • Home
                        • Recent
                        • Tags
                        • Unread 0
                        • Categories
                        • Unreplied
                        • Popular
                        • GitHub
                        • Docu
                        • Hilfe