Das von der Husqvarna Group entwickelte GARDENA Smart System bietet innovative Lösungen für die Verwaltung und Steuerung Ihrer Garten- und Außengeräte. Um das GARDENA Smart System zu integrieren und mit ihm zu interagieren, können Entwickler die offene API der Husqvarna Group nutzen, die eine bequeme Möglichkeit für den Zugriff auf und die Steuerung von verschiedenen intelligenten Geräten über RESTful-Webdienste und das JSON-Datenformat bietet.
In diesem Leitfaden zeigen wir Ihnen, wie Sie sich mit ASP.NET, einem beliebten Framework für die Erstellung von Webanwendungen, mit dem GARDENA smart system verbinden können. Durch die Nutzung der Leistungsfähigkeit von RESTful APIs und JSON können wir nahtlos mit GARDENA Geräten kommunizieren, Informationen abrufen und Aktionen aus der Ferne durchführen.
Was Sie zuerst tun müssen:
Abrufen von API-Anmeldeinformationen (Client-ID und Client-Geheimnis) unter
https://developer.husqvarnagroup.cloud/
Implementieren des Authentifizierungsablaufs, um ein Zugriffstoken zu erhalten.
Jetzt können Sie:
Abrufen einer Liste der verfügbaren Geräte und ihrer Eigenschaften.
Gerätestatus steuern, z. B. ein-/ausschalten oder Einstellungen anpassen.
Überwachung des Gerätestatus und Abruf von Echtzeitdaten.
JSON-Daten verarbeiten:
Parsen von JSON-Antworten von der GARDENA API.
Serialisierung von JSON-Daten zum Senden von Anfragen und Aktualisieren von Geräteeinstellungen.
Mögliche allgemeine Anwendungsfälle:
Erstellen von Zeitplänen für automatisierte Gerätevorgänge.
Verwaltung von Gerätegruppen und Zonen für eine effiziente Steuerung.
Verarbeitung von Ereignissen und Benachrichtigungen aus dem GARDENA System.
Hinweis: Bevor Sie mit der Implementierung beginnen, müssen Sie sich als Entwickler registrieren und eine API-Berechtigung erhalten.
Private Sub doAuth2()
Dim clientId As String = "xxxxxx-xxx-xxxx-xxxx-xx"
Dim clientSecret As String = "xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx"
Dim accessToken As String = GetAccessToken(clientId, clientSecret)
Dim LocationID As String = "xxxxxxx-xxxx-xxxx-xxx-xxxxxxxx"
Response.Write(accessToken)
Response.Write(GetLanMoverList(accessToken, clientId))
Response.Write(GetLocations(accessToken, LocationID, clientId))
'End If
End Sub
Private Function GetAccessToken(clientId As String, clientSecret As String) As String
Dim tokenEndpoint As String = "https://api.authentication.husqvarnagroup.dev/v1/oauth2/token"
Dim redirectUri As String = "https://localhost:44306/"
Dim request As HttpWebRequest = CType(WebRequest.Create(tokenEndpoint), HttpWebRequest)
request.Method = "POST"
Dim postData As String = String.Format("grant_type=client_credentials&client_id={0}&client_secret={1}&redirect_uri={2}", clientId, clientSecret, redirectUri)
Dim byteArray As Byte() = Encoding.UTF8.GetBytes(postData)
request.ContentType = "application/x-www-form-urlencoded"
request.ContentLength = byteArray.Length
Dim dataStream As Stream = request.GetRequestStream()
dataStream.Write(byteArray, 0, byteArray.Length)
dataStream.Close()
Dim response As WebResponse = request.GetResponse()
dataStream = response.GetResponseStream()
Dim reader As New StreamReader(dataStream)
Dim responseFromServer As String = reader.ReadToEnd()
Dim serializer As New JavaScriptSerializer()
Dim tokenData As Dictionary(Of String, Object) = serializer.Deserialize(Of Dictionary(Of String, Object))(responseFromServer)
If tokenData.ContainsKey("access_token") Then
Return tokenData("access_token").ToString()
Else
Return ""
End If
End Function
Private Function GetLanMoverList(Token As String, clientId As String) As String
Dim tokenEndpoint As String = "https://api.amc.husqvarna.dev/v1/mowers"
Dim X_Api_Key As String = clientId
Dim Token_var As String = "Bearer " + Token
Dim Authorization_Provider As String = "husqvarna"
Dim request As HttpWebRequest = CType(WebRequest.Create(tokenEndpoint), HttpWebRequest)
request.Method = "GET"
request.Headers.Add("Authorization", Token_var)
request.Headers.Add("X-Api-Key", X_Api_Key)
request.Headers.Add("Authorization-Provider", Authorization_Provider)
Dim response As WebResponse = request.GetResponse()
Dim dataStream As Stream = response.GetResponseStream()
Dim reader As New StreamReader(dataStream)
Dim responseFromServer As String = reader.ReadToEnd()
reader.Close()
dataStream.Close()
response.Close()
Return responseFromServer
End Function
Private Function GetLocations(Token As String, LocationID As String, clientid As String) As String
Dim tokenEndpoint As String = "https://api.smart.gardena.dev/v1/locations" + "/" + LocationID
Dim X_Api_Key As String = clientid
Dim Token_var As String = "Bearer " + Token
Dim Authorization_Provider As String = "husqvarna"
Dim request As HttpWebRequest = CType(WebRequest.Create(tokenEndpoint), HttpWebRequest)
request.Method = "GET"
request.Headers.Add("Authorization", Token_var)
request.Headers.Add("X-Api-Key", X_Api_Key)
request.Headers.Add("Authorization-Provider", Authorization_Provider)
Dim response As WebResponse = request.GetResponse()
Dim dataStream As Stream = response.GetResponseStream()
Dim reader As New StreamReader(dataStream)
Dim responseFromServer As String = reader.ReadToEnd()
reader.Close()
dataStream.Close()
response.Close()
' Parse the JSON string into a JsonDocument
Dim jsonDocumentVar As JsonDocument = JsonDocument.Parse(responseFromServer)
Dim locationIdVar As String = jsonDocumentVar.RootElement.GetProperty("data").GetProperty("id").GetString()
Dim locationName As String = jsonDocumentVar.RootElement.GetProperty("data").GetProperty("attributes").GetProperty("name").GetString()
Return responseFromServer
End Function