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. ioBroker Allgemein
  4. Zustandsänderungen loggen

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.0k

Zustandsänderungen loggen

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
16 Beiträge 6 Kommentatoren 993 Aufrufe 4 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.
  • 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
    schrieb am zuletzt editiert von
    #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 Antworten Letzte Antwort
    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 Nicht stören
      HomoranH Nicht stören
      Homoran
      Global Moderator Administrators
      schrieb am zuletzt editiert von
      #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 - es gibt fast nichts, was nicht auch für andere interessant ist.

      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

      1 Antwort Letzte Antwort
      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 Nicht stören
        HomoranH Nicht stören
        Homoran
        Global Moderator Administrators
        schrieb am zuletzt editiert von
        #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 - es gibt fast nichts, was nicht auch für andere interessant ist.

        Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

        der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

        CodierknechtC 1 Antwort Letzte Antwort
        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
          schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
          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
            schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
            0
            • CodierknechtC Offline
              CodierknechtC Offline
              Codierknecht
              Developer Most Active
              schrieb am zuletzt editiert von
              #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 Antwort Letzte Antwort
              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
                schrieb am zuletzt editiert von
                #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 Antwort Letzte Antwort
                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
                  schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                  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
                    schrieb am zuletzt editiert von
                    #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 Antwort Letzte Antwort
                    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
                      schrieb am zuletzt editiert von
                      #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 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
                      FAQ Cloud / IOT
                      HowTo: Node.js-Update
                      HowTo: Backup/Restore
                      Downloads
                      BLOG

                      477

                      Online

                      32.6k

                      Benutzer

                      82.0k

                      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