Det aller første jeg ville gjøre var å klargjøre min RPi og sjekke om jeg fikk sendt en SMS med GSM-dongelen min. Slik gjorde jeg dette:
Via http://www.raspberrypi.org/downloads lastet jeg ned NOOBS og installerte standard Raspian på SD-kortet mitt. Beskrivelse av det du trenger finnes på nevnte adresse.
Etter første gangs oppstart opprettet jeg en egen bruker for meg (liker å ha min egen bruker):
adduser MinBruker (legger til brukeren) passwd MinBruker (setter nytt passord) sudo cp -a /home/pi /home/MinBruker sudo chown -R MinBruker:MinBruker /home/MinBruker
Å legge inn en egen bruker for meg er bare en «greie» jeg har, så miljøet blir mest mulig likt på denne enheten som de andre Linux-boksene jeg bruker. RPi kommer med en vanlig bruker som heter «pi» som er den som er ment brukt til alle vanlige oppgaver.
Deretter installerte jeg gammu, som er en programvarepakke som lar meg kommunisere med GSM-modemet og sende SMS.
$ sudo apt-get install gammu
(det installeres samtidig endel ekstra pakker pga dependencies/avhengigheter)
Jeg installerte også et par tilleggspakker, som strengt tatt ikke er nødvendige:
$ sudo apt-get install gammu-doc wammu
(det installeres samtidig endel ekstra pakker pga dependencies/avhengigheter)
Plugg inn USB-modem med SIM-kort på plass. Jeg har et Huawei E173, som skal fungere fint med RPi. Restart din RPi så denne scanner etter maskinvare og oppdager GSM-modemet.
Logg inn på din RPi med valgt bruker. Bytt til root-bruker for å få satt opp alt uten å måtte kjøre sudo hele tiden:
$sudo su -
Merk: Etter å ha byttet til root-bruker endrer kommandopromptet seg fra «MinBruker@raspberrypi ~$ » til «root@raspberrypi:/home# «. Den viktigste forskjellen er siste tegn i promptet – #. Dette tegnet indikerer at du er root.
Hva sier «dmesg»? Ble GSM-modemet funnet ved oppstart?
# dmesg | grep tty [ 0.000000] Kernel command line: dma.dmachans=0x7f35 bcm2708_fb.fbwidth=1872 bcm2708_fb.fbheight=1168 bcm2708.boardrev=0xe bcm2708.serial=0xb3cf95db smsc95xx.macaddr=B8:27:EB:CF:95:DB sdhci-bcm2708.emmc_clock_freq=250000000 vc_mem.mem_base=0x1ec00000 vc_mem.mem_size=0x20000000 dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p6 rootfstype=ext4 elevator=deadline rootwait [ 0.000000] console [tty1] enabled [ 0.530054] dev:f1: ttyAMA0 at MMIO 0x20201000 (irq = 83) is a PL011 rev3 [ 0.872363] console [ttyAMA0] enabled [ 15.580525] usb 1-1.3.4: GSM modem (1-port) converter now attached to ttyUSB0 [ 16.001385] usb 1-1.3.4: GSM modem (1-port) converter now attached to ttyUSB1 [ 16.290602] usb 1-1.3.4: GSM modem (1-port) converter now attached to ttyUSB2
Joda, dmesg viser også at GSM-modemet ble funnet ved boot, og at det har tre tilgjengelig porter (ttyUSB0, ttyUSB1 og ttyUSB2).
Sjekk om gammu også finner GSM-modemet ditt. Det er ikke mye hjelp i at Linux finner GSM-modemet hvis ikke gammu gjør det. Da er du like langt. Kjør kommandoen «gammu-detect» og se hva slags svar du får:
# gammu-detect ; Configuration file generated by gammu-detect. ; Please check The Gammu Manual for more information. [gammu] device = /dev/ttyUSB0 name = Phone on USB serial port HUAWEI_Technology HUAWEI_Mobile connection = at [gammu1] device = /dev/ttyUSB1 name = Phone on USB serial port HUAWEI_Technology HUAWEI_Mobile connection = at [gammu2] device = /dev/ttyUSB2 name = Phone on USB serial port HUAWEI_Technology HUAWEI_Mobile connection = at opening socket: No such device
Ikke bry deg om feilmeldingen nederst – det viktigste er at GSM-modemet ble funnet.
Bruk kommandoen «gammu-config» for å konfigurere gammu-oppsettet. Du må f.eks. velge hvilket av de 3 oppdagede GSM-portene som skal benyttes:
# gammu-config
Du skal nå få opp et grensesnitt for å konfigurere gammu-programvaren:
ââââââââââââââââââââââââââââââââââââââââââââââââ â Current Gammu configuration â â â â P Port (/dev/ttyUSB0) â â C Connection (at19200) â â M Model () â â D Synchronize time (yes) â â F Log file (/var/log/messages) â â O Log format (nothing) â â L Use locking () â â G Gammu localisation () â â H Help â â S Save â â â â â â <Ok> <Cancel> â â â ââââââââââââââââââââââââââââââââââââââââââââââââ
Begynn med «Port» og velg først at du vil bruke «/dev/ttyUSB0«.
Deretter velger du «Save» for å lagre inntillingen.
Det er mulig du må bekrefte lagring. Gjør i så fall det.
Etter at du har lagret kjører du kommandoen «gammu –identify» for å se om du valgte korrekt port, og at gammu klarer å hente ut informasjon fra SIM-kortet ditt. Dette skal i så fall ligne på dette:
# gammu --identify Device : /dev/ttyUSB0 Manufacturer : Huawei Model : E173 (E173) Firmware : 11.126.15.02.00 IMEI : xxxxxxxxxxxxxxx (anonymisert) SIM IMSI : xxxxxxxxxxxxxxx (anonymisert)
Hos meg fant gammu SIM-kortet på første forsøk, på port «/dev/ttyUSB0«. Jeg har sett andre rapportere at det kan variere hvilken port som er korrekt. Det kan også variere med hvilken USB-port du bruker på din RPi (eller på tilkoblet USB-hub). Hvis gammu ikke finner SIM-kortet og viser inforomasjon om dette så repeterer du forrige avsnitt («gammu-config») og velger port «/dev/ttyUSB1» før du fortsetter med dette avsnittet. Får du heller ikke nå noe resultat repeterer du rutinen og velger port «/dev/ttyUSB2».
Sett SIM-kortets PIN-kode:
gammu --entersecuritycode PIN 9999 (erstatt "9999" med PIN)
(Merk: Du får ingen tilbakemelding når kommandoen er ferdig.)
Prøv å sende en SMS, med gammu sin kommandolinje:
# echo "Testmelding fra RPi, sendt via gammu" | gammu \ --sendsms TEXT xxxyyzzz
(erstatt xxxyyzzz med riktig telefonnummer). Du skal nå få se fremdriften, og forhåpentligvis ser det ut som dette:
If you want break, press Ctrl+C... Sending SMS 1/1....waiting for network answer..OK, message reference=-1
Meldingen er sendt, det er bare å vente…
Så hva gjenstår? Dette var en enkelt, frittstående SMS. Dette må samles i et script som kan kalles og kjøres hver RPi skal sende en SMS. Jeg må også lese meg opp på mottak av SMS, så GSM-dongelen kan ta imot kommandoer via SMS, utføre kommandoen og sende resultatet til min mobil.