Smart and Telldus

Här kommer en liten mini-guide för att komma igång med utveckling mot Local API för Telldus Tellstick Znet Lite 1 och 2. Både Live API och Local API bygger på REST och JSON. Enkelt sagt så kan man säga att man bara anropar olika URL:ar för att få saker att hända. JSON är ett människo-vänligt format att skicka data/information med(mer eller mindre i klartext).

Verktyget cURL är himla smidigt att ha när man jobbar med REST. Detta verktyg finns oftast inbyggt i Linux, för Windows maskiner och andra kan man ladda ner det här.

För att packa upp cURL behöver man 7-zip, det hämtar man här.

Jag gillar att programmera i C# på .NET plattformen, så min exempel kommer vara i C# och jag kommer använda Visual Studio som editor. Finns en finfin gratisversion av Visual Studio, som man kan hämta här välj “Community Edition”.

När man skall koda mot sin Telldus-sticka så behöver man veta vilken IP-adress den har. Vad jag vet så kan man inte hindra den från att hämta en IP adress via DHCP. Det innebär att den skulle kunna få en ny IP-adress efter omstart. Jag fixade det genom att logga in i min router(Asus N66u) och göra en DHCP reservation för den MAC adress som Tellsticken har, då kommer den alltid få samma IP adress. Hur du gör detta på din router vet jag inte, låt google komma till din hjälp 🙂

Nu är vi redo att börja leka! För att anropa detta REST-Api så behöver man ett “Token”(biljett som visar att man är godkänd och inloggad). För att få en sån så gör man så här:

  1. Du måste ha ett konto på live.telldus.com
  2. Steg 2 är att du skall registrera en APP på ditt konto. Man behöver bara göra detta en gång. För att få ett ID på sin APP. Detta fixar man enkelt med cURL – ersätt IP-Adressen med den IP-adress som just din Tellstick har – APP namnet är också helt valfritt
    1.  curl -i -d app=”MittNamn” -X PUT http://192.168.1.153/api/token
  3. När du kört detta kommando så får du tillbaks två strängar. En som heter “authUrl” och kommer se ut något i stil med: http://0.0.0.0/api/authorize?token=0996b21ee3f74d2b99568d8207a8add9 där IP-adressen kommer vara din IP-adress. Du skall kopiera denna URL och klistra in den i din webbläsare. Du kommer då få logga in på live.telldus.com och klicka på att du auktoriserar denna App. Du får också välja hur länge Appen skall vara auktorisad och om den skall kunna förnyas. Enklast är ju att välja “ett år” och “förnya är OK”.
  4. Nu skall du växla in det token du fick i steg 2 till ett anrops-token. Det gör man via detta anrop:
    1. curl -i -X GET http://192.168.1.153/api/token?token=aecc65ef4b704a14838892cc331bf3c7
  5. Du måste byta ut IP adressen till din IP-adress, samt token= till det token som du fick i steg 2.
  6.  Nu får du tillbaks ett svar på tre rader.AllowRenew: True, expires: 1509881927 och token. Detta är det viktiga Tokenet. Det är det du skall skicka med i varje anrop som du gör. Detta Token är giltigt ett år(om du valde det).

Om du tyckte min förklaring var rörig, så finns Telldus egna dokumentation här.

Som jag sa tidigare, så får man svaren från Local API i formatet JSON. Detta är läsbart direkt på skärmen. Men sen vill man ju få in dessa svar i listor och variabler i sina skript eller program. Då är det nice att kunna mappa JSON mot klasser. Finns en gratistjänst för detta, som du finner här:

I min C# kod, så har jag lagt till några Nuget paket för att göra livet enklare. Dessa är

Newtonsoft.JSON för att enkelt kunna mappa JSON till klasser. Samt RestSharp för att superenkelt anropa REST API:er från c#.

Här är mitt exempel-projekt – kräver Visual Studio 2015 i någon version

// Lazze