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. Skripten / Logik
  4. JavaScript
  5. Skript für Türöffner löst nicht aus

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.4k

Skript für Türöffner löst nicht aus

Scheduled Pinned Locked Moved JavaScript
5 Posts 3 Posters 213 Views 2 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.
  • R Offline
    R Offline
    rudi1976
    wrote on last edited by
    #1

    Hallo,
    nach zwei Jahren versuche ich es nochmal.
    Ich möchte meine Gartentür remote entriegeln.

    Was habe ich?
    Ich habe ein Dahu Doorbell System VTO an der Tür VTH im Haus. Das funktioniert als Stand-Alone perfekt.
    Für meine iobroker-Umgebung habe ich diverse Tabletts an der Wand und eine HABPanel Visualisierung drauf.
    Den Videostream greife ich mir über Motion Eye ab, aber was bisher nicht läuft, ist ein Button, der mir die Gartentür entriegelt.
    Im Browser kann ich per HTTP API die Tür wie folgt manuell entriegeln.

    http://user:password@192.168.178.60/cgi-bin/accessControl.cgi?action=openDoor&UserID=101&Type=Remote&channel=1
    

    Deshalb habe ich einen Datenpunkt erstellt der bei auslösen des Buttons den Wert true setzt und ein JavaSkript für den http request gebastelt (zunächst mit Blockly probiert), das auf den Datenpunkt reagiert:

    on({ id: [].concat(['0_userdata.0.Gartentuer.Trigger-Tueroeffner']), change: 'any' }, async (obj) => {
      let value = obj.state.val;
      let oldValue = obj.oldState.val;
      if ((obj.state ? obj.state.val : "") == true) {
          require("request")('http://user:password@192.168.178.60/cgi-bin/accessControl.cgi?action=openDoor&UserID=101&Type=Remote&channel=1').on("error", (e) => { console.error(e); });
          setStateDelayed('0_userdata.0.Gartentuer.Trigger-Tueroeffner' /* Trigger-Tueroeffner */, false, true, 2000, false);
      }
    });
    

    Leider reagiert der Türöffner überhaupt nicht.
    Was man in den Objekten sehen kann, ist das bei Drücken des Buttons der Datenpunkt auf true wechselt und nach 2 Sekunden wieder auf false geht.

    Iobroker läuft auf einer virtuellen Debian 12 Installation, alle Adapter sind aktuell.
    Architektur x64; Node.js v18.17.1; NPM 9.6.7; Aktive Instanzen 18

    Was übersehe ich?
    Wer kann mir helfen?

    bahnuhrB 1 Reply Last reply
    0
    • R rudi1976

      Hallo,
      nach zwei Jahren versuche ich es nochmal.
      Ich möchte meine Gartentür remote entriegeln.

      Was habe ich?
      Ich habe ein Dahu Doorbell System VTO an der Tür VTH im Haus. Das funktioniert als Stand-Alone perfekt.
      Für meine iobroker-Umgebung habe ich diverse Tabletts an der Wand und eine HABPanel Visualisierung drauf.
      Den Videostream greife ich mir über Motion Eye ab, aber was bisher nicht läuft, ist ein Button, der mir die Gartentür entriegelt.
      Im Browser kann ich per HTTP API die Tür wie folgt manuell entriegeln.

      http://user:password@192.168.178.60/cgi-bin/accessControl.cgi?action=openDoor&UserID=101&Type=Remote&channel=1
      

      Deshalb habe ich einen Datenpunkt erstellt der bei auslösen des Buttons den Wert true setzt und ein JavaSkript für den http request gebastelt (zunächst mit Blockly probiert), das auf den Datenpunkt reagiert:

      on({ id: [].concat(['0_userdata.0.Gartentuer.Trigger-Tueroeffner']), change: 'any' }, async (obj) => {
        let value = obj.state.val;
        let oldValue = obj.oldState.val;
        if ((obj.state ? obj.state.val : "") == true) {
            require("request")('http://user:password@192.168.178.60/cgi-bin/accessControl.cgi?action=openDoor&UserID=101&Type=Remote&channel=1').on("error", (e) => { console.error(e); });
            setStateDelayed('0_userdata.0.Gartentuer.Trigger-Tueroeffner' /* Trigger-Tueroeffner */, false, true, 2000, false);
        }
      });
      

      Leider reagiert der Türöffner überhaupt nicht.
      Was man in den Objekten sehen kann, ist das bei Drücken des Buttons der Datenpunkt auf true wechselt und nach 2 Sekunden wieder auf false geht.

      Iobroker läuft auf einer virtuellen Debian 12 Installation, alle Adapter sind aktuell.
      Architektur x64; Node.js v18.17.1; NPM 9.6.7; Aktive Instanzen 18

      Was übersehe ich?
      Wer kann mir helfen?

      bahnuhrB Online
      bahnuhrB Online
      bahnuhr
      Forum Testing Most Active
      wrote on last edited by
      #2

      @rudi1976

      Dein Script sieht äußerst komisch vor.

      Probier es so:

      var request = require ('request');
      on({id: "0_userdata.0.Gartentuer.Trigger-Tueroeffner'", val: true}, function() {  
          request("http://user:password@192.168.178.60/cgi-bin/accessControl.cgi?action=openDoor&UserID=101&Type=Remote&channel=1");        
          setTimeout(function() { setState('0_userdata.0.Gartentuer.Trigger-Tueroeffner', false); } , 2000);
      }); 
      

      Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
      Danke.
      gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
      ScreenToGif :https://www.screentogif.com/downloads.html

      R 1 Reply Last reply
      0
      • bahnuhrB bahnuhr

        @rudi1976

        Dein Script sieht äußerst komisch vor.

        Probier es so:

        var request = require ('request');
        on({id: "0_userdata.0.Gartentuer.Trigger-Tueroeffner'", val: true}, function() {  
            request("http://user:password@192.168.178.60/cgi-bin/accessControl.cgi?action=openDoor&UserID=101&Type=Remote&channel=1");        
            setTimeout(function() { setState('0_userdata.0.Gartentuer.Trigger-Tueroeffner', false); } , 2000);
        }); 
        
        R Offline
        R Offline
        rudi1976
        wrote on last edited by
        #3

        @bahnuhr Vielen Dank. Ich habe das so umgesetzt.

        Inzwischen glaube ich, dass das Skript funktioniert.
        Wenn man im Browser den http Aufruf macht, gibt es im Return ein "ok". An den Tabletts sind die Popup Fenster geblockt. Dort geht der http Aufrauf dann auch ins leere.

        Unter folgendem Link wird mit Java für MQTT gelauscht. Dort habe ich in der DahuaVTO.js einen relevanten Abschnitt gefunden, soweit ich das überblicke.
        link zu DahuaDoorbell2MQTT
        in dem DahuaDoorbell2MQTT Projekt gibt es folgenden Abschnitt.

        /**
           * Remotely triggers the relay 1 (e.g. to open an electric gate).
           *
           * In my VTO 2202 F this also triggers the voice announcing the the door has been opened.
           */
          openDoor() {
            return this.digestClient
              .fetch(
                `http://${this.dahua_host}/cgi-bin/accessControl.cgi?action=openDoor&channel=1&UserID=101&Type=Remote`
              )
              .then((r) => {
                if (r.ok) {
                  console.info('Door relay triggered');
                } else {
                  console.error('Error triggering the door relay', e);
                }
              })
              .catch(e => console.error('Connection error triggering the door relay'));
          }
        
        

        Ich komme mit dem Thema digestClient nicht zurecht. Das übersteigt meine Kenntnisse.
        Hier wird aber irgendwie darauf reagiert, dass es ein "ok" als Return gibt.
        Kann man das irgendwie in Iobroker mit dem Skript ergänzend umsetzten?

        Vielen Dank für jegliche Hinweise.

        bahnuhrB 1 Reply Last reply
        0
        • R rudi1976

          @bahnuhr Vielen Dank. Ich habe das so umgesetzt.

          Inzwischen glaube ich, dass das Skript funktioniert.
          Wenn man im Browser den http Aufruf macht, gibt es im Return ein "ok". An den Tabletts sind die Popup Fenster geblockt. Dort geht der http Aufrauf dann auch ins leere.

          Unter folgendem Link wird mit Java für MQTT gelauscht. Dort habe ich in der DahuaVTO.js einen relevanten Abschnitt gefunden, soweit ich das überblicke.
          link zu DahuaDoorbell2MQTT
          in dem DahuaDoorbell2MQTT Projekt gibt es folgenden Abschnitt.

          /**
             * Remotely triggers the relay 1 (e.g. to open an electric gate).
             *
             * In my VTO 2202 F this also triggers the voice announcing the the door has been opened.
             */
            openDoor() {
              return this.digestClient
                .fetch(
                  `http://${this.dahua_host}/cgi-bin/accessControl.cgi?action=openDoor&channel=1&UserID=101&Type=Remote`
                )
                .then((r) => {
                  if (r.ok) {
                    console.info('Door relay triggered');
                  } else {
                    console.error('Error triggering the door relay', e);
                  }
                })
                .catch(e => console.error('Connection error triggering the door relay'));
            }
          
          

          Ich komme mit dem Thema digestClient nicht zurecht. Das übersteigt meine Kenntnisse.
          Hier wird aber irgendwie darauf reagiert, dass es ein "ok" als Return gibt.
          Kann man das irgendwie in Iobroker mit dem Skript ergänzend umsetzten?

          Vielen Dank für jegliche Hinweise.

          bahnuhrB Online
          bahnuhrB Online
          bahnuhr
          Forum Testing Most Active
          wrote on last edited by
          #4

          @rudi1976

          Ich weiß nicht was du da machst.
          Wenn der http Befehl per Browser geht, dann geht er auch mit request.

          Insofern bin ich jetzt raus.

          Vielleicht kann jemand anders mit deinen Überlegungen etwas anfangen.


          Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
          Danke.
          gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
          ScreenToGif :https://www.screentogif.com/downloads.html

          P 1 Reply Last reply
          0
          • bahnuhrB bahnuhr

            @rudi1976

            Ich weiß nicht was du da machst.
            Wenn der http Befehl per Browser geht, dann geht er auch mit request.

            Insofern bin ich jetzt raus.

            Vielleicht kann jemand anders mit deinen Überlegungen etwas anfangen.

            P Offline
            P Offline
            peterfido
            wrote on last edited by peterfido
            #5

            Wenn im Beispiel fetch() genutzt wird, könnte man das evtl. auch hier nutzen. Oder per execute ein curl oder wget absckicken.

            Die Antwort der API könnte auch hinweisgebend sein.

            Gruß

            Peterfido


            Proxmox auf Intel NUC12WSHi5
            ioBroker: Debian (VM)
            CCU: Debmatic (VM)
            Influx: Debian (VM)
            Grafana: Debian (VM)
            eBus: Debian (VM)
            Zigbee: Debian (VM) mit zigbee2mqtt

            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

            492

            Online

            32.7k

            Users

            82.3k

            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