Ankündigung

Einklappen
Keine Ankündigung bisher.

KNX - HomeServer - Asterisk

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

    [OT] KNX - HomeServer - Asterisk

    Hi,

    I need some help with the following scenario.

    Based on a KNX event (alarm) I want to trigger a Asterisk action (ring the phone).

    The KNX part works fine: an intrusion triggers a KNX event, the
    HomeServer can send a telegramme (TCP/UDP) to a predefined adress, but I've no idea about how to receive that event in Asterisk and trigger an action.

    Thank you for your advice.

    PS: I've tried to send data directly to the phone, but that seems a dead end. Documentation is scarce.

    #2
    Workaround ASTERISK

    Ziel ist, den Asterisk mittels einem vom HS absetzbaren Befehl einen Anruf absetzen zu lassen.
    Wichtig hierbei ist mir, daß ich nicht mit Callfiles arbeiten will, das ist schlecht zu supporten.

    1.) User anlegen
    in meinem Fall habe ich einen User "Homeserver" angelegt, das Passwort ist da dann "geheim"

    2.) Modifikation der Extensions_Customs.conf

    Hier habe ich einen Abschnitt
    [HS-CALL]
    angelegt.

    hierin muss folgendes stehen:
    exten => *112,1,SIPAddHeader(P-Preferred-Identity:<tel>${CALLERID(num)}>)
    exten => *112,n,Dial(SIP/anzurufendeNummer@IPdesAsterisk,15)

    die Callerid kann zwar beim Aufruf mit Telnet mitgegeben werden, kommt aber nicht raus, vermutlich setzt ASTERISK da an falscher Stelle auf. Für mich ist diese aber wichtig, denn mittels der CallerID kann ich feststellen, welcher Apparat anruft und welcher Fehler damit verbunden ist.

    Die zweite Zeile ruft dann über SIP die Nummer an, die 15 am Ende ist die Ringtime

    Dann eine Telnetverbindung aufbauen mit Telnet IPdesAsterisk 5038

    dort dann einloggen mit
    action: login
    username: Homeserver
    secret: geheim

    dann folgende Befehle absetzen:
    Action: originate
    channel: local/*112@HS-CALL
    CallerId: 99
    priority: 1
    Enter
    Enter

    damit wird Asterisk dann von dem "virtuellen" Endgerät 99 einen Anruf mit 15 sekunden Dauer initialisieren. Als "Weg" wird der Abschnitt HS-CALL genommen.

    @Warichet, 4U... Peter
    never fummel a running system...

    Kommentar


      #3
      Zitat von TRex Beitrag anzeigen
      @Warichet, 4U...
      Thanks

      In the mean time, I made it work without Asterisk, by sending SIP messages. Instead of having an alarm bell in the sleeping room, I let the Cisco phone ring. I've to hook off/hook on to acknowledge the alarm, and then go to the display to look from where the alarm has been generated.

      Just for you to laugh ... 2 weeks ago, I got an alarm from the garage (the door was still locked). It was a "Fledermaus" flying too close of a motion detector...

      Kommentar


        #4
        Hi
        @Trex: wie initierst du die Telnetverbindung vom HS?

        Gruß
        Thorsten

        Kommentar


          #5
          ok, zusammengefasst guckscht Du da:

          https://knx-user-forum.de/knx-eib-fo...tml#post190746
          never fummel a running system...

          Kommentar


            #6
            Hallo Thorsten,
            ich habe das so eingebaut:

            Ich stelle eine Verbindung her zu Asterisk-IP, auf Port 5038 ( der Asterisk - Telnet Port )

            Dann die Befehle nacheinander abarbeiten wie in der JPG.
            Geht super schnell und prima

            Die Absendernummer lässt sich mit dem Script verändern, damit kann ich einen Rufnummernblock aus 10 NRN für 10 Meldungen verwenden.

            Diese 10 NRN sind in meinem Telefonbuch eingespeichert mit den entsprechenden Klartextmeldungen.

            Also, der Absender-ID 95 ist dann z.B. Störung der Hebeanlage

            User dafür anzulegen ist nicht notwendig, allerdings musst Du eben sicherstellen, daß nicht irgendwann ein Apparat auf die Nummer geschaltet wird.

            Was mir noch nicht gelungen ist, und da wäre ich für etwas Hilfe dankbar ist

            1.) das Umschalten der TAG / Nachtschaltung ( bei mir mit Code *271 )
            2.) Ausgabe des Zustandes.

            Da muss ich mich wohl näher mit beschäftigen ;-)

            Du machst die Rückmeldung mit Netcat (NC), auf dem HS empfängst Du dann das Telegramm? Wie sieht das denn bei Dir im Empfang des HS aus?
            Angehängte Dateien
            never fummel a running system...

            Kommentar


              #7
              Hi
              interessanter Ansatz die Telnet-Kommandos so zu schicken - hätte nicht gedacht das das funktioniert.
              Rückmeldungen mache ich eigentlich fast garnicht vom Asterisk zum HS.
              Wenn ich eine Meldung brauche (z.B. Haustürklingel, oder anruf kommt) erzeuge ich im dialplan ein KNX-Telegram:
              Code:
              exten => 1,n,system(groupswrite ip:<ip> 0/8/15 1)
              Die "Buslast" dürfte verkraftbar sein - und KNX-Telegramme werden halt sauber vom HS gemanaged (IP-Telegramme empfangen finde ich da fummeliger)

              Ich hab auch keine Tag/Nachtschaltung - aber eine An/Abwesenheitsschaltung. In dieser definiere ich die interne Rufnummern die bei ankommenden anrufen läuten sollen. Wenn ich nicht da bin klingelt es auch auf dem Handy.
              Im Dialplan wähle ich z.B. dial(${HAUS},45,t)
              Hier z.B. der netcat-satz für anwesend:
              Code:
              ACTION: LOGIN
              USERNAME: user
              SECRET: istgeheim
              EVENTS: OFF
              ACTION: SetVar
              Variable: Haus
              Value: SIP/wohnzimmer&SIP/esszimmer
              ACTION: SetVar
              Variable: Klingel
              Value: SIP/wohnzimmer&SIP/esszimmer
              ACTION: Logoff
              Was passiert bei deiner Tag/Nachtschaltung?
              Beim Asterisk ist es wie beim HS: 1000 wege führen zum Ziel :-)

              Gruß
              Thorsten

              Kommentar


                #8
                hmmm,

                das mit groupswrite kenne ich nicht, muss ich da was installieren?
                Ich dachte ich schicke mit NC ein Telegramm an den HS-Port und der empfängt das dann. Auf diese Art könnte ich dann z.B. Licht im Büro schalten usw.

                Wo ich echt grad "scheitere" ist die rückmeldung. Man könnte ja sagen, ich sehe dass das Licht an ist, aber als Perfektionist hätte ich gerne, daß eben am Telefon auch die Kontrolleuchte brennt ;-)

                Genau das ist auch das Problem am Dialplan. Ich kann die Tag-/Nachtschaltung nicht erkennen, ich muss anrufen ( bei mir Code *271) und dann togglet das. Also schalte ich und muss nochmal anrufen.

                Ich suche eine Möglichkeit das ohne den Toggle auszulesen.

                Wird höchste Zeit, einen SIP-Client auf den HS zu basteln.... ;-)
                NILS, MAKKI usw, wo seid ihr??
                never fummel a running system...

                Kommentar


                  #9
                  Hi,
                  also groupswrite ist ein teil vom eibd.
                  Hast du linux drauf? (vermutlich) - dann binde dir mal dein eibd ein (anleitungen dürftest du hier finden).
                  Dann die nächste Frage: hast du ein ip-interface?
                  Dann kann du dieses Nutzen. Der eibd (auf dem Asterisk host) wird konfiguriert das er das IP-Interface (oder auch wiregate - falls vorhanden) nutzt.
                  Jetzt kannst du im Dialplan alles gemütlich per KNX-Telegram zum HS schicken -> ultrastabil und ohne "netcat"-kram.

                  Wenn du in deiner Nachtschaltungs-Logik ein passendes Telegram per "system(groupswrite ip:<gateway> 0/8/15 1)" schickst - weiß der HS bescheid ob Tag oder Nacht aktiv ist...

                  Wir können das Thema gerne mal telefonisch besprechen - und du postest hier das ergebniss... das könnte den Prozess beschleunigen? :-)

                  Gruß
                  Thorsten

                  PS: wass pasiiert bei deinem *271 im Dialplan? Gib mal eine kurze erklärung wie du Tag/Nacht realisiert hast...

                  Kommentar


                    #10
                    ich habe kein eibd drauf, das ist mir zu kompliziert, außerdem will ich die "Intelligenz" nur im HS haben.

                    Habe jetzt einen weiteren Abschnitt eingebaut der ein netcat - Kommando losschickt. Aus meiner Sicht am einfachsten.

                    Die Frage ist doch, ob ich die Telegramme via TCP oder auf dem BUS losschicke....
                    never fummel a running system...

                    Kommentar


                      #11
                      Yo - sicherlich Ansichtssache.
                      eibd selbst ist garnicht so kompliziert wie es sich (vielleicht) anhört - vor allem wenn man eine IP-Schnittstelle oder ein WG eh im netz hat.
                      Und "intelligent" ist eibd eh nicht - es ist ein einfacher Weg was auf den Bus zu schicken.
                      Bustelegramme finde ich als DEN weg wenn für eine KNX-Implementierung - UDP gehen nur mit dem HS und habe da so meine Bedenken was die Transaktionssicherheit angeht...

                      Gruß
                      Thorsten

                      Kommentar


                        #12
                        again what learned

                        Makki

                        P.S.: Am Rande angemerkt: genau deswegen will ich das nicht mehr im HS haben; Ehrlichgesagt hat es mich nach einigen Monaten angek*** wenn der HS nach dem Klingeln + öffnen der Hautür (manch)mal 5-30 Sekunden bedenkzeit hatte, um den Anruf zu killen.
                        Ja, das ist schon komplizierter, aber dafür funktioniert es jetzt ohne HS auch endlich 100% so wie es soll
                        (-> Details auf Anfrage)
                        EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
                        -> Bitte KEINE PNs!

                        Kommentar


                          #13
                          @Makki, -> Anfrage gestartet.

                          Mein Problem ist, daß ich die NULL - Linux - Maschine bin. Da brauche ich immer fremde Hilfe.

                          Habe im Asterisk jetzt mit hängen und würgen einen Systembefehl hinbekommen, der mir via Netcat und Port xxx eine 1 an den HS schickt.

                          Ihr habt sicher Recht, vllt. istst im Asterisk besser aufgehoben, aber einen wenn man nix davon versteht.....

                          Warum macht Ihr nicht ein "Anbindungstool" ? würde gerne als Juniorpartner mitmachen und was dabei lernen.
                          never fummel a running system...

                          Kommentar


                            #14
                            Hi Makki,

                            ich bin (manchmal) zu blöd um zwischen den Zeilen zu lesen

                            Zitat von makki Beitrag anzeigen
                            again what learned
                            ...
                            P.S.: Am Rande angemerkt: genau deswegen will ich das nicht mehr im HS haben;
                            ...
                            (-> Details auf Anfrage)
                            • Was hast du gelernt? (oder war das Ironie?)
                            • Weswegen willst du was nicht im HS haben?


                            BTW:Meine Türöffnungs/Klingelabschaltgeschichte - die auf den Tips von dir basiert - funktioniert ohne erkennbare Verzögerung.

                            Und: Anfrage auch von mir gestartet

                            @TRex: nochmal: wenn du eine IP-Schnittstelle (oder WG) im Netz hast ist das Nutzen von "eibd" kinderleicht. Eigentlich nutzt du dann gar kein eibd, sondern nur "groupswrite" (ist ein Binary, kein complieren o.ä. notwendig).
                            Und das vom Asterisk einfach mit extren => x,y,system(groupswrite ip:<adresse> <knx-adresse> <wert 0 oder 1> senden.
                            Statt groupswrite gibt es dann noch groupwrite - für 1-Bit werte.
                            Das Fehlende "Linux-Know-How" kriegen wir hin - wenn du Asterisk ans fliegen gebracht (Respekt) hast ist das ein klacks.

                            Ein hs-logikbaustein zu schreiben um mit der Asterisk-Management-Schnittstelle zu arbeiten wäre mal eine Idee - aber mir fehlen die Programmierfähigkeiten (und auch ein bisschen der Nutzen, da es ja eigentlich läuft). Ich hab halt (wegen meiner Fehlenden Programmierfähigkeiten) alles in das udplistener.sh eingebaut. Entweder callfiles für durchsagen und Babyfon und ein paar management-api-scripts die per netcat laufen...

                            Gruß
                            Thorsten

                            Kommentar


                              #15
                              Thorsten, danke für die Blumen,

                              dann mach doch mal ne Anleitung wie ich das Binary reinbekomme, registriert kriege und dann versuch ichs...

                              Wie gesagt, Mister Null Plan
                              never fummel a running system...

                              Kommentar

                              Lädt...
                              X