Eine einfache Möglichkeit, einen Sprachalarm im Home Automation-System („Smart Home“) zu erstellen.

Nachdem ich den Konsolen-SIP-Client Linphonec getestet hatte, sah ich darin die Möglichkeit einer einfachen und schnellen Möglichkeit, Sprachwarnungen auf einem Mobiltelefon für ein Hausautomationssystem zu implementieren.

Ich denke, diese Methode ist für viele DIY-Hausautomationssysteme geeignet, ich werde meine Version geben.

Ich habe ein MajorDoMo Smart Home-Automatisierungssystem, das auf einem Raspberry Pi-Einplatinencomputer (mit Raspbian (Debian 9)) installiert ist.

Wir werden die Möglichkeit der Benachrichtigung von MajorDoMo an ein Smartphone ohne die Verwendung zusätzlicher Geräte und unseres VoIP-Servers schaffen.

Ein kurzes Prinzip der Warnung: Im Falle eines kritischen Unfalls (jeder kann seine eigene Unfallliste erstellen) verwaltet das Automatisierungssystem den VoIP-Client der Konsole und ruft den Eigentümer über das SIP-Protokoll an. Nach der Antwort wird die zuvor aufgezeichnete Audiodatei mit der Unfallmeldung abgespielt.

Zunächst benötigen wir zwei Konten des SIP-Anbieters mit kostenlosem Inbound / Outbound innerhalb des Netzwerks. Nehmen Sie zum Beispiel den Cloud-Telefoniedienst von Zadarma.com.

Der erste Schritt: Wir registrieren uns beim Anbieter, während wir auf Ihr persönliches Konto und Ihr SIP-Konto zugreifen. Wir können uns bei mehreren Postfächern registrieren, aber wir können das Konto auffüllen und zusätzliche Nummern erhalten. In jedem Fall sollten wir 2 Nummern (Konten) und ein Passwort haben.

Auf einem Smartphone (es funktioniert für mich unter Androd OS) installieren wir eine mobile Anwendung vom Markt, die jeder SIP-Client ausführen kann. Zur Vereinfachung und Minimierung der Anfangseinstellungen können wir die proprietäre Anwendung für Zadarma-Anrufe verwenden, aber wir können funktionaler sein.
Nach der Installation registrieren wir uns, indem wir Ihre Nummer und Ihr Passwort angeben. Damit ist die Einrichtung des Smartphones abgeschlossen. Also haben wir eine Nummer verwendet.

Auf dem Raspberry Home Automation Server benötigen wir einen Linphonec SIP-Terminal-Client. Bei der Installation aus dem Raspbian-Repository wird eine ziemlich alte Version 3.6.1 installiert, die mit dem ALSA-Soundsystem nicht ordnungsgemäß funktioniert. Da die Sprache jedoch nicht direkt verwendet werden muss, gehen wir den einfachen Weg.

Die Installation der aktuellen Version des Linphone-Pakets (3.12.0) ohne grafische Oberfläche für Debian 9 wurde in einem früheren Artikel beschrieben: DIY-Anruftaste. Raspberry Pi, MajorDoMo, Freeswitch und Linphonec . Dort finden Sie Informationen zur Installation einer USB-Soundkarte und zu den Soundeinstellungen für den Raspberry Pi.

Führen Sie im Terminal den folgenden Befehl aus:

sudo apt-get install linphone-nogtk 

Die Installation des Konsolenclient-Dienstprogramms linphonec und linphonecsh wird durchgeführt - ein Konsolenprogramm zum Verwalten von linphonec, das im Hintergrund im Verzeichnis / usr / bin ausgeführt wird.
Lassen Sie uns den ersten Lauf machen, indem Sie Folgendes eingeben:

 linphonec 

Wir starten es, der SIP-Client schwört auf ALSA, wir achten nicht darauf.

Wir führen den Clientregistrierungsbefehl (Linphonec) auf dem zadarma-Server aus und geben Ihre zweite Nummer und Ihr Passwort an:

 register sip:xxxxxx@sip.zadarma.com sip.zadarma.com PASSWORD 

Wenn die Eingabe korrekt ist, sehen wir die Antwort auf die erfolgreiche Registrierung:

Bild

