How do I know if a GSM device has an error?

GSM-modem: Din guide til SMS-kommunikation

27/04/2019

Rating: 4.64 (12848 votes)

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.

How to select the operating mode of a GSM/GPRS modem?
Selecting the Operating Mode (AT+CMGF) The AT command +CMGF (command name in text: Message Format) is used to select the operating mode of the GSM/GPRS modem or mobile phone. It takes one parameter. The value of the parameter can either be 0 or 1. The values 0 and 1 refer to SMS PDU mode and SMS text mode respectively.
Indholdsfortegnelse

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:

  1. Tjek understøttede tilstande: For at se, hvilke tilstande dit modem understøtter, kan du sende en testkommando.
  2. 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.

  3. Indstil driftstilstanden: For at skifte til Tekst-tilstand, skal du sende følgende kommando.
  4. AT+CMGF=1
    Hvis det lykkes, svarer modemet med OK. Hvis tilstanden ikke understøttes, vil du modtage en ERROR.

  5. Aflæs den nuværende tilstand: For at finde ud af, hvilken tilstand modemet i øjeblikket er i, kan du bruge en læsekommando.
  6. 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.

How do I use a GSM modem?
To use a GSM modem, first connect it to your machine. It’s advised not to connect it to the internet because some modems are configured not to do SMS and Internet stuffs at the same time. It's also advised to use modems that use the ‘AT’ protocol. Some can be found here.
  1. Forbered dit miljø: Installer Python og python-virtualenv på din maskine for at holde dine projekt-afhængigheder adskilt.
  2. 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.
  3. 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.
  4. 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.

FejlkodeBeskrivelse
CME ERROR: 0Telefonfejl
CME ERROR: 1Ingen forbindelse til telefon
CME ERROR: 3Operation ikke tilladt
CME ERROR: 4Operation ikke understøttet
CME ERROR: 5PH_SIM PIN påkrævet
CME ERROR: 10SIM ikke isat
CME ERROR: 11SIM PIN påkrævet
CME ERROR: 12SIM PUK påkrævet
CME ERROR: 13SIM-fejl
CME ERROR: 14SIM optaget
CME ERROR: 15Forkert SIM
CME ERROR: 16Forkert adgangskode
CME ERROR: 17SIM PIN2 påkrævet
CME ERROR: 18SIM PUK2 påkrævet
CME ERROR: 20Hukommelse fuld
CME ERROR: 21Ugyldigt indeks
CME ERROR: 22Ikke fundet
CME ERROR: 23Hukommelsesfejl
CME ERROR: 24Tekststreng for lang
CME ERROR: 25Ugyldige tegn i tekststreng
CME ERROR: 26Opkaldsstreng for lang
CME ERROR: 30Ingen netværkstjeneste
CME ERROR: 31Netværks-timeout
CME ERROR: 32Netværk ikke tilladt, kun nødopkald
CME ERROR: 100Ukendt fejl
CME ERROR: 103Ulovlig MS (Mobile Station)
CME ERROR: 106Ulovlig ME (Mobile Equipment)
CME ERROR: 107GPRS-tjenester ikke tilladt
CME ERROR: 111PLMN ikke tilladt
CME ERROR: 112Lokationsområde ikke tilladt
CME ERROR: 113Roaming ikke tilladt i dette lokationsområde
CME ERROR: 132Servicedrift ikke understøttet
CME ERROR: 133Anmodet servicevalg ikke abonneret
CME ERROR: 148Uspecificeret GPRS-fejl
CME ERROR: 149PDP-autentificeringsfejl
CME ERROR: 150Ugyldig mobilklasse
CME ERROR: 257Opkald spærret
CME ERROR: 258Telefon er optaget
CME ERROR: 259Bruger afbrød
CME ERROR: 262SIM blokeret
CME ERROR: 772SIM 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.

Go up