Customer stories
Tuesday, March 7, 2023Author: Antrow SoftwareBrian was the owner of a small business that had been using a Microsoft Access database to manage their customer information for several years. However, as the business grew, the limitations of the Access database became more apparent. It was difficult to access the database remotely, and there were issues with concurrent user access and data security.
Brian knew that he needed to find a solution that would allow his team to access the database from anywhere, without sacrificing data security or performance. After some research, he came across Antrow software, a company that specializes in migrating Microsoft Access databases to web applications.
After discussing his needs with the team at Antrow software, Brian decided to move forward with the migration process. The team at Antrow software worked closely with Brian to ensure that the new web application met all of his requirements and was tailored to his business needs.
The migration process was seamless, with Antrow software handling everything from database structure to user interface design. They were able to migrate all of the data from the Access database to the new web application without any loss of data or functionality.
The new web application allowed Brian's team to access the database from anywhere, using any device with an internet connection. It also provided improved security features, including user authentication and data encryption.
Brian was thrilled with the results of the migration, and he quickly saw the benefits of having a web-based database. His team was able to work more efficiently, and the new system was much easier to use than the old Access database. Additionally, the new system allowed for easier collaboration between team members, which helped to improve overall productivity.
Overall, the migration to a web application provided Brian and his team with the flexibility, security, and functionality that they needed to take their business to the next level. Thanks to Antrow software, they were able to make the transition seamlessly and continue to grow their business with confidence.

Latest articles
Friday, July 7, 2023Author: Antrow SoftwareThe GARDENA Smart System, developed by Husqvarna Group, provides innovative solutions for managing and controlling your garden and outdoor devices. To integrate and interact with the GARDENA Smart System, developers can leverage the Husqvarna Group's Open API, which offers a convenient way to access and control various smart devices using RESTful web services and JSON data format.
In this guide, we will show ypou how to connect to the GARDENA smart system using ASP.NET, a popular framework for building web applications. By utilizing the power of RESTful APIs and JSON, we can seamlessly communicate with GARDENA devices, retrieve information, and perform actions remotely.
What to do first:
Obtaining API credentials (client ID and client secret) at
https://developer.husqvarnagroup.cloud/
Implementing the authentication flow to obtain an access token.
Now you can:
Retrieving a list of available devices and their properties.
Controlling device states, such as turning on/off or adjusting settings.
Monitoring device status and retrieving real-time data.
Handling JSON Data:
Parsing JSON responses from the GARDENA API.
Serializing JSON data to send requests and update device settings.
Posible Common Use Cases:
Creating schedules for automated device operations.
Managing device groups and zones for efficient control.
Handling events and notifications from the GARDENA system.
Note: Before starting the implementation, make sure to register as a developer and obtain API credentials from the Husqvarna Group's developer portal. Familiarity with ASP.NET, RESTful APIs, and JSON will be helpful throughout the development process.
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