27/04/2019
I en verden, der bliver stadig mere forbundet via internettet, kan det virke som et levn fra fortiden at tale om SMS-teknologi. Men i mange dele af verden, hvor internetdækningen er upålidelig eller energiforsyningen er knap, er SMS fortsat en utrolig robust og essentiel kommunikationsform. Forestil dig et land, hvor kun en brøkdel af befolkningen har adgang til stabil elektricitet; her bliver smartphones en luksus, mens de mere energieffektive 'dumb phones' eller funktionstelefoner dominerer. I disse scenarier er SMS ikke bare en beskedtjeneste – det er en livline, der muliggør alt fra mobile betalingssystemer som M-Pesa til indsamling af kritiske sundhedsdata via SMS-baserede applikationer. Denne artikel er din komplette guide til at forstå og udnytte kraften i et GSM-modem, en enhed, der bygger bro mellem den digitale verden og det globale mobilnetværk.

Hvad er et GSM-modem og hvorfor er det relevant?
Et GSM-modem er en hardwareenhed, der bruger GSM-mobilnetværket (Global System for Mobile Communications) til at sende og modtage data. Tænk på det som en mobiltelefon uden skærm, tastatur eller højttaler. Dets primære funktion er at fungere som et modem, der kan kommunikere over mobilnetværket. Det tilsluttes typisk en computer eller en anden enhed (som en Raspberry Pi) via USB eller en seriel port. For at fungere kræver det et aktivt SIM-kort, præcis som en almindelig mobiltelefon.
Relevansen af GSM-modemer ligger i deres alsidighed og pålidelighed. De giver udviklere og virksomheder mulighed for at bygge systemer, der kan sende og modtage SMS-beskeder automatisk. Dette er fundamentet for:
- SMS-notifikationer: Systemer, der sender påmindelser, advarsler eller bekræftelser via SMS.
- Tovejskommunikation: Applikationer, hvor brugere kan interagere med en tjeneste ved at sende SMS-beskeder, f.eks. til afstemninger, dataindsamling eller kundesupport.
- Maskine-til-maskine (M2M) kommunikation: Enheder i felten, der sender statusopdateringer eller data tilbage til en central server.
Det er vigtigt at vælge et modem, der understøtter 'AT'-protokollen. AT-kommandoer er et sæt standardiserede instruktioner, der bruges til at styre modemet, og de er kernen i at få dit system til at fungere.
Grundlæggende Konfiguration: Forståelse af AT-kommandoer
For at kommunikere med dit GSM-modem skal du bruge et sprog, det forstår. Dette sprog er sættet af AT-kommandoer (Attention Commands). Disse kommandoer giver dig mulighed for at udføre en lang række opgaver, fra at tjekke signalstyrken til at sende en besked. En af de mest fundamentale kommandoer, du skal kende, er AT+CMGF.
Indstilling af beskedformat med AT+CMGF
Kommandoen AT+CMGF (Message Format) bruges til at vælge, hvilket format modemet skal bruge til SMS-beskeder. Den har to primære tilstande:
- PDU-tilstand (Protocol Data Unit): Angives med værdien
0. Dette er en mere kompleks, binær repræsentation af en SMS. Den giver fuld kontrol over alle beskedens parametre, men kræver kodning og afkodning. Dette er ofte standardtilstanden. - Tekst-tilstand: Angives med værdien
1. Dette er en simpel, letlæselig tekstbaseret tilstand, hvor beskeder kan skrives og læses som almindelig tekst. Den er ideel for begyndere og til mange standardapplikationer.
Her er, hvordan du interagerer med kommandoen:
- Tjek understøttede tilstande: For at se, hvilke tilstande dit modem understøtter, kan du sende en testkommando.
- Indstil driftstilstanden: For at skifte til Tekst-tilstand, skal du sende følgende kommando.
- Aflæs den nuværende tilstand: For at finde ud af, hvilken tilstand modemet i øjeblikket er i, kan du bruge en læsekommando.
AT+CMGF=?
Et typisk svar fra modemet vil være: +CMGF: (0,1), hvilket indikerer, at både PDU (0) og Tekst (1) tilstand er understøttet.
AT+CMGF=1
Hvis det lykkes, svarer modemet med OK. Hvis tilstanden ikke understøttes, vil du modtage en ERROR.
AT+CMGF?
Svaret +CMGF: 1 betyder, at modemet er i Tekst-tilstand.
At mestre AT+CMGF er det første skridt mod at kunne sende og modtage beskeder med dit modem.
Praktisk Anvendelse: Byg dit eget SMS-center
At have et GSM-modem er kun begyndelsen. For at bygge en skalerbar og robust applikation har du brug for software til at styre kommunikationen. Her vil vi skitsere, hvordan du kan bygge dit eget 'SMS-center' ved hjælp af open source-værktøjer som Python, Kannel og RapidSMS.
Nødvendige Komponenter
- En computer: En Debian-baseret Linux-distribution (som Ubuntu) er ofte foretrukket. En lille enhed som en Raspberry Pi er overraskende kraftfuld nok til dette.
- GSM-modem: Med et aktivt SIM-kort. Sørg for, at det ikke er konfigureret til at bruge internet og SMS samtidigt, da dette kan skabe konflikter.
- Python og Virtualenv: Til at bygge din webapplikation i et isoleret miljø.
- RapidSMS: Et Django-framework specielt designet til at bygge interaktive SMS-applikationer.
- Kannel: En open-source WAP- og SMS-gateway, der fungerer som en kraftfuld mellemmand mellem dit GSM-modem og din RapidSMS-applikation. Mange teleselskaber bruger Kannel på deres store servere, hvilket vidner om dets stabilitet.
Trin-for-trin Oversigt
Processen involverer at sætte din webapplikation op og derefter konfigurere Kannel til at dirigere SMS-trafik til og fra den.

