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

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

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

Geplant Angeheftet Gesperrt Verschoben JavaScript
5 Beiträge 3 Kommentatoren 213 Aufrufe 2 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.
  • R Offline
    R Offline
    rudi1976
    schrieb am zuletzt editiert von
    #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 Antwort Letzte Antwort
    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
      schrieb am zuletzt editiert von
      #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 Antwort Letzte Antwort
      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
        schrieb am zuletzt editiert von
        #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 Antwort Letzte Antwort
        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
          schrieb am zuletzt editiert von
          #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 Antwort Letzte Antwort
          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
            schrieb am zuletzt editiert von 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 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

            775

            Online

            32.6k

            Benutzer

            82.2k

            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