Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Zustandsänderungen loggen

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Zustandsänderungen loggen

    This topic has been deleted. Only users with topic management privileges can see it.
    • derolf 0
      derolf 0 last edited by

      Hi, ich bin neu bei ioBroker. Setze bisher seit >5 Jahre FHEM ein, will aber nun schrittweise auf ioBroker wechseln.

      Gibt es die Möglichkeit, Zustandsänderungen ALLER Datenpunkte zu loggen?

      Thomas Braun Homoran 2 Replies Last reply Reply Quote 0
      • Thomas Braun
        Thomas Braun Most Active @derolf 0 last edited by Thomas Braun

        @derolf-0
        Ja, aber das willst du nicht.
        Wozu auch? Logge halt die interessanten Datenpunkte.

        1 Reply Last reply Reply Quote 0
        • Homoran
          Homoran Global Moderator Administrators @derolf 0 last edited by

          @derolf-0 sagte in Zustandsänderungen loggen:

          Gibt es die Möglichkeit, Zustandsänderungen ALLER Datenpunkte zu loggen?

          ja!

          aber Vorsicht - das willst du nicht. Das sind gaaaaanz viele.
          bei mir sind das im Moment 8332 Zustände (States)

          DSt88 1 Reply Last reply Reply Quote 0
          • DSt88
            DSt88 @Homoran last edited by

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

            Homoran Codierknecht 2 Replies Last reply Reply Quote 0
            • Homoran
              Homoran Global Moderator Administrators @DSt88 last edited by

              @dst88 sagte in Zustandsänderungen loggen:

              beschränkt auf die Datenpunkte eines Adapters)

              auch das willst du nicht

              @dst88 sagte in Zustandsänderungen loggen:

              Da es aber schätzomativ 100-200 Datenpunkte im ONVIF-Adapter gibt, möchte ich alle Zustandsänderungen davon loggen

              Dann kannst du über den Schraubenschlüssel rechts oben alles auf einmal konfigurieren, was du vorher vernünftig ausgefiltert hast

              1 Reply Last reply Reply Quote 1
              • Codierknecht
                Codierknecht Developer Most Active @DSt88 last edited by

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

                DSt88 1 Reply Last reply Reply Quote 2
                • DSt88
                  DSt88 @Codierknecht last edited by

                  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?

                  Homoran 2 Replies Last reply Reply Quote 0
                  • Homoran
                    Homoran Global Moderator Administrators @DSt88 last edited by

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

                    1 Reply Last reply Reply Quote 1
                    • Homoran
                      Homoran Global Moderator Administrators @DSt88 last edited by

                      @dst88 sagte in Zustandsänderungen loggen:

                      Verwende ich vielleicht die Wildcards falsch?

                      @Codierknecht
                      war da nicht was mit $elector?

                      Codierknecht 1 Reply Last reply Reply Quote 1
                      • Codierknecht
                        Codierknecht Developer Most Active @Homoran last edited by 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
                        
                        DSt88 1 Reply Last reply Reply Quote 2
                        • DSt88
                          DSt88 @Codierknecht last edited by DSt88

                          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 👨‍🚒.

                          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 Reply Quote 0
                          • Codierknecht
                            Codierknecht Developer Most Active last edited by

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

                            DSt88 1 Reply Last reply Reply Quote 1
                            • DSt88
                              DSt88 @Codierknecht last edited by

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

                              OliverIO 1 Reply Last reply Reply Quote 0
                              • OliverIO
                                OliverIO @DSt88 last edited by 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?

                                DSt88 1 Reply Last reply Reply Quote 2
                                • DSt88
                                  DSt88 @OliverIO last edited by

                                  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?

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

                                    Ich antworte mal kurz auf meinen vorigen Post, da ich das Problem schließlich lösen konnte 👍.
                                    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 👏.

                                    1 Reply Last reply Reply Quote 0
                                    • First post
                                      Last post

                                    Support us

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

                                    854
                                    Online

                                    31.9k
                                    Users

                                    80.1k
                                    Topics

                                    1.3m
                                    Posts

                                    6
                                    16
                                    592
                                    Loading More Posts
                                    • Oldest to Newest
                                    • Newest to Oldest
                                    • Most Votes
                                    Reply
                                    • Reply as topic
                                    Log in to reply
                                    Community
                                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                    The ioBroker Community 2014-2023
                                    logo