Äntligen har API kommit!
Här är liten testproj med VB, för att testa funktionen.
VB 2010 har ingen inbyggt parser för JSON, men det går enkelt att hämta hem en med public license -> http://json.codeplex.com/
Lägg rätta dll:n (beror på .NET versionen) i närheten av projektmappen, sedan lägg till det som 'resource' till projektet.
För enkelhetens skull har alla grejer på projektet default-namn.
Huvudfönster:
Och kod kommer här:
För enkelhetens skull har alla grejer på projektet default-namn.
Huvudfönster:
- Form (namn: Form1) och följande till Form1:
- 2x Label (namn: Label1 och Label2)
- StatusStrip + ToolStripStatusLabel (namn: StatusStrip1 och ToolStripStatusLabel1)
- Timer (namn: Timer1) Ställ timern på 30000ms
Och kod kommer här:
Imports Newtonsoft.Json
Imports Newtonsoft.Json.Linq
Public Class Form1
' Här skriver du in API-keyn som du hittar på https://my.eliq.se/user/installningar/api - under: Manuell accesstoken.'
Const EliqAPI = "XXXXXX000000000 osv..."
Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
' Ropa på ticker subrutin vid varje Timer1_Tick (30 sekunder är rekommendation från Eliq.)'
updateticker()
End Sub
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
' Aktivera timern och updatera "tickern" en gång från Eliq.'
Timer1.Enabled = True
updateticker()
End Sub
Private Sub updateticker()
' ---- Själva huvudrutinen att hämta och "hacka upp" resultat.'
' Den skulle kunna vara en funktion, men för enkelhets skull har vi den som subrutin. ----'
'Ropa ELIQ API-servern och begär sträng i JSON-format. Exempel: {"createddate":"2014-01-09T16:56:05","power":1217.0}'
Dim sourceString As String = New System.Net.WebClient() _
.DownloadString("https://my.eliq.se/api/datanow?accesstoken=" & EliqAPI)
'Sätter upp JSON.parsern och delar JSON till bitar.'
Dim values As Newtonsoft.Json.Linq.JObject
values = JObject.Parse(sourceString)
Dim powervalue As Integer ' senaste värdet från servern'
Dim oldpowervalue As Integer ' gammal värde innan update - sparas i Label1.Tag'
Dim showpowervalue As String ' det värde man visar under huvudvärden (ökning/minskning från gammal värde)'
Dim eliqtime As Date ' tidstämpel servern ger för senaste uppdatering'
eliqtime = values.GetValue("createddate") ' eliqtime = createddate (från JSON) i date-format'
showpowervalue = ""
oldpowervalue = Label1.Tag ' hämtar gammalt värde från taggen.'
powervalue = CInt(values.GetValue("power")) ' powervärdet från JSON'
Label1.Text = powervalue & " W" ' visar huvudvärdet och lägger till bokstaven W'
Label1.Tag = powervalue ' sparar värdet i taggen, för nästa gången vi kommer hit.'
' Lite uträkning: Om det skiljer sig mellan gammal och ny, då kollar vi om det är mindre än 0 eller större.'
' om större, då blir fonten röd och ett "+" läggs framför.'
' om mindre, dä blir fonten grön och ingen märke behövs läggas till, eftersom summan är negativ redan.'
If oldpowervalue <> powervalue Then
If powervalue - oldpowervalue > 0 Then
Label2.ForeColor = Color.Red
showpowervalue = "+" & powervalue - oldpowervalue & " W"
Else
Label2.ForeColor = Color.Green
showpowervalue = powervalue - oldpowervalue & " W"
End If
Else
showpowervalue = "" ' inget värde under huvudvärden, för nytt&gammalt är samma.'
End If
Label2.Text = showpowervalue ' visar resultat NY - GAMMAL'
' fixar till ToolStripStatusLabel med datumstämplar.'
ToolStripStatusLabel1.Text = "Updated: Query " & _
FormatDateTime(Now(), DateFormat.LongTime) & " Server " & _
FormatDateTime(eliqtime, DateFormat.LongTime)
End Sub
End Class