Wir beenden den Client (Strg + c, während der Client die Einstellungen in der .linphonerc-Datei des aktuellen Benutzers speichert, in meinem Fall im Verzeichnis / home / pi /. Beim nächsten Start von SIP wird der Client automatisch auf dem Server des Anbieters registriert.

Wir zeichnen eine Sprachnachricht auf (zum Beispiel: "Die Aufmerksamkeit des Systems wurde neu gestartet, der Status ist jetzt in Betrieb":

 arecord -D plughw:1,0 -f cd /home/pi/alarm_restart.wav 

Um Linphonec im Daemon-Modus auszuführen und zu steuern, wird das Dienstprogramm Linphonecsh verwendet. Beim Start ist zunächst eine Initialisierung des linphonecsh -init-Clients erforderlich. Wenn dieser Befehl ausgeführt wird, wird der Konsolenclient gestartet, ohne die Konfigurationsdatei zu laden.

Damit beim Start die Konfiguration gelesen wird, führen Sie mit dem Flag Folgendes aus:

  linphonecsh init -c /home/pi/.linphonerc 

Jetzt können wir den Konsolenclient vom Terminal aus verwalten.

Linphonecsh Befehlsliste
 Usage: linphonecsh <action> [arguments] where action is one of init : spawn a linphonec daemon (first step to make other actions) followed by the arguments sent to linphonec generic : sends a generic command to the running linphonec daemon followed by the generic command surrounded by quotes, for example "call sip:joe@example.net" register : register; arguments are --host <host> --username <username> --password <password> unregister : unregister dial : dial <sip uri or number> status : can be 'status register', 'status autoanswer' or 'status hook' soundcard : can be 'soundcard capture', 'soundcard playback', 'soundcard ring', followed by an optional number representing the index of the soundcard, in which case the soundcard is set instead of just read. exit : make the linphonec daemon to exit. 



Versuchen wir die folgenden Befehle:

 linphonecsh generic 'soundcard use files' 

 linphonecsh generic 'play alarm.wav' 

 linphonecsh dial sip:@sip.zadarma.com 

Wo generisch sind die Teams des Linphonec-Programms selbst. XXXXXX ist unsere auf dem Smartphone installierte SIP-Nummer.

In diesem Fall tritt beim Beantworten ein Anruf auf - Sie können die Wiedergabe einer zuvor aufgezeichneten Datei mit einem Unfall hören.

Manuell hat es funktioniert. Um sich beispielsweise in das MajorDoMo-basierte Hausautomationssystem zu integrieren, müssen Sie den Server im Notfall neu starten.
Wir schreiben die folgende Zeile in crontab (beim Laden des PCs wird der Konsolenclient geladen:

 crontab -e 

 @reboot sudo -u pi linphonecsh init -c /home/pi/.linphonerc 

Wechseln Sie als Nächstes zur Webseite des DD-Systems und zur Systemsteuerung - Skripte - Ereignisse - Start. .



Skripte sind in der Programmiersprache PHP implementiert. Der Code enthält bereits eine Zeile, in der beim Starten des Systems eine Phrase mit der Server-IP-Adresse ausgesprochen wird.

Fügen Sie noch ein paar hinzu:

 exec ("sudo -u pi linphonecsh generic 'soundcard use files'"); 

 exec ("sudo -u pi linphonecsh generic 'play alarm.wav'"); 

 exec ("sudo -u pi linphonecsh dial sip:576935@sip.zadarma.com "); 

Wir installieren , um nach dem Speichern auszuführen , wir speichern, gleichzeitig gibt es einen Anruf auf dem Mobiltelefon.

Wir starten das MajorDoMo-System über den Dienst - Neustart / Herunterfahren neu .
Nach einem Neustart kommt eine Sprachbenachrichtigung auf dem Telefon an. Der gleiche Aktionsalgorithmus kann für einen anderen für Sie kritischen Unfall ausgeführt werden.

Nachdem Sie die Reihenfolge der Aktionen geringfügig geändert haben, können Sie Ihren eigenen IP-Telefonieserver (Asterisk, Freeswitch usw.) in Ihrem Hausautomationssystem installieren, ein VoIP-Gateway daran anschließen und direkt auf einen Mobilfunkbetreiber oder ein PSTN zugreifen. Diese Option ist funktionaler, verfügt über mehr Funktionen, erfordert jedoch auch einige hohe Kosten, sowohl für das Material als auch für die Einrichtung des Systems.

Source: https://habr.com/ru/post/de466735/


All Articles