Türklingel per UDP, Arduino und Fritzbox aufs Telefon

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • Gast

    Türklingel per UDP, Arduino und Fritzbox aufs Telefon

    Moin,
    Ich hab da mal was "gebastelt"...
    Villeicht kann jemand damit was anfangen.

    Aufgabenstellung:
    wenn Jemand an der Tür klingelt soll das (DECT) Telefon klingeln, da auch im Garten häufig dabei oder in Hörweite ist.
    Da ich das Türsteuerungsmodul nicht dazu bewegen konnte per SIP/Fritzbox einen Rundruf zu starten habe ich einen Arduino dazwischen geschaltet.

    Jetzt sendet der Miniserver einen UDP Befehl an den Arduino und dieser wählt per SIP über die Fritzbox **9, also den Rundruf.

    Vorraussetzung:
    - SIP account in der Fritzbox
    - Arduino mit Ethernet Shield

    Vorlage für das Arduino Sketch: http://forum.arduino.cc/index.php?topic=234204.0
    Vorlage UDP Server: http://www.meintechblog.de/2015/06/a...udp-ansteuern/

    Mein Sketch:
    Code:
    #include <SPI.h>
    #include <Ethernet.h>
    #include <EthernetUdp.h>
    #include <MD5.h>
    #include "SIPRinger.h"
    
    // Enter a MAC address for your controller below.
    // Adapt to your local network.
    byte mac[] = {
      0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xEA
    };
    boolean reading = false;
    boolean ring = false;
    char sipUser[20];           // sip user/pwd to connect to the SIP server
    char sipPwd[20];            // sip user/pwd to connect to the SIP server
    char sipNrToDial[20];       // telephone nr. to dial
    byte sipServerIp[4];        // SIP server IP
    int sipPort;                // port to connect to the SIP server (standard is 5060)
    int useTcp;                 // use TCP to connect to the SIP server (instead of UDP)
    int ringDurationInSeconds;  // phone ring time
    
    SIPRinger sipRinger;
    // Recipient IP
    IPAddress RecipientIP("--MiniserverIP--");
    
    
    // Recipient UDP Port
    // Local UDP port to listen on
    unsigned int localPort = 7007;
    
    // buffers for receiving and sending data
    char packetBuffer[UDP_TX_PACKET_MAX_SIZE];
    
    
    // An EthernetUDP instance to send and receive packets over UDP
    EthernetUDP Udp;
    
    void setup() {
    
      Serial.begin(115200);
    
      // disable SD
      //  http://forum.freetronics.com/viewtopic.php?f=4&t=176&start=50
      pinMode(53, OUTPUT);                 // set the SS pin as an output (necessary!)
      digitalWrite(53, LOW);               // ? (not sure)
      pinMode(4, OUTPUT);                  // SD select pin
      digitalWrite(4, HIGH);               // Explicitly disable SD
      pinMode(10, OUTPUT);                 // Ethernet select pin
      digitalWrite(10, LOW);               // Explicitly enable Network
    
      initEthernet();
    
     // Start UDP
     Udp.begin(localPort);
    
      //FritzBox IP
      // Adapt to your local configuration
      sipServerIp[0] = 192;
      sipServerIp[1] = 168;
      sipServerIp[2] = 178;
      sipServerIp[3] = 1;
      IPAddress sipServerIpBin(sipServerIp);
      sipPort = 5060;
      useTcp = true;
      strcpy( sipUser, "620");
      strcpy( sipPwd, "geheim");
      strcpy( sipNrToDial, "**9");
      ringDurationInSeconds = 30;
    
      sipRinger.init(sipServerIpBin, sipPort, useTcp, sipUser, sipPwd, sipNrToDial, ringDurationInSeconds);
    
      // if analog input pin 0 is unconnected, random analog
      // noise will cause the call to randomSeed() to generate
      // different seed numbers each time the sketch runs.
      // randomSeed() will then shuffle the random function.
      // -> hoepfully less predictable IDs generated in SIP
      randomSeed(analogRead(0));
    }
    
    
    void loop() {
    
      if (Serial.available() > 0) {
        Serial.read();
        sipRinger.ring();
      }
      if (ring)
      {
            sipRinger.ring();
            ring = false;
      }
    
      // update() must be called regularyly to actively maintain the calls progress.
      sipRinger.update();
    
      // warten auf Anfragen von Miniserver
      checkUDP();
    
    
    }
    
    void initEthernet() {
    
      Serial.println(F("Configuring Ethernet using DHCP..."));
    
      // start the Ethernet connection:
      if (Ethernet.begin(mac) == 0) {
        Serial.println(F("Failed to initialize Ethernet with DHCP"));
        // no point in carrying on, so do nothing forevermore:
        for (;;)
          ;
      }
    
      // print local IP address
      Serial.print("DHCP succesfull: IP=");
      for (byte thisByte = 0; thisByte < 4; thisByte++) {
        // print the value of each byte of the IP address:
        Serial.print(Ethernet.localIP()[thisByte], DEC);
        Serial.print(F("."));
      }
      Serial.println();
      Serial.flush();
    }
    
    // Function to check for new incoming UDP packets
    void checkUDP()
    {
     // if there's data available, read a packet
     int packetSize = Udp.parsePacket();
     if(packetSize)
     {
      // read the packet into packetBufffer
      Udp.read(packetBuffer,UDP_TX_PACKET_MAX_SIZE);
    
      // For debug only
      // Write packetBuffer to serial
      Serial.print("ReceiveUDP: ");
      Serial.println(packetBuffer);
      if (!strcmp(packetBuffer, "ring"))
      {
        ring = true;
      }
    
    
      // send "ACK" as reply
      //Udp.beginPacket(Udp.remoteIP(), Udp.remotePort());
      //Udp.write("ACK");
      //Udp.endPacket();
     }
    }
  • Leo Kirch
    MS Profi
    • 26.08.2015
    • 831

    #2
    Ist das eine Plugin-Idee für den Loxberry?
    -

    Kommentar

    • Gast

      #3
      Keine schlechte Idee. Leider kann ich das nicht umsetzen, bin aber bereit zu unterstützen

      Kommentar

      • Wörsty
        LoxBus Spammer
        • 06.11.2015
        • 203

        #4
        Kann mir das ja mal ansehen.

        Habe es mir angesehen.
        Vielleicht wäre https://github.com/motom001/DoorPi eher als Plugin geeignet allerdings ist das recht komplex.
        Die Frage ist, wie viel man will.

        Einfach nur Knopf drücken => Info vom Miniserver an LoxBerry => LoxBerry an Fritz!Box und Klingeln am DECT sollte noch relativ simpel realisierbar sein.
        Alles weitere - wie Sprachdurchschaltung (oder gar Videoübertragung) oder Türöffnen durch MFV wird dann Aufwand.

        Ich guck mal ob ich ein simples Plugin hinbekomme, um einfach ein DECT bei Knopfdruck bimmeln zu lassen.
        Zuletzt geändert von Wörsty; 10.10.2016, 09:45.
        Loxone Miniserver (letzte Beta) in KNX Umfeld

        Kommentar


        • MarcusS
          MarcusS kommentierte
          Kommentar bearbeiten
          Hier geht es ja "nur" um ein Klingel-Signal an die Fritz.box. Also eine Erweiterung der bestehenden Türklingel auf vorhandene Telefone sozusagen. kein Gegensprechen. Der DoorPi ist eine vollständige und autonome Lösung für eine Türsprechstelle und würde damit weit über das hier hinausgehen. So ein DoorPi braucht mindestens Mic und Spreaker mit Verstärker. Das ist etwas komplexer und dazu reicht Software alleine nicht aus. Als Plugin ist das hier also wirklich charmant! Der DoorPi ist als Plugin eher ungeeignet. Just my 2 cents...

        • Wörsty
          Wörsty kommentierte
          Kommentar bearbeiten
          Genau das macht Text2SIP
      • Gast

        #5
        Super, eine "Kleine Lösung" für den Loxberry würde mich auch interessieren.

        Kommentar

        • svethi
          Lebende Foren Legende
          • 25.08.2015
          • 6289

          #6
          Hmm Wörsty,

          die kleine Lösung ist ja nicht schlecht und hört sich ebenso nach dem Fritzbox-Plugin an. Dieses wollte ich ja mal mit dem Callmonitor beginnen. Vielleicht bekommt man die kleine Lösung ja auch ohne DoorPi ins Fritzbox-Plugin

          Gruß Sven
          Miniserver; KNX; Vitogate; EnOcean (EnOceanPi); Loxone Air; Caldav-Kalenderanbindung; RaspberryPi und für keine Frickellösung zu schade :-)

          Kommentar

          • Wörsty
            LoxBus Spammer
            • 06.11.2015
            • 203

            #7
            Ich fange mal mit dem Plugin an. Ganz simpel. Nur HTTP-Trigger vom Miniserver an LoxBerry und LoxBerry ruft Telefon an Fritz!Box an.
            Namenvorschläge? Was ist mit RiMSi-Bell "Ring my SipPhone-Bell"?
            Loxone Miniserver (letzte Beta) in KNX Umfeld

            Kommentar


            • Wörsty
              Wörsty kommentierte
              Kommentar bearbeiten
              Lööft. Basisplugin fertig. Nun muss ich nur noch das Web-Interface basteln
              http://loxberry.woerstenfeld.de/RiMSi-Bell.zip (Das ist ein Video, nicht das Plugin)
              Zuletzt geändert von Wörsty; 07.11.2016, 07:26. Grund: Videohinweis

            • svethi
              svethi kommentierte
              Kommentar bearbeiten
              Hihi, ich programmiere auch lieber die Funktion und nicht das GUI :-)
          • Wörsty
            LoxBus Spammer
            • 06.11.2015
            • 203

            #8
            Also - RiMSi-Bell heißt es nun nicht - sondern Text2SIP - Alphaversion verfügbar.
            Ich erarbeite mal die Basisdokumentation - wer Interesse hat für mich zu testen, kann sich ja melden.

            Das Plugin bietet die Möglichkeit Anrufe zu generieren und spricht dann einen definierbaren Text.
            (Voraussetzung ist, dass ein SIP-Proxy (z.B.eine Fritz!Box) vorhanden ist und eine IP-Nebenstelle eingerichtet ist.)
            Außerdem kann es MFV-Codes an den Miniserver an einen Virtuellen Eingang zurückmelden (z.B. als Empfangsbestätigung oder zum Öffnen der Tür).
            Mögliche Nutzung als Caller-Service / zur Alarmierung
            Loxone Miniserver (letzte Beta) in KNX Umfeld

            Kommentar

            • Frank71
              Extension Master
              • 25.08.2015
              • 110

              #9
              Hi, ich wäre gerne als Tester dabei .... bieten kann ich eine Türklingel auf einem Eingang der Lox und eine Fritzbox mit Fritzphone oder DECT

              Gruss Frank

              Gesendet von meinem SM-G930F mit Tapatalk

              Kommentar

              • Gast

                #10
                Einen wunderschönen guten Abend...

                Ich würde es auch gerne testen da ich es dringend brauche. Meine alte Anlage die für das Klingeln zuständig ist löst sich langsam auf.

                Gruß Jens

                Kommentar

                • Gast

                  #11
                  Hi, ich könnte diese Funktion auch sehr gut gebrauchen -> Anruf bei Alarm, Anruf beim Auslösen der Rauchmelder ect.

                  Meine Frage dazu wäre nun noch, das ganze als Version für eine Synology NAS ist wohl eher nicht denkbar?
                  Da lass ich jetzt auch meine SONOS Boxen drüber laufen (Verbindung zu Lox), und jetzt noch ein Gerät für die Telefonie, hm.

                  Oder wenn das nicht geht, es wird wohl auch einen Webserver für den Raspberry 3b geben? Dann könnte ich die SONOS Geschichte auch darüber laufen lassen. (Das Thema Raspberry ist ganz neu für mich, daher frage ich so blöd nach).

                  Danke für eine Info!
                  Gruß

                  Kommentar


                  • Wörsty
                    Wörsty kommentierte
                    Kommentar bearbeiten
                    Synology: Nein, Sorry.
                    Raspberry Version ist beim LoxBerry bisher egal. Wir versuchen das mit allen kompatibel zu halten.
                    -
                    Allerdings sind die alten <3 sehr langsam....
                    Und bei den Preisen kann ich die Anschaffung eines 3er Raspberry nur empfehlen.
                • Gast

                  #12
                  Hallo,

                  So, hab jetzt mal getestet... Alles super. Aaaaaaber...

                  ne ne, nix zu Beanstanden.

                  Einen Wunsch hätte ich allerdings noch.
                  Ich könnte mir noch eine einstellbare Begrenzung der Rufzeit vorstellen.
                  Stelle mir grad vor das ich der Türklingel einen Rufton zuweise und ich dann trotzdem abnehmen muss oder ewig warte bis es wieder ruhig ist.
                  Ist bzw. war bei meiner alten TK-Anlage jedenfalls so.

                  Grübel schon wieder über weitere Möglichkeiten nach

                  Gruß Jens

                  Kommentar

                • Wörsty
                  LoxBus Spammer
                  • 06.11.2015
                  • 203

                  #13
                  Habe die v0.3 rausgebracht. Mehr siehe http://www.loxwiki.eu/display/LOXBERRY/Text2SIP
                  Loxone Miniserver (letzte Beta) in KNX Umfeld

                  Kommentar

                  • Gast

                    #14
                    Sorry, hat sich jetzt doch erledigt!
                    Habe das Passwort für den SIP Zugang noch mal angepasst, und nun gehts. War wohl ein Sonderzeichen schuld dran?!

                    --

                    Hi, ich hab da ein kleines Problem. Wenn ich einen Call absetze, bekomme ich folgenden Fehler im Log:

                    Code:
                     Start job from /opt/loxberry/data/plugins/text2sip/wav/Text2SIP_c4fm.job.tsp @ Wed Nov 23 21:27:33 2016
                    Wed Nov 23 21:27:33 2016 ## Generating voice
                    Wed Nov 23 21:27:33 2016 ## Converting voice
                    Wed Nov 23 21:27:33 2016 ## Calling 01xxxxxxxxx
                    /opt/loxberry/webfrontend/cgi/plugins/text2sip/bin/sipcmd: error while loading shared libraries: libopal.so.3.10.10: cannot open shared object file: No such file or directory
                    Wed Nov 23 21:27:33 2016 ## Deleting files
                    ################################ End job from /opt/loxberry/data/plugins/text2sip/wav/Text2SIP_c4fm.job.tsp
                    2016-11-23 21:27:41 [LOG] Show logfile
                    Ein Anruf kommt nicht an.
                    Habe einen PI3 mit Loxberry 0.2.1-frodo.img und Text2SIP 0.3.

                    Was mache ich falsch?

                    Danke!
                    Zuletzt geändert von Gast; 23.11.2016, 22:48. Grund: Erledigt

                    Kommentar


                    • Wörsty
                      Wörsty kommentierte
                      Kommentar bearbeiten
                      Minimum 0.2.3 vom LoxBerry.
                  • Gast

                    #15
                    Hallo,

                    Ein Problem habe ich jetzt doch festgestellt.
                    Wenn ich den Anruf mit einem Fritz!Fon C4 annehme hört sich das total übersteuert an ohne extrem laut zu sein.
                    Habe 6 Telefone an der Anlage angeschlossen und bei allen Apparaten ist es super zu verstehen(2xDect, 1xISDN, 2xanalog, 1x IP(Android)).
                    Ich hätte den Verdacht das es an der HD Telefonie liegt...

                    Gruß Jens

                    Kommentar


                    • Gast
                      Gast kommentierte
                      Kommentar bearbeiten
                      So, hab durch Zufall in den Einstellungen vom Dect Gerät die Einstellung HD Telefonie gefunden und abgeschaltet.
                      Jetzt kann man die Ansage auch verstehen.

                      Vielleicht gibt es dafür demnächst auch noch eine Lösung...

                    • Wörsty
                      Wörsty kommentierte
                      Kommentar bearbeiten
                      Von mir nicht. :-) Mit den Codec's habe ich nix zu tun. Das machen die Tools selbst.

                    • Gast
                      Gast kommentierte
                      Kommentar bearbeiten
                      Ist ja auch erstmal egal.
                      Das Plugin ist einfach Super.
                      Vielen, vielen Dank nochmal dafür...
                  Lädt...