gateway.da

Bygger en fjernbetjening til rigtige biler

SMS bruges til at låse bildørene

[Københavns Delebiler][] modtager snart et nyt parti elbiler. De nye biler indeholder en mobiltelefon knyttet til dørlåsen, så den kun lukker medlemmer ind der har reserveret tid nu.

Jeg sætter systemet op som forbinder bilerne med deres reservationskalender.

Overordnet er ideen at…

  1. Forbinde en normal mobiltelefon til en computer.
  2. Overføre sms beskeder modtaget på telefonen til kalenderen.
  3. Sende beskeder fra kalenderen gennem telefonen.
  4. Lade systemet stå i et hjørne, tændt døgnet rundt.

Det meste af mit arbejde går ud på at undgå måder ting kan gå galt på — som så ofte sker når computere er involveret.

Hvad nu hvis…

  • beskeder bliver forsinkede eller går tabt?
  • en kæde af beskeder dukker op i forkert rækkefølge?
  • beskeder sendes hurtigere end de kan ekspederes?

Robust snak

Menneskesnak er mest robust med jævn tale. Slang, sarkasme eller vittigheder øger risiko for misforståelser. Dette minder meget om computersnak.

Når du surfer på nettet, henter din webbrowser websider med "GET" (hent), og en søgning eller anden formular sendes den med "POST" (send). Ordene "GET" og "POST" er "jævn tale" på Spindet - World Wide Web - defineret som et princip kaldet "REST" eller "RESTfuldt design".

Jeg brugere værtøjet Kannel til at snakke direkte med telefonerne. Når en sms modtages på telefonen, "GET"'er Kannel den til kalenderen. Det er svagt formuleret — den burde have "POST"et beskeden i stedet.

Kannel er et ret stabilt værktøj, men snakker ikke RESTfuldt. Det kræver ekstra opmærksomhed andre steder i systemet for at undgå fejl i særlige situationer.

Det bekymrer mig.

Hver bil har en dagbog

Jeg opsætter derfor en "bro" fra Kannel til RESTfuld snak. Og vælger den klassiske blogging (web-dagbog) som samtalestil:

  • Delebilsflåden er en blogroll (dagbogssamling)
  • hver bil har en blog (dagbog)
  • hver sms sendt fra en bil er et blog (dagbogs)indlæg

Der er to typer blogging (dagbøger) — RSS og Atom. Begge dækker distribution af beskeder. Jeg bruger Atom fordi det er nyest og smartest, og fordi det også dækker oprettelse og redigering af beskeder, gennem udvidelsen AtomPub.

AtomPub kan tillade kalenderen at oprette en tom besked — som så udløser at en sms fra bilen fylder indhold ind i den.

AtomPub kan også lade kalenderen "PUT"te mærkater på eksisterende beskeder, for at notere dem som behandlet, læst osv., og lade en administrator eller en oprydningsrutine "DELETE" (slette) forældede beskeder eller hele blogs. Ordene "PUT" og "DELETE" er også RESTfuld snak.

Systemet danser!

Min sms-til-blog bro er skrevet i Perl, med hjælpesystemet Dancer.

Dancer (danser) gør det nemt at opsætte RESTfuld web-snak, og da jeg kontaktede forfatterne på IRC, udvidede de hurtigt til at understøtte den ikke-RESTfulde finurlighed jeg havde brug for.

Min sms-til-dagbogsbro er endnu ikke færdig, men basale rutiner fungerer. projektet er offentligt, og koden er Fri Software.