Raspberry Pi vatten larmsystem (5 / 10 steg)
Steg 5: Konfigurera din Pi för VoIP
Raspberry Pi ska göra några alert telefonsamtal med hjälp av en telefon nummer lista och en "prespoken" wav-fil. En stor insats i denna fråga har gjorts av Binerry. Vi införliva hans arbete i det aktuella projektet.
Binerry har omfattat en text till tal (TTS) motor som vi inte behöver eftersom vi använder en röstfil registreras av oss själva. Vi fortfarande installera TTS-motor för att undvika att ändra för mycket av hans manus. Vi installerar därför eSpeak.
lämplig-få installera espeak espeak-data
För att ringa samtal använder vi en sip/voip-baserade system. Verktyget favorit är PJSIP. Det ger inte bara ett kommandoradsgränssnitt - det ger en kraftfull bibliotek/api (PJSUA) för att använda inom egen sip-baserade projekt. Först installerar vi några bibliotek:
lämplig-få installera subversion build-essential automake autoconf libtool libasound2-dev libpulse-dev libssl-dev libsamplerate0-dev libcommoncpp2-dev libccrtp-dev libzrtpcpp-dev libdbus-1-dev libdbus-c ++-dev libyaml-dev libpcre3-dev libgsm1-dev libspeex-dev libspeexdsp-dev libcelt-dev
Börja använda PJSIP/PJSUA behövs till data överför och kompilerat den. Jag använder en Fritz! Om du vill ringa till omvärlden. Det rekommenderas för att använda en Fritz! Om du vill inaktivera vissa codecs och alternativ med PJSIP/PJSUA enligt kommentar från tgwaste på Binerrys sida. Som undviker problem med ljudet. Därmed skapar vi en bash fil "PJSIP_INSTALL.sh" i mappen water_alarm_system med följande innehåll (se bifogade filer):
#! / bin/bash
väljer = "--inaktivera-flytande-punkt--inaktivera-speex-aec--inaktivera-stor-filter"
codecs = "--inaktivera-gsm-codec--inaktivera-speex-codec--inaktivera-l16-codec--inaktivera-ilbc-codec--inaktivera-g722-codec--inaktivera-g7221-codec"
CD/usr/src
rm -rf /usr/src/trunk
SVN checkout http://svn.pjsip.org/repos/pjproject/trunk
CD /usr/src/trunk;. / configure $opts $codecs & & göra dep & & göra rent & & göra & & göra installera
Kör filen med kommandot bash
PJSIP_INSTALL.sh
kommer att hämta och kompilera PJSIP/PJSUA med inställningarna. Efterbehandling sammanställning kommer att ta tid (du kan ha en kopp kaffe eller två under tiden).
Det är nödvändigt att registrera Raspberry Pi som en ny telefon på Fritz! om du vill få användarnamnet (till exempel 625) och lösenordet för ditt val.
Binerry utvecklat verktyget SIPCALL som kan enkelt göra ett automatiserat samtal till ett visst antal med en text till tal-motor eller spela en WAV-fil. I det aktuella projektet spela vi bara en WAV-fil eftersom det är tillräckligt för att ge en varning.
SIPCALL är lätt användbar via bash-script till exempel för att kontrollera ett system eller sensor tillstånd och ringa ett samtal om en kritisk gräns är nådd. SIPCALL kan laddas ner från Binerry's github-databasen. Filerna "Makefile" och "sipcall.c" krävs och måste lagras i mappen "hem/pi/water_alarm_system". Allmän information finns också i readme-filen. För att sammanställa sipcall behöver du pkg-config-package:
apt-get install pkg-config
Innan compling vi ändra skriptet för att undvika att använda den .wav-fil som genereras av TTS-motor men med hjälp av våra egna inspelade röstfil deklarerats av den rörliga play_file, till exempel "alarm_phrase.wav" (se listan över variabler i slutet av denna artikel).
CD /home/pi/water_alarm_system
Sök i sipcall.c för "syntetisera tal". Lägg till i raden under "/ / funktionshindrade:" att få "/ / funktionshindrade: synthesize_speech(app_cfg.tts_file);" Nu kompilera med kommandot
göra sipcall
Om du får fel meddelanden "herrelösa"\240"" och "herrelösa" \302"" de hänvisar troligen till vissa udda icke-synliga tecken du fick till din kod genom att kopiera från webbläsaren. Som kan bero på tangentbordsinställningarna. Hur som helst, du kommer att bli av med dessa falska tecken genom att ange kommandot
TR-d "\240\302" sipcall2.c
Sedan bort "sipcall.c" och Byt namn på "sipcall2.c" till "sipcall.c". Kör kommandot "gör sipcall" igen och du lyckas sammanställningen. För att förenkla ditt liv, kan du bara ta den bifogade färdiga att använda filer "sipcall.c" och "Makefile".
Det är ett trevligt alternativ i "sipcall.c" som kan du välja en PJSUA_LOG_LEVEL mellan 0 och 6. Som låter dig kontrollera mängden meddelanden sipcall kommer tillbaka på utförande och är mycket hjälpsam spåra problem. Men glöm inte att kompilera om efter varje ändring.
WAV-filen måste skapas separat genom att registrera din "tal" med en mikrofon. Ett lätt är sätt att använda Microsofts Ljudinspelaren som finns gratis på alla versioner av fönster. Den resulterande wma-filen måste konverteras till en WAV-fil. Detta kan göras på Windows med kommersiell programvara AVS Audio Converter. Inställningarna måste vara
codec PCM, kanal mono, bitrate 128 kbps, samplingsfrekvens 8000 Hz, prov storlek 16-bitars
för att undvika problem med ljudet (åtminstone med en Fritz! Box). Play_file har kopieras till mappen "water_alarm_system" på Raspberry Pi. Detta kan göras på Windows för anföra som exempel med SSH-klient Tunnelier. Det kräver SSH för att aktiveras på Raspberry Pi. Hur man gör det är väl förklarat i denna video.
Det rekommenderas att regelbundet uppdatera PJSIP/PJSUA källkoden till den senaste versionen genom att köra kommandot "bash PJSIP_INSTALL.sh" än en gång.