Et script som sjekker når du får levert post.
1. Du trenger en referanse til Newtonsoft.Json i ScriptingReferences.
2. Du trenger en virtuell device uten knapper eller statuser.
3. Du trenger en konto hos MyBring, du kan opprette gratis her (du trenger ikke firmanavn): https://www.mybring.com/signup/register/user
4. En API-key som du finner på denne siden: https://www.mybring.com/useradmin/account/settings/api
Kjør dette scriptet ved midnatt:
Sub Main(ByVal params As Object)
Dim devRef As Integer = DIN_DEVICEREF_HER
Dim postnummer As Integer = DITT_POSTNUMMER_HER
Dim mybring_email As String = "
[email protected]"
Dim mybring_key As String = "DIN_KEY_FRA_MYBRING"
Dim url As String = "https://api.bring.com/address/api/no/postal-codes/" & postnummer & "/mailbox-delivery-dates"
Dim source As String = ""
Try
Using client As New System.Net.WebClient
Net.ServicePointManager.SecurityProtocol = Net.SecurityProtocolType.Tls12
client.Headers.Add("x-mybring-api-uid", mybring_email)
client.Headers.Add("x-mybring-api-key", mybring_key)
client.BaseAddress = url
source = client.DownloadString(url)
End Using
Dim json As Object = Newtonsoft.Json.JsonConvert.DeserializeObject(Of Object)(source)
Dim nestePost As String = json.item("delivery_dates").item(0).ToString
Dim nestePostDato As Date = DateTime.Parse(nestePostDato)
Dim dagerTilPost As Integer = nestePostDato.Date.Subtract(Now.Date).Days
Dim output As String = ""
For i As Integer = 0 To json("delivery_dates").Count - 1
Dim currentDate As Date = DateTime.Parse(json.item("delivery_dates").item(i))
output &= GetDateDescription(currentDate) & "<br>"
Next
hs.SetDeviceValueByRef(devRef, dagerTilPost, True)
hs.SetDeviceString(devRef, output, False)
Catch ex As Exception
hs.SetDeviceValueByRef(devRef, -1, True)
hs.SetDeviceString(devRef, "Feil: " & ex.Message, False)
End Try
End Sub
Function GetDateDescription(ByVal nextDate As Date)
Dim dagerTilPost As Integer = nextDate.Date.Subtract(Now.Date).Days
If dagerTilPost = 0 Then
Return "I dag"
ElseIf dagerTilPost = 1 Then
Return "I morgen"
Else
Return nextDate.ToString("dddd d. MMM")
End If
End Function
Devicen vil da se slik ut:
Device Value er antall dager til postleveranse. "0" betyr da at posten blir levert i dag, kan f.eks. brukes som trigger til noe.
EDIT: Takk til @daniel.h.iversen som fant ut at Posten har oppdaget at 2020 var i fjor. 👍
EDIT2: Takk til @DeVille som fant ut at siste 1 skal erstattes med 9.
EDIT3: Takk til @ZoRaC for sin oppdatering etter API-omleggingen hos Posten versjon som jeg bygget litt videre på.