Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Praktische Anwendungen (Showcase)
    4. Siedle Klingel / Türöffner mit ESP8266 und MQTT

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Siedle Klingel / Türöffner mit ESP8266 und MQTT

    This topic has been deleted. Only users with topic management privileges can see it.
    • Ciaran Baulig
      Ciaran Baulig @Eisbaeeer last edited by

      @eisbaeeer kannst deinen Umbau mit rfid mal ein wenig genauer erläutern/Pläne ergänzen? Finde die Idee mega!

      1 Reply Last reply Reply Quote 0
      • S
        StefanR1984 last edited by StefanR1984

        Edit: Hat sich erledigt. Läuft super! Besten Dank. Lag an einer kalten Lötstelle.

        Vlg

        Hallo zusammen,

        ich bin neu im Forum und habe eine Frage bezüglich der ESP8266 mit einer Siedle HTA 711-01

        Es liegt zwischen 1 und 7 20V Spannung an und ich bin nach Eisbeers Bauplan vorgeganen.

        Zur Ausführung des Scipts verwende ich einen ESP8266 mit einem Arduino Script:

        // https://www.mikrocontroller.net/topic/444994?goto=new#new
        
        #include <ESP8266WiFi.h>
        #include <WiFiUdp.h>
        #include <WiFiClientSecure.h> 
        #include <UniversalTelegramBot.h>
        #include <ArduinoJson.h>
        
        
        //------------------------------------------------
        // configuration with fix ip
        //------------------------------------------------
        
        // MAC-ID: 
        
        // Telegram BOT Token (Get from Botfather)
        #define botToken "********************************************"
        
        WiFiClientSecure secured_client;
        UniversalTelegramBot bot(botToken, secured_client);
        
        //Deine User ID oder Chat_ID
        #define userID "********************************************"
        
        
        
        X509List cert(TELEGRAM_CERTIFICATE_ROOT);
        
        
        
        // wlan param
        const char* ssid    = "********************************************";
        const char* WLANKEY = "********************************************";   
        
        // sip params
        const char *sipip       = "192.168.5.1";
        int         sipport     = 5060;
        const char *sipuser     = "********************************************";         // angelegter Nutzername vom Telefoniegerät
        const char *sippasswd   = "********************************************";           // PW vom Nutzername vom Telefoniegerät
        
        // dial params
        const char *sipdialnr   = "**701";                // Rundruf an alle         
        const char *sipdialtext = "Haustuer";
        
        // network params
        const char *ip          = "192.168.5.20";     // ESP IP Adresse eintragen
        const char *gw          = "192.168.5.1";      
        const char *mask        = "255.255.255.0";
        const char *dns         = "192.168.5.1";
        //------------------------------------------------
        
        #define DEBUGLOG
        WiFiUDP Udp;
        
        /////////////////////////////////////////////////////////////////////////////////////////////////////
        //
        // hardware and api independent Sip class
        //
        /////////////////////////////////////////////////////////////////////////////////////////////////////
        
        class Sip
        {
            char       *pbuf;
            size_t      lbuf;
            char        caRead[256];
        
            const char *pSipIp;
            int         iSipPort;
            const char *pSipUser;
            const char *pSipPassWd;
            const char *pMyIp;
            int         iMyPort;
            const char *pDialNr;
            const char *pDialDesc;
        
            uint32_t    callid;
            uint32_t    tagid;
            uint32_t    branchid;
        
            uint32_t    iAuthCnt;       // original 'int'
            uint32_t    iRingTime;
            uint32_t    iMaxTime;
            uint32_t    iDialRetries;   // original 'int'
            int         iLastCSeq;
            void        AddSipLine(const char* constFormat , ... );
            bool        AddCopySipLine(const char *p, const char *psearch);
            bool        ParseParameter(char *dest, int destlen, const char *name, const char *line, char cq = '\"');
            bool        ParseReturnParams(const char *p);
            int         GrepInteger(const char *p, const char *psearch);
            void        Ack(const char *pIn);
            void        Cancel(int seqn);
            void        Bye(int cseq);
            void        Ok(const char *pIn);
            void        Invite(const char *pIn = 0);
        
            uint32_t    Millis();
            uint32_t    Random();
            int         SendUdp();
            void        MakeMd5Digest(char *pOutHex33, char *pIn);
        
          public:
            Sip(char *pBuf, size_t lBuf);
            void        Init(const char *SipIp, int SipPort, const char *MyIp, int MyPort, const char *SipUser, const char *SipPassWd, int MaxDialSec = 10); //10
            void        HandleUdpPacket(const char *p);
            bool        Dial(const char *DialNr, const char *DialDesc = "");
            bool        IsBusy() {
              return iRingTime != 0;
            }
        };
        
        Sip::Sip(char *pBuf, size_t lBuf)
        {
          pbuf = pBuf;
          lbuf = lBuf;
          pDialNr = "";
          pDialDesc = "";
        }
        
        bool Sip::Dial(const char *DialNr, const char *DialDesc)
        {
          if (iRingTime)
            return false;
        
          iDialRetries = 0;
          pDialNr = DialNr;
          pDialDesc = DialDesc;
          Invite();
          iDialRetries++;
          iRingTime = Millis();
          return true;
        }
        
        void Sip::Cancel(int cseq)
        {
          if (caRead[0] == 0)
            return;
          pbuf[0] = 0;
          AddSipLine("%s sip:%s@%s SIP/2.0",  "CANCEL", pDialNr, pSipIp);
          AddSipLine("%s",  caRead);
          AddSipLine("CSeq: %i %s",  cseq, "CANCEL");
          AddSipLine("Max-Forwards: 70");
          AddSipLine("User-Agent: sip-client/0.0.1");
          AddSipLine("Content-Length: 0");
          AddSipLine("");
          SendUdp();
        }
        
        void Sip::Bye(int cseq)
        {
          if (caRead[0] == 0)
            return;
          pbuf[0] = 0;
          AddSipLine("%s sip:%s@%s SIP/2.0",  "BYE", pDialNr, pSipIp);
          AddSipLine("%s",  caRead);
          AddSipLine("CSeq: %i %s", cseq, "BYE");
          AddSipLine("Max-Forwards: 70");
          AddSipLine("User-Agent: sip-client/0.0.1");
          AddSipLine("Content-Length: 0");
          AddSipLine("");
          SendUdp();
        }
        
        void Sip::Ack(const char *p)
        {
          char ca[32];
          bool b = ParseParameter(ca, (int)sizeof(ca), "To: <", p, '>');
          if (!b)
            return;
        
          pbuf[0] = 0;
          AddSipLine("ACK %s SIP/2.0", ca);
          AddCopySipLine(p, "Call-ID: ");
          int cseq = GrepInteger(p, "\nCSeq: ");
          AddSipLine("CSeq: %i ACK",  cseq);
          AddCopySipLine(p, "From: ");
          AddCopySipLine(p, "Via: ");
          AddCopySipLine(p, "To: ");
          AddSipLine("Content-Length: 0");
          AddSipLine("");
          SendUdp();
        }
        
        void Sip::Ok(const char *p)
        {
          pbuf[0] = 0;
          AddSipLine("SIP/2.0 200 OK");
          AddCopySipLine(p, "Call-ID: ");
          AddCopySipLine(p, "CSeq: ");
          AddCopySipLine(p, "From: ");
          AddCopySipLine(p, "Via: ");
          AddCopySipLine(p, "To: ");
          AddSipLine("Content-Length: 0");
          AddSipLine("");
          SendUdp();
        }
        
        void Sip::Init(const char *SipIp, int SipPort, const char *MyIp, int MyPort, const char *SipUser, const char *SipPassWd, int MaxDialSec)
        {
          caRead[0] = 0;
          pbuf[0] = 0;
          pSipIp = SipIp;
          iSipPort = SipPort;
          pSipUser = SipUser;
          pSipPassWd = SipPassWd;
          pMyIp = MyIp;
          iMyPort = MyPort;
          iAuthCnt = 0;
          iRingTime = 0;
          iMaxTime = MaxDialSec * 2000;   // 1500
        }
        
        void Sip::AddSipLine(const char* constFormat , ... )
        {
          va_list arglist;
          va_start( arglist, constFormat);
          uint16_t l = (uint16_t)strlen(pbuf);
          char *p = pbuf + l;
          vsnprintf(p, lbuf - l, constFormat, arglist );
          va_end( arglist );
          l = (uint16_t)strlen(pbuf);
          if (l < (lbuf - 2))
          {
            pbuf[l] = '\r';
            pbuf[l + 1] = '\n';
            pbuf[l + 2] = 0;
          }
        }
        
        // call invite without or with the response from peer
        void Sip::Invite(const char *p)
        {
          // prevent loops
          if (p && iAuthCnt > 3)
            return;
        
          // using caRead for temp. store realm and nonce
          char *caRealm = caRead;
          char *caNonce = caRead + 128;
        
          char *haResp = 0;
          int   cseq = 1;
          if (!p)
          {
            iAuthCnt = 0;
            if (iDialRetries == 0)
            {
              callid = Random();
              tagid = Random();
              branchid = Random();
            }
          }
          else
          {
            cseq = 2;
            if (   ParseParameter(caRealm, 128, " realm=\"", p)
                   && ParseParameter(caNonce, 128, " nonce=\"", p))
            {
              // using output buffer to build the md5 hashes
              // store the md5 haResp to end of buffer
              char *ha1Hex = pbuf;
              char *ha2Hex = pbuf + 33;
              haResp = pbuf + lbuf - 34;
              char *pTemp = pbuf + 66;
        
              snprintf(pTemp, lbuf - 100, "%s:%s:%s", pSipUser, caRealm, pSipPassWd);
              MakeMd5Digest(ha1Hex, pTemp);
        
              snprintf(pTemp, lbuf - 100, "INVITE:sip:%s@%s", pDialNr, pSipIp);
              MakeMd5Digest(ha2Hex, pTemp);
        
              snprintf(pTemp, lbuf - 100, "%s:%s:%s", ha1Hex, caNonce, ha2Hex);
              MakeMd5Digest(haResp, pTemp);
            }
            else
            {
              caRead[0] = 0;
              return;
            }
          }
          pbuf[0] = 0;
          AddSipLine("INVITE sip:%s@%s SIP/2.0", pDialNr, pSipIp);
          AddSipLine("Call-ID: %010u@%s",  callid, pMyIp);
          AddSipLine("CSeq: %i INVITE",  cseq);
          AddSipLine("Max-Forwards: 70");
          // not needed for fritzbox
          // AddSipLine("User-Agent: sipdial by jl");
          AddSipLine("From: \"%s\"  <sip:%s@%s>;tag=%010u", pDialDesc, pSipUser, pSipIp, tagid);
          AddSipLine("Via: SIP/2.0/UDP %s:%i;branch=%010u;rport=%i", pMyIp, iMyPort, branchid, iMyPort);
          AddSipLine("To: <sip:%s@%s>", pDialNr, pSipIp);
          AddSipLine("Contact: \"%s\" <sip:%s@%s:%i;transport=udp>", pSipUser, pSipUser, pMyIp, iMyPort);
          if (p)
          {
            // authentication
            AddSipLine("Authorization: Digest username=\"%s\", realm=\"%s\", nonce=\"%s\", uri=\"sip:%s@%s\", response=\"%s\"", pSipUser, caRealm, caNonce, pDialNr, pSipIp, haResp);
            iAuthCnt++;
          }
          AddSipLine("Content-Type: application/sdp");
          // not needed for fritzbox
          // AddSipLine("Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO");
          AddSipLine("Content-Length: 0");
          AddSipLine("");
          caRead[0] = 0;
          SendUdp();
        }
        
        // parse parameter value from http formated string
        bool Sip::ParseParameter(char *dest, int destlen, const char *name, const char *line, char cq)
        {
          const char *qp;
          const char *r;
          if ((r = strstr(line, name)) != NULL)
          {
            r = r + strlen(name);
            qp = strchr(r, cq);
            int l = qp - r;
            if (l < destlen)
            {
              strncpy(dest, r, l);
              dest[l] = 0;
              return true;
            }
          }
          return false;
        }
        
        // search a line in response date (p) and append on
        // pbuf
        bool Sip::AddCopySipLine(const char *p, const char *psearch)
        {
          char *pa = strstr((char*)p, psearch);
          if (pa)
          {
            char *pe = strstr(pa, "\r");
            if (pe == 0)
              pe = strstr(pa, "\n");
            if (pe > pa)
            {
              char c = *pe;
              *pe = 0;
              AddSipLine("%s", pa);
              *pe = c;
              return true;
            }
          }
          return false;
        }
        
        int Sip::GrepInteger(const char *p, const char *psearch)
        {
          int param = -1;
          const char *pc = strstr(p, psearch);
          if (pc)
          {
            param = atoi(pc + strlen(psearch));
          }
          return param;
        }
        
        // copy Call-ID, From, Via and To from response
        // to caRead
        // using later for BYE or CANCEL the call
        bool Sip::ParseReturnParams(const char *p)
        {
          pbuf[0] = 0;
          AddCopySipLine(p, "Call-ID: ");
          AddCopySipLine(p, "From: ");
          AddCopySipLine(p, "Via: ");
          AddCopySipLine(p, "To: ");
          if (strlen(pbuf) >= 2)
          {
            strcpy(caRead, pbuf);
            caRead[strlen(caRead) - 2] = 0;
          }
          return true;
        }
        
        void Sip::HandleUdpPacket(const char *p)
        {
          uint32_t iWorkTime = iRingTime ? (Millis() - iRingTime) : 0;
          if (iRingTime && iWorkTime > iMaxTime)
          {
            // Cancel(3);
            Bye(3);
            iRingTime = 0;
          }
        
          if (!p)
          {
            // max 5 dial retry when loos first invite packet
            //     int                int              uint32         int
            if (iAuthCnt == 0 && iDialRetries < 5 && (iWorkTime > (iDialRetries * 200)) )
            {
              iDialRetries++;
              delay(30);
              Invite();
            }
            return;
          }
        
          if (strstr(p, "SIP/2.0 401 Unauthorized") == p)
          {
            Ack(p);
            // call Invite with response data (p) to build auth md5 hashes
            Invite(p);
          }
          else if (strstr(p, "BYE") == p)
          {
            Ok(p);
            iRingTime = 0;
          }
          else if (strstr(p, "SIP/2.0 200") == p)    // OK
          {
            ParseReturnParams(p);
            Ack(p);
          }
          else if (   strstr(p, "SIP/2.0 183 ") == p // Session Progress
                      || strstr(p, "SIP/2.0 180 ") == p ) // Ringing
          {
            ParseReturnParams(p);
          }
          else if (strstr(p, "SIP/2.0 100 ") == p)   // Trying
          {
            ParseReturnParams(p);
            Ack(p);
          }
          else if (   strstr(p, "SIP/2.0 486 ") == p // Busy Here
                      || strstr(p, "SIP/2.0 603 ") == p // Decline
                      || strstr(p, "SIP/2.0 487 ") == p) // Request Terminatet
          {
            Ack(p);
            iRingTime = 0;
          }
          else if (strstr(p, "INFO") == p)
          {
            iLastCSeq = GrepInteger(p, "\nCSeq: ");
            Ok(p);
          }
        }
        
        /////////////////////////////////////////////////////////////////////////////////////////////////////
        //
        // hardware dependent interface functions
        //
        /////////////////////////////////////////////////////////////////////////////////////////////////////
        
        int Sip::SendUdp()
        {
          Udp.beginPacket(pSipIp, iSipPort);
          Udp.write(pbuf, strlen(pbuf));
          Udp.endPacket();
        #ifdef DEBUGLOG
          Serial.printf("\r\n----- send %i bytes -----------------------\r\n%s", strlen(pbuf), pbuf);
          Serial.printf("------------------------------------------------\r\n");
        #endif
          return 0;
        }
        
        // generate a 30 bit random number
        uint32_t Sip::Random()
        {
          // return ((((uint32_t)rand())&0x7fff)<<15) + ((((uint32_t)rand())&0x7fff));
          return secureRandom(0x3fffffff);
        }
        
        uint32_t Sip::Millis()
        {
          return (uint32_t)millis() + 1;
        }
        
        void Sip::MakeMd5Digest(char *pOutHex33, char *pIn)
        {
          MD5Builder aMd5;
          aMd5.begin();
          aMd5.add(pIn);
          aMd5.calculate();
          aMd5.getChars(pOutHex33);
        }
        
        /////////////////////////////////////////////////////////////////////////////////////////////////////
        //
        // Arduino setup() and loop()
        //
        /////////////////////////////////////////////////////////////////////////////////////////////////////
        
        char caSipIn[2048];
        char caSipOut[2048];
        Sip aSip(caSipOut, sizeof(caSipOut));
        
        void setup()
        {
          
          Serial.begin(115200);
          Serial.println();
        
          WiFi.disconnect(true);
          delay(10);
          WiFi.mode(WIFI_STA);
          delay(10);
        
          WiFi.begin("********************************************", "********************************************");  // SSID und WLAN-Key eintragen
          
          Serial.print("Connecting");
        
          while (WiFi.status() != WL_CONNECTED)
          {
            delay(100);
            Serial.print(".");
          }
        
          Serial.println();
          Serial.print("Connected, IP address: ");
          Serial.println( WiFi.macAddress() );
          Serial.println( WiFi.localIP() );
          Serial.println( ESP.getChipId() );
          
        
          int i = 0;
          for (i = 0; i < 100; i++)
          {
            if (WiFi.status() == WL_CONNECTED)
              break;
            delay(100);
            Serial.print(".");
          }
        
          if (i >= 100)
          {
            // without connection go to sleep
            delay(500);
            ESP.deepSleep(0);
          }
        
          WiFi.persistent(true);
          Serial.printf("\r\nWiFi connected to: %s\r\n", WiFi.localIP().toString().c_str());
          Udp.begin(sipport);
          aSip.Init(sipip, sipport, ip, sipport, sipuser, sippasswd, 15);
          aSip.Dial(sipdialnr, sipdialtext);
        
          secured_client.setTrustAnchors(&cert);
          bot.sendMessage(userID, "Es hat an der Tür geklingelt!", "");
          
        }
        
        int deepSleepDelay = 0;
        void loop(void)
        {
          
          int packetSize = Udp.parsePacket();
          if (packetSize > 0)
          {
            caSipIn[0] = 0;
            packetSize = Udp.read(caSipIn, sizeof(caSipIn));
            if (packetSize > 0)
            {
              caSipIn[packetSize] = 0;
              #ifdef DEBUGLOG
              IPAddress remoteIp = Udp.remoteIP();
              Serial.printf("\r\n----- read %i bytes from: %s:%i ----\r\n", (int)packetSize, remoteIp.toString().c_str(), Udp.remotePort());
              Serial.print(caSipIn);
              Serial.printf("----------------------------------------------------\r\n");      
              #endif
            }
          }
          aSip.HandleUdpPacket((packetSize > 0) ? caSipIn : 0 );
        
          if (!aSip.IsBusy() && deepSleepDelay == 0)
            deepSleepDelay = millis();
        
          if (deepSleepDelay && (millis() - deepSleepDelay) > 3000) {
            ESP.deepSleep(0);
          }
        }
        

        Das Script funktioniert und wenn ich GND und RST kurzschließe wird das Script ausgeführt.

        Sobald ich das Konstrukt aus Zener Diode - Widerstand - Optokoppler an die Klingel anschließe und diese betätige, tut sich leider nichts.

        Anbei noch eine Liste meiner verwendeten Bauteile:

        Board:
        https://www.reichelt.com/de/en/developer-boards-nodemcu-esp8266-wi-fi-module-debo-jt-esp8266-p219900.html?&trstct=pos_4

        Optokoppler
        https://www.reichelt.com/1-fach-optokoppler-5kv-35v-50ma-50-600-dip-4-ltv-817-p76173.html?CCOUNTRY=445&LANGUAGE=de&trstct=pos_0&&r=1

        Widerstand
        https://www.reichelt.de/widerstand-metalloxyd-560-ohm-0207-1-0-w-5--1w-560-p1832.html?trstct=magaz_txtlink

        Zener Diode
        https://www.ebay.de/itm/380928180250?var=650272010680

        Ich hoffe mir kann hier jemand helfen 🙂

        Eine Vermutung wäre, dass ich den Widerstand zu hoch gewählt habe?

        Danke und VLG

        Stefan

        1 Reply Last reply Reply Quote 0
        • N
          nullfreizeit last edited by

          Hallo zusammen,

          habe eine Siedle Anlage mit dem Netzteil BNG 650 im Keller und 3 x das Haustelefon AIB 150. Würde gerne das Klingelsignal abgreifen und den Türöffner betätigen. Gibt es hier schon eine Abhilfe/Ideen? Vielen Dank.

          1 Reply Last reply Reply Quote 0
          • M
            med3 last edited by

            Hi, weiß jemand ob das mit einem Siedle HT 611-01 genau so funktioniert?

            Eisbaeeer tobasium 2 Replies Last reply Reply Quote 0
            • Eisbaeeer
              Eisbaeeer Developer @med3 last edited by

              @med3 ja geht genau so. Habe ich hier auch im Einsatz.

              1 Reply Last reply Reply Quote 0
              • L
                lonetom last edited by

                Hallo Zusammen
                Hat jemand Erfahrung mit einer Urmet 4+N (Innenstelle Urmet 1133 mit elektronischen Signalgeber) Erfahrung?
                Welche Änderungen wären erforderlich bei Bedarf?
                thx tom

                1 Reply Last reply Reply Quote 0
                • T
                  TheHellSite @Marcel512 last edited by TheHellSite

                  EDIT: Eben erst gesehen, du hast ja ein anderes Telefon mit einer anderen Spannung.

                  1 Reply Last reply Reply Quote 0
                  • tobasium
                    tobasium @med3 last edited by

                    @med3

                    Ich habe mir das ganze auch gebaut aber mit Tasmota im Einsatz. Es fehlt eben noch ein Gehäuse.
                    Sobald es klingelt bekomme ich über mehre Kanäle eine Benachrichtigung (Telegram, Alexa)
                    Über mein normales Telegram Menü kann ich dann Türe öffnen auslösen.

                    Siedle-Gehirn_Steckplatine.jpg
                    MVIMG_20210225_162428.jpg

                    Basti97 M 2 Replies Last reply Reply Quote 1
                    • T
                      TheHellSite @Eisbaeeer last edited by

                      Hallo @Eisbaeeer ,

                      erstmal vielen Dank für deine Lösung!!!

                      Ich habe bei mir ein Siedle HTS 711-0 verbaut.
                      Aktuell möchte ich dies zwar noch nicht in mein Smart Home integrieren, aber ich bin sehr an einer Funk Klingel Erweiterung interessiert.

                      Siedle bietet dafür den NSC 602-00 Adapter an. https://www.siedle.de/de-de/produkte/nsc-602-0-nebensignal-controller/
                      In meinen Augen ist das Abzocke...

                      Jetzt meine Frage:
                      Kann ich deine Bauteile zur Klingelerkennung nutzen, um eine Funkerweiterung anzuschließen?
                      www.heidemann-handel.de/details-produkte/funkkonverter-hx.html
                      Den Rest für die Smart Home integration benötige ich aktuell nicht.

                      Viele Grüße
                      TheHellSite

                      T 1 Reply Last reply Reply Quote 0
                      • T
                        TheHellSite @TheHellSite last edited by TheHellSite

                        Da hier keiner geantwortet hat, habe ich es einfach mal getestet. Mit Erfolg!
                        Vielen Dank @Eisbaeeer für die ursprüngliche Lösung.

                        Nachfolgend noch eine Liste der Bauteile und Bilder.

                        Viele Grüße
                        TheHellSite


                        Verwendete Bauteile

                        • Gegensprechstelle: Siedle HTS 711-0
                        • Funksender: Heidemann Funkkonverter HX
                        • Funkempfänger: Heidemann HX One
                        • Optokoppler (PC817X1NSZ1B)
                        • Zenerdiode (BZX85C20V = 1N4747A)
                        • Widerstand (560 Ohm)

                        Bilder

                        Gegensprechstelle ohne Funkerweiterung
                        001_gegensprechstelle_ohne_funkerweiterung.jpg

                        Gegensprechstelle mit Funkerweiterung
                        002_gegensprechstelle_mit_funkerweiterung.jpg

                        DIY-Adapter und Funkkonverter
                        003_adapter_und_funkkonverter.jpg

                        Eisbaeeer 1 Reply Last reply Reply Quote 1
                        • Eisbaeeer
                          Eisbaeeer Developer @TheHellSite last edited by

                          @thehellsite Freut mich, wenn es bei Dir funktioniert hat!

                          1 Reply Last reply Reply Quote 0
                          • f0m3
                            f0m3 last edited by f0m3

                            ups. dummer Post meinerseits, löschen geht aber anscheinend nicht 😞

                            1 Reply Last reply Reply Quote 0
                            • Basti97
                              Basti97 Most Active @tobasium last edited by

                              @tobasium Wo hast du die Spannung hergeholt ich habe bei mir Wechselspannung an der Klingel.
                              Welchen Optokoppler bzw Diode hast du für das Etagen und für das Klingeln vor dem Haus benutzt.

                              tobasium 1 Reply Last reply Reply Quote 0
                              • S
                                Sekretär last edited by

                                Ich will euch mal meine Lösung verraten. Innen habe ich auch die Siedle HTS 711-0 verbaut. Außen ist bei mir die Siedle Vario mit 2 Tastern. An dieser habe ich den Strom(ca. 16Volt AC) an der Soffitte abgegriffen und einen Shelly Uni daran gehangen. Als Leuchte habe ich eine LED mit einer 10mA Mini Miniatur Konstantstromquelle für LEDs KSQ2 angeschlossen.
                                Der Kontakt kommt direkt vom Siedle Klingeltaster. Der hat auf der Platine zwei Microschalter die gebrückt die Klingel gleichzeitig auslösen. Einen davon habe ich mit dem Cuttermesser auf der Platine getrennt und meinen Kontakt für den Shelly angelötet.
                                Ich habe Wlan in Tür nähe und die ganze Sache läuft schon ein Paar Tage. Wie lange das alles läuft wird sich zeigen.
                                Sprechen und Türöffnen geht mit meiner Variante nicht aber mein Ziel ist erreicht:

                                • die Siedle funktioniert wie immer,
                                • Benachrichtigung per Telegramm mit Foto von der Überwachungskamera,
                                • Alexa sagt "Es hat an der Haustür geklingelt",
                                  nur das Blockly für das VIS welches aufpoppt, das Tür Foto zeigt und nach einer Minute wieder verschwindet habe ich noch nicht gefunden.
                                  Vieleicht kann mir da einer helfen.
                                T 1 Reply Last reply Reply Quote 0
                                • Mr English
                                  Mr English @Eisbaeeer last edited by

                                  @eisbaeeer kann man sich die software esp-door herunterladen, wenn ja wo ?
                                  Gruß English

                                  Eisbaeeer 1 Reply Last reply Reply Quote 0
                                  • Eisbaeeer
                                    Eisbaeeer Developer @Mr English last edited by

                                    @mr-english Hallo. Die ist auf github verfügbar: https://github.com/marelab/esp-rfid
                                    Gruß

                                    1 Reply Last reply Reply Quote 0
                                    • f0m3
                                      f0m3 @Eisbaeeer last edited by f0m3

                                      Leider ist der Link zur Schaltung, wie man die Tür öffnen kann mit Transistor oder Relais nicht mehr verlinkt bzw. der Link ist tot.
                                      Ich habe hier ein HTS 811 und frage mich wo ich am besten mit einem Wemos + Transistor schalte. Die Taster sind ja nur noch so "gummitaster" also wird da anlöten kompliziert. Sollte ich hier probieren (markiert)
                                      2022-02-19 09.36.38.jpg
                                      oder kennt jmd. eine bessere Stelle? Wenn ich das, wo die Pfeile sind mit draht brücke summt der öffner.

                                      Ich habe hier noch ein Bild von der Rückseite 2022-02-19 09.37.25.jpg

                                      Nachtrag für Interessierte. Ich habe diese Analyse des HTS811 gefunden, da hat isch jemand richtig viel Mühe gemacht. https://www.richis-lab.de/Siedle.htm

                                      Und gemessen habe ich inwzischen auch. Im Ruhezustand liegt zwischen dem punkt "roter Pfeil" und GND (schwarzer Pfeil bzw. Siedle-KLemme "1" eine Spannung von knapp 6v an. der Schalter Verbindet zu GND. Kann mir jemnd helfen bzgl einer Transistorschaltung? Nimmt mann einfach einen BC547 und mach Pin1 an den Roten PFeil, Pin2 an einen Digitalen output vom ESP8266 und Pin3 an GND?

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

                                        @f0m3 "Nimmt mann einfach einen BC547 und mach Pin1 an den Roten PFeil, Pin2 an einen Digitalen output vom ESP8266 und Pin3 an GND?" Das hat auf jeden Fall nicht geklappt. wenn ich am ESP8266 auf high setze passiert einfach nichts. Der Pin am ESP geht auf 3.3v gegen GND. Wenn ich dabei den Widerstand zwischen Emitter und Collector messe geht der ganz kurz von unendlich runter aber dann wieder hoch. ö

                                        Ralla66 Eisbaeeer 2 Replies Last reply Reply Quote 0
                                        • Ralla66
                                          Ralla66 Most Active @f0m3 last edited by

                                          @f0m3

                                          Irgend wie , irgendo wo was dran klatschen geht auch nicht.
                                          Beschalte mal die Basis des BC547 richtig.

                                          1 Reply Last reply Reply Quote 0
                                          • Eisbaeeer
                                            Eisbaeeer Developer @f0m3 last edited by

                                            @f0m3 sagte in Siedle Klingel / Türöffner mit ESP8266 und MQTT:

                                            @f0m3 "Nimmt mann einfach einen BC547

                                            Das hier ist eine typische Schaltung: Link Text

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            891
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            63
                                            221
                                            82918
                                            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