Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon.no!

Vinnerliste

Populært innhold

Viser innholdet med mest poeng fra 31. mai 2018 i alle områder

  1. Hei. Jeg har laget et script for å starte og parkere Gardena Smart Sileno gressklippere. Testet og fungerer på min Gardena Smart Sileno R100Li. Legg inn e-postadressen, passordet, og navnet på klipperen på linje 12->14 i skriptet. Sett logJson = True for å se alt i json-responsen fra Gardena. Det ligger mye nyttig informasjon i responsen fra get_device_id. Kall scriptet med parameter start eller stop. Disse parametrene blir så brukt lenger nede i scriptet til: 'Available start commands: 'Start according to schedule: "{""name"":""start_resume_schedule"", ""parameters"":{}}" 'Start overriding schedule. Run for 1440 minutes: "{""name"":""start_override_timer"", ""parameters"":{""duration"": 1440}}" 'Available stop commands: 'Park and pause all schedules: "{""name"":""park_until_further_notice""}" 'Park and start again at next schedule: "{""name"":""park_until_next_timer""}" Imports System.IO Imports System.Net '*** Choose if json-responces should get written to the log *** Const logJson As Boolean = False '************************************************************** Public Sub Main(ByVal command As String) '*** Put in e-mailadress and password and lawnmover-name *** '*** They must be exactly as entered into the Gardena app *** Dim email As String = "[email protected]" Dim password As String = "Mypassword" Dim mower_name As String = "Name_of_lawnmower_in_gardena_app" '************************************************* '*** NO NEED TO EDIT BEHIND THIS POINT! *** '************************************************* 'Get token and username Dim jsonGetToken As String = "{""sessions"":{""email"":""" & email & """,""password"":""" & password & """}}" Dim tokenAndUser() As String = getToken(jsonGetToken) 'Get location Dim location As String = getLocation(tokenAndUser) 'Get device-id for lawnmover set in mower_name Dim locationAndToken(3) as String locationAndToken(0) = tokenAndUser(0) locationAndToken(1) = location locationAndToken(2) = mower_name Dim deviceId As String = getdeviceId(locationAndToken) 'Send start or stop command to mower Dim data(4) as String data(0) = tokenAndUser(0) data(1) = location data(2) = deviceId data(3) = command sendCommand(data) End Sub Public Function getToken(json As string) As String() 'Get token and user ID based on e-mail and password Dim strURL As String = "https://sg-api.dss.husqvarnagroup.net/sg-1/sessions" Dim myWebReq As HttpWebRequest Dim myWebResp As HttpWebResponse Dim encoding As New System.Text.UTF8Encoding Dim sr As StreamReader Dim result(2) As String Try Dim data As Byte() = encoding.GetBytes(json) myWebReq = DirectCast(WebRequest.Create(strURL), HttpWebRequest) myWebReq.ContentType = "application/json" myWebReq.ContentLength = data.Length myWebReq.Method = "POST" Dim myStream As Stream = myWebReq.GetRequestStream() If data.Length > 0 Then myStream.Write(data, 0, data.Length) myStream.Close() End If myWebResp = DirectCast(myWebReq.GetResponse(), HttpWebResponse) sr = New StreamReader(myWebResp.GetResponseStream()) Dim responseText As String = sr.ReadToEnd() if logJson Then hs.WriteLog("Gardena", "Response getToken: " & responseText) End If 'Search json for token Dim sSource As String = responseText 'String that is being searched Dim sDelimStart As String = """token"":""" 'First delimiting word Dim sDelimEnd As String = """,""user_id" 'Second delimiting word Dim nIndexStart As Integer = sSource.IndexOf(sDelimStart) 'Find the first occurrence of f1 Dim nIndexEnd As Integer = sSource.IndexOf(sDelimEnd) 'Find the first occurrence of f2 If nIndexStart > -1 AndAlso nIndexEnd > -1 Then '-1 means the word was not found. Dim token As String = Strings.Mid(sSource, nIndexStart + sDelimStart.Length + 1, nIndexEnd - nIndexStart - sDelimStart.Length) 'Crop the text between hs.WriteLog("Gardena", "Token: " & token) 'We got the token, continue to get the user id sDelimStart = "user_id"":""" 'First delimiting word sDelimEnd = """,""refresh_token" 'Second delimiting word nIndexStart = sSource.IndexOf(sDelimStart) 'Find the first occurrence of f1 nIndexEnd = sSource.IndexOf(sDelimEnd) 'Find the first occurrence of f2 If nIndexStart > -1 AndAlso nIndexEnd > -1 Then '-1 means the word was not found. Dim user As String = Strings.Mid(sSource, nIndexStart + sDelimStart.Length + 1, nIndexEnd - nIndexStart - sDelimStart.Length) 'Crop the text between hs.WriteLog("Gardena", "User: " & user) result(0) = token result(1) = user return result Else hs.WriteLog("Gardena", "Error: Did not receive user ID") End If Else hs.WriteLog("Gardena", "Error: Did not receive token") End If Catch ex As Exception : hs.writelog("Gardena", "Error: " & ex.Message.ToString) End Try End Function Public Function getLocation(tokenAndUser() As String) As String 'Get location based on token and user id Dim token As String = tokenAndUser(0) Dim user As String = tokenAndUser(1) Dim strURL As String = "https://sg-api.dss.husqvarnagroup.net/sg-1/locations/?user_id=" & user Dim myWebReq As HttpWebRequest Dim myWebResp As HttpWebResponse Dim sr As StreamReader Try myWebReq = DirectCast(WebRequest.Create(strURL), HttpWebRequest) myWebReq.ContentType = "application/json" myWebReq.Method = "GET" myWebReq.Headers.Add("X-session", token) myWebResp = DirectCast(myWebReq.GetResponse(), HttpWebResponse) sr = New StreamReader(myWebResp.GetResponseStream()) Dim responseText As String = sr.ReadToEnd() if logJson Then hs.WriteLog("Gardena", "Response getLocation: " & responseText) End if 'Search json for location Dim sSource As String = responseText 'String that is being searched Dim sDelimStart As String = """id"":""" 'First delimiting word Dim sDelimEnd As String = """,""name" 'Second delimiting word Dim nIndexStart As Integer = sSource.IndexOf(sDelimStart) 'Find the first occurrence of f1 Dim nIndexEnd As Integer = sSource.IndexOf(sDelimEnd) 'Find the first occurrence of f2 If nIndexStart > -1 AndAlso nIndexEnd > -1 Then '-1 means the word was not found. Dim location As String = Strings.Mid(sSource, nIndexStart + sDelimStart.Length + 1, nIndexEnd - nIndexStart - sDelimStart.Length) 'Crop the text between hs.WriteLog("Gardena", "Location: " & location) return location Else hs.WriteLog("Gardena", "Error: Did not receive location") End If Catch ex As Exception : hs.writelog("Gardena", "Error: " & ex.Message.ToString) End Try End Function Public Function getdeviceId(tokenAndLocation() As String) As String 'Get device id for lawnmover based on location and mower_name Dim token As String = tokenAndLocation(0) Dim location As String = tokenAndLocation(1) Dim mower_name As String = tokenAndLocation(2) Dim strURL As String = "https://sg-api.dss.husqvarnagroup.net/sg-1/devices?locationId=" & location Dim myWebReq As HttpWebRequest Dim myWebResp As HttpWebResponse Dim sr As StreamReader Try myWebReq = DirectCast(WebRequest.Create(strURL), HttpWebRequest) myWebReq.ContentType = "application/json" myWebReq.Method = "GET" myWebReq.Headers.Add("X-session", token) myWebResp = DirectCast(myWebReq.GetResponse(), HttpWebResponse) sr = New StreamReader(myWebResp.GetResponseStream()) Dim responseText As String = sr.ReadToEnd() if logJson Then hs.WriteLog("Gardena", "Response getLocation: " & responseText) End If 'Finn Device ID Dim sSource As String = responseText 'String that is being searched Dim sDelimEnd As String = """,""name"":""" & mower_name & """,""category"":""mower""" 'Second delimiting word Dim nIndexStart As Integer = sSource.IndexOf(sDelimEnd) - 36 Dim nIndexEnd As Integer = sSource.IndexOf(sDelimEnd) 'Find the first occurrence of f2 If nIndexStart > -1 AndAlso nIndexEnd > -1 Then '-1 means the word was not found. Dim deviceId As String = Strings.Mid(sSource, nIndexStart + 1, nIndexEnd - nIndexStart) 'Crop the text between hs.WriteLog("Gardena", "Device ID: " & deviceId) return deviceId Else hs.WriteLog("Gardena", "Error: Did not receive device ID") End If Catch ex As Exception : hs.writelog("Gardena", "Error: " & ex.Message.ToString) End Try End Function Public Function sendCommand(data() As String) 'Send start or stop to the mower. Dim token As String = data(0) Dim location As String = data(1) Dim device As String = data(2) Dim command As String = data(3) Dim json As String '*** Here you can change what start and stop does.*** 'Available start commands: 'Start according to schedule: "{""name"":""start_resume_schedule"", ""parameters"":{}}" 'Start overriding schedule. Run for 1440 minutes: "{""name"":""start_override_timer"", ""parameters"":{""duration"": 1440}}" 'Available stop commands: 'Park and pause all schedules: "{""name"":""park_until_further_notice""}" 'Park and start again at next schedule: "{""name"":""park_until_next_timer""}" if command = "start" Then json = "{""name"":""start_resume_schedule"", ""parameters"":{}}" else if command = "stop" Then json = "{""name"":""park_until_further_notice""}" else hs.writelog("Gardena", "Error: Angi start eller stop som parameter") End If Dim strURL As String = "https://sg-api.dss.husqvarnagroup.net/sg-1/devices/" & device & "/abilities/mower/command?locationId=" & location Dim myWebReq As HttpWebRequest Dim myWebResp As HttpWebResponse Dim encoding As New System.Text.UTF8Encoding Dim sr As StreamReader Try Dim data As Byte() = encoding.GetBytes(json) myWebReq = DirectCast(WebRequest.Create(strURL), HttpWebRequest) myWebReq.ContentType = "application/json" myWebReq.ContentLength = data.Length myWebReq.Headers.Add("X-session", token) myWebReq.Method = "POST" Dim myStream As Stream = myWebReq.GetRequestStream() If data.Length > 0 Then myStream.Write(data, 0, data.Length) myStream.Close() End If myWebResp = DirectCast(myWebReq.GetResponse(), HttpWebResponse) sr = New StreamReader(myWebResp.GetResponseStream()) Dim responseText As String = sr.ReadToEnd() hs.WriteLog("Gardena", "Sent command: " & command) Catch ex As Exception : hs.writelog("Gardena", "Error: " & ex.Message.ToString) End Try End Function
    2 poeng
  2. Jeg ville kjøpt full versjon, og heller installert den på en Raspberry Pi. Den har ingen begrensninger, og du kan både kjøre Windows og Linux-versjonene samtidig på én lisens.
    2 poeng
  3. Jeg har begynt med en sketch, men vanskelig å finne tid i dette finværet. Det kom noen gode tips her, kanskje noe av det passer ditt behov?
    1 poeng
  4. Har hatt vera edge. Og super fornøyd med Homeseer. Dedikert pc kan du gjemme på kontoret, garasjen eller et kott. Så har du en raperry pi strategisk plassert med zwave interface og eventuelt rfxcom for 433. Jeg stemmer for at du går til homeseer. Sent from my SM-G930F using Tapatalk
    1 poeng
  5. Hva jeg ikke har gjort i dag, i går eller i forgårs osv..: - Bygget hele zwave nettverket om igjen etter at over halvparten av nodene forsvant fra kontrolleren. Heldigvis trengs det ikke gulvvarme for tida..
    1 poeng
  6. Hei igjen. Jeg har laget en oppdatert versjon av scriptet, der man bare trenger å angi a-postadresse, passord, og navn på gressklipper. Jeg la det her:
    1 poeng
  7. Takk Moskus! Da har jeg fått snekret sammen et .vb skript som fungerer på min Gardena R100Li Smart Sileno. Ganske unyttig, men du verden så tilfredstillende å be Alexa om å klippe plenen. ? Skriptet mitt krever at man vet token, location, og device-id. Jeg har brukt samme token siden i går og det fungerer fortsatt, men jeg mistenker at man må ha et nytt etterhvert.. Forresten: Jeg har scramblet min token, location, og device i kode-eksemplet.. De står der bare for eksemplets skyld, Imports System.IO Imports System.Net Sub Main(ByVal par As String) 'Kall skriptet med parameter start eller stop 'Følg steg 1 til 3 beskrevet her: http://www.roboter-forum.com/showthread.php?16777-Gardena-Smart-System-Analyse 'Og legg inn token, location, og device (for gressklipperen) 'Jeg bruker postman for å kjøre og teste slike kall Dim token As String = "9ba34642-0543-4545-86456-5692e5753d" Dim location As String = "fb45407e-96ea-4651-921d7-0278f7650d21" Dim device As String = "0bf7654cf-4659-455c-be56-1763d9945d6" Dim json As String if par = "start" Then json = "{""name"":""start_override_timer"", ""parameters"":{""duration"":1440}}" else if par = "stop" Then json = "{""name"":""park_until_further_notice""}" End If Dim strURL As String = "https://sg-api.dss.husqvarnagroup.net/sg-1/devices/" & device & "/abilities/mower/command?locationId=" & location Dim myWebReq As HttpWebRequest Dim myWebResp As HttpWebResponse Dim encoding As New System.Text.UTF8Encoding Dim sr As StreamReader Try Dim data As Byte() = encoding.GetBytes(json) myWebReq = DirectCast(WebRequest.Create(strURL), HttpWebRequest) myWebReq.ContentType = "application/json" myWebReq.ContentLength = data.Length myWebReq.Headers.Add("X-session", token) myWebReq.Method = "POST" Dim myStream As Stream = myWebReq.GetRequestStream() If data.Length > 0 Then myStream.Write(data, 0, data.Length) myStream.Close() End If myWebResp = DirectCast(myWebReq.GetResponse(), HttpWebResponse) sr = New StreamReader(myWebResp.GetResponseStream()) Dim responseText As String = sr.ReadToEnd() hs.WriteLog("Gressklipper", "Response: " & responseText) Catch ex As Exception : hs.writelog("Gressklipper", "Error: " & ex.Message.ToString) End Try End Sub
    1 poeng
  8. Aktiverte nattmodus og fikk umiddelbart pushvarsel om at uteboden sto åpen, og det bør den jo ikke gjøre. I det jeg åpner ytterdøra hører jeg en "alarm-ringing" i det fjerne - kommer da på at jeg har aktivert "skallsikring" sammen med nattmodus. Ved åpning av en dør så slås lyset på soverrommet på på maks og Nexa-ringeklokka i 2. etg spiller av en alarm-lyd. Mobilen lå igjen oppe, så da måtte jeg opp og hente den for å deaktivere skallsikringen. Slo av taklyset og ruslet ned igjen. Innser da at jeg ikke har noen egen alarmstyring, den er kun koblet mot nattmodus... så i stedet for å aktivere dagmodus og slå på alle lys i hele huset, så gikk jeg inn og deaktiverte eventet for ytterdøra. So far so good! Lukket boddøra, men for å få den i lås måtte jeg åpne og lukke den en gang. Kommer inn og ser at taklyset står på maks på soverommet igjen! Innser at jeg har utløst "alarmen" på boden når jeg lukket og åpnet boddøra... Heldigvis la vi oss samtidig, så det var ingen "sure miner" over lys og alarmering... Nå står "lage alarm-styring" på TODO-lista!
    1 poeng
  9. En stor oppdatering. Vi har åpnet en ny og mer gjennomført nettbutikk for salg av våre produkter. http://www.norshapes.no Dere får 20% rabatt ved å benytte rabattkode: Automasjon (Gjelder til 30.06.18) FRI FRAKT på ordrer over kr 800,- Håper også på å kunne øke frekvensen på nye produkter fremover!
    1 poeng
  10. Mulig du kan klare deg med Fibaro Universal Sensor. Du kan ikke bruke utgangene på den (de er koblet til inngangene), men inngangene skal vel kunne gjøre det du er ute etter. Et alternativ er å bruke en enkel NodeMCU og Arduino-plugin'en, eller en Z-UNO.
    1 poeng
  11. Vil du ikke kunne bruke denne for eksempel: https://www.eldirekte.no/nexa-mottaker-av-paz-wave/cat-p/c1000618/p10635603
    1 poeng
Vinnerlisten er satt til Oslo/GMT+02:00
×
×
  • Opprett ny...

Viktig informasjon

Vi har plassert informasjonskapsler/cookies på din enhet for å gjøre denne siden bedre. Du kan justere dine innstillinger for informasjonskapsler, ellers vil vi anta at dette er ok for deg.