- Forbered dit miljø: Installer Python og
python-virtualenvpå din maskine for at holde dine projekt-afhængigheder adskilt. - Byg din RapidSMS-applikation: Følg de officielle RapidSMS-tutorials for at oprette et grundlæggende projekt. RapidSMS håndterer logikken i at modtage beskeder, behandle dem og sende svar.
- Installer og konfigurer Kannel: Kannel er den kritiske komponent, der taler direkte med dit GSM-modem. Du skal installere Kannel og derefter redigere dens konfigurationsfil (
kannel.conf). Her specificerer du, hvilken seriel port dit modem er tilsluttet, og vigtigst af alt, hvordan Kannel skal videresende indgående SMS-beskeder til din RapidSMS-applikation (typisk via en HTTP-anmodning) og omvendt. - Start systemet: Når alt er konfigureret, starter du Kannel og din RapidSMS-server. Nu har du en fuldt funktionel SMS-gateway, klar til at sende og modtage tusindvis af beskeder.
Med en sådan opsætning, selv på en billig Raspberry Pi til få hundrede kroner, kan du bygge utroligt kraftfulde systemer, der efterligner funktionaliteten af dyre, kommercielle løsninger.
Fejlfinding: Forståelse af GSM-fejlkoder
Når du arbejder med AT-kommandoer, vil du uundgåeligt støde på fejl. Et simpelt ERROR-svar er ikke særlig informativt. Heldigvis understøtter de fleste moderne GSM-enheder udvidede fejlkoder. Du kan aktivere denne funktion med kommandoen:
AT+CMEE=1
Når den er aktiveret, vil du modtage mere detaljerede fejlmeddelelser i formatet +CME ERROR: xxx eller +CMS ERROR: xxx. At forstå forskellen er afgørende for effektiv fejlfinding.
- +CME ERROR (Mobile Equipment Error): Disse fejl er relateret til selve enheden (modemet). Det kan være problemer som et manglende SIM-kort, en forkert PIN-kode eller fuld hukommelse.
- +CMS ERROR (Messaging Service Error): Disse fejl er relateret til netværket eller SMS-tjenesten. Det kan være problemer som manglende netværksdækning, en ugyldig modtager eller en fejl i selve SMS-centret.
Tabel over CME-fejlkoder (Udstyrsrelaterede fejl)
Nedenfor er en omfattende tabel over almindelige CME-fejlkoder og deres betydning. Denne liste er et uvurderligt værktøj, når dit system ikke opfører sig som forventet.
| Fejlkode | Beskrivelse |
|---|---|
| CME ERROR: 0 | Telefonfejl |
| CME ERROR: 1 | Ingen forbindelse til telefon |
| CME ERROR: 3 | Operation ikke tilladt |
| CME ERROR: 4 | Operation ikke understøttet |
| CME ERROR: 5 | PH_SIM PIN påkrævet |
| CME ERROR: 10 | SIM ikke isat |
| CME ERROR: 11 | SIM PIN påkrævet |
| CME ERROR: 12 | SIM PUK påkrævet |
| CME ERROR: 13 | SIM-fejl |
| CME ERROR: 14 | SIM optaget |
| CME ERROR: 15 | Forkert SIM |
| CME ERROR: 16 | Forkert adgangskode |
| CME ERROR: 17 | SIM PIN2 påkrævet |
| CME ERROR: 18 | SIM PUK2 påkrævet |
| CME ERROR: 20 | Hukommelse fuld |
| CME ERROR: 21 | Ugyldigt indeks |
| CME ERROR: 22 | Ikke fundet |
| CME ERROR: 23 | Hukommelsesfejl |
| CME ERROR: 24 | Tekststreng for lang |
| CME ERROR: 25 | Ugyldige tegn i tekststreng |
| CME ERROR: 26 | Opkaldsstreng for lang |
| CME ERROR: 30 | Ingen netværkstjeneste |
| CME ERROR: 31 | Netværks-timeout |
| CME ERROR: 32 | Netværk ikke tilladt, kun nødopkald |
| CME ERROR: 100 | Ukendt fejl |
| CME ERROR: 103 | Ulovlig MS (Mobile Station) |
| CME ERROR: 106 | Ulovlig ME (Mobile Equipment) |
| CME ERROR: 107 | GPRS-tjenester ikke tilladt |
| CME ERROR: 111 | PLMN ikke tilladt |
| CME ERROR: 112 | Lokationsområde ikke tilladt |
| CME ERROR: 113 | Roaming ikke tilladt i dette lokationsområde |
| CME ERROR: 132 | Servicedrift ikke understøttet |
| CME ERROR: 133 | Anmodet servicevalg ikke abonneret |
| CME ERROR: 148 | Uspecificeret GPRS-fejl |
| CME ERROR: 149 | PDP-autentificeringsfejl |
| CME ERROR: 150 | Ugyldig mobilklasse |
| CME ERROR: 257 | Opkald spærret |
| CME ERROR: 258 | Telefon er optaget |
| CME ERROR: 259 | Bruger afbrød |
| CME ERROR: 262 | SIM blokeret |
| CME ERROR: 772 | SIM slukket |
Bemærk: CMS-fejlkoder (netværksrelaterede) er også afgørende, men de varierer mere afhængigt af netværksoperatøren. De dækker typisk problemer som 'ukendt abonnent', 'tjeneste ikke tilgængelig' eller 'kortbeskedoverførsel afvist'.
Ofte Stillede Spørgsmål (FAQ)
Hvad er forskellen på PDU-tilstand og Tekst-tilstand?
Tekst-tilstand er en simpel, menneskelæselig måde at sende og modtage SMS-beskeder på, ideel til simple applikationer. PDU-tilstand er et hex-kodet format, der giver fuld kontrol over alle SMS-parametre (såsom tegnkodning, gyldighedsperiode osv.). Den er mere kompleks, men også mere kraftfuld og er nødvendig for at sende f.eks. binært indhold.
Skal jeg bruge en speciel type SIM-kort?
Nej, et almindeligt mobil-SIM-kort fra en hvilken som helst operatør vil fungere. Det er dog vigtigt at sikre, at SIM-kortet har et aktivt abonnement, der tillader afsendelse og modtagelse af SMS-beskeder, og at eventuel PIN-kode er deaktiveret eller håndteres korrekt i din opsætning.
Kan jeg bruge et GSM-modem til internetadgang samtidig med SMS?
Nogle modemer har problemer med at håndtere GPRS-data (internet) og SMS-operationer på samme tid. Det anbefales ofte at dedikere modemet til enten data eller SMS for at sikre stabilitet. Hvis du har brug for begge dele, kan det være en god idé at undersøge modemets specifikationer eller bruge to separate modemer.
Hvorfor modtager jeg kun "ERROR" og ikke en specifik fejlkode?
Dette sker, fordi udvidede fejlmeddelelser ikke er aktiveret på dit modem. Du skal sende kommandoen AT+CMEE=1 til modemet for at aktivere de detaljerede +CME ERROR og +CMS ERROR meddelelser. Det er en god praksis at inkludere denne kommando i din initialiseringssekvens.
Konklusion
At lære at bruge et GSM-modem åbner op for en verden af muligheder for at bygge pålidelige og effektive kommunikationsløsninger. Fra at forstå de grundlæggende AT-kommandoer til at bygge et komplet SMS-center med open source-software og effektivt kunne fejlfinde ved hjælp af fejlkoder, har du nu fundamentet til at starte dit eget SMS-baserede projekt. I en tid, hvor den nyeste teknologi ikke altid er den mest tilgængelige, viser GSM-modemet sig som et bevis på, at robust og veletableret teknologi stadig har en afgørende plads i at løse virkelige problemer verden over.
Hvis du vil læse andre artikler, der ligner GSM-modem: Din guide til SMS-kommunikation, kan du besøge kategorien Teknologi.
