Gå til innhold
  • Bli medlem
Moskus

ResponsiveVoice - Last ned norske talebeskjeder som MP3

Anbefalte innlegg

1 minutt siden, Arne Johnny skrev:

Nå fikk jeg denne: 

Running script C:\Program Files (x86)\HomeSeer HS3\scripts\voice.vb :Målet forårsaket et unntak under aktivering.Forespørselen ble avbrutt: Kan ikke opprette SSL/TLS-sikret kanal.

 

Prøv å endre fra https:// til http:// i scriptet. :) 

Del dette innlegget


Lenke til innlegg
Del på andre sider
2 minutes ago, ZoRaC said:

 

Prøv å endre fra https:// til http:// i scriptet. :) 

huh.. Av en eller merkelig årsak startet det plutselig å funke igjen. Uten å endre noenting etter forrige feilmelding. Pussig.  Eneste jeg egentlig gjorde var å åpne webbrowser for så å kjøre scriptet på nytt..

Prøver litt mer så får man se om det endrer seg igjen.

Del dette innlegget


Lenke til innlegg
Del på andre sider

Jeg sliter med å få spilt av mp3er over Squeezebox-plugin. Plugin kræsjer hver gang, kommer aldri noe lyd ut. Har forsøkt både "play audio file" og "speak". @Moskus🤓😬

image.thumb.png.7a9144716bfff5cb8b1e8dd79842be0f.png

 

nov-03 23.38.52   SqueezeBox Debug SpeakOutNextInQueue - Started Speech: cc:cc:09:c1:22:64 playlist index 3
nov-03 23.38.52   SqueezeBox (Player_cccc09c12264) Debug Kjøkken - SpeakerClientSpeakStart. Play index: 3
nov-03 23.38.52   SqueezeBox Debug SpeakToFile(). Call Duration=00:00:00.0740185
nov-03 23.38.52   SqueezeBox Debug SpeakToFile mp3 start. cmd: C:\Program Files (x86)\HomeSeer HS3\lame.exe args: --silent "C:\Program Files (x86)\HomeSeer HS3\html\SqueezeBox\SpeakIn_0.wav" "C:\Program Files (x86)\HomeSeer HS3\html\SqueezeBox\SpeakIn_0.mp3"
nov-03 23.38.52   SqueezeBox Debug SpeakToFile sound file: c:\program files (x86)\homeseer hs3\media\nattatid.mp3
nov-03 23.38.52   SqueezeBox Debug SpeakToFile. WAV: C:\Program Files (x86)\HomeSeer HS3\html\SqueezeBox\SpeakIn_0.wav MP3: C:\Program Files (x86)\HomeSeer HS3\html\SqueezeBox\SpeakIn_0.mp3 Text: c:\program files (x86)\homeseer hs3\media\nattatid.mp3 IsFile: True FileExists: True
nov-03 23.38.52   SqueezeBox Debug SpeakOutNextInQueue - Added URLs: cc:cc:09:c1:22:64 playlist add http://192.168.1.4/SqueezeBox/SpeakIn_0.mp3
nov-03 23.38.52   SqueezeBox (Player_cccc09c12264) Debug Kjøkken - SpeakerClientSpeakAddURL. URL: http://192.168.1.4/SqueezeBox/SpeakIn_0.mp3 Play index: 3
nov-03 23.38.52   SqueezeBox Debug SpeakOutNextInQueue - SpeakProxy. Remaining Queue Length: 0 SpeakerClient: LMS Host: Text: c:\program files (x86)\homeseer hs3\media\nattatid.mp3
nov-03 23.38.52   SqueezeBox Debug Entering SpeakOutNextInQueue. Status: starting. PendingSpeechTrackEnd: False
nov-03 23.38.52   SqueezeBox Debug Entering speechTimer_Elapsed
nov-03 23.38.51   SqueezeBox Debug Exiting speechTimer_Elapsed
nov-03 23.38.51   SqueezeBox Debug Exiting SpeakOutNextInQueue. New status: starting. PendingSpeechTrackEnd: False
nov-03 23.38.51   SqueezeBox (Player_cccc09c12264) Debug Kjøkken - SpeakerClientSpeakCheckIfDone. Setting PendingSpeechTrackEnd (current: False) to False
nov-03 23.38.51   SqueezeBox Debug StartSpeechTimer. State: starting Duration: 0:1:0 (1000)
nov-03 23.38.51   SqueezeBox (Player_cccc09c12264) Debug Kjøkken - SpeakerClientEnable. speakVolume: 26
nov-03 23.38.51   SqueezeBox Debug Entering EnableSpeaking, Client:
nov-03 23.38.51   SqueezeBox Debug SpeakOutNextInQueue - Starting. Queue Length: 1 SpeechAudioEnabled: False SpeakerClient: LMS Speak Host:
nov-03 23.38.51   SqueezeBox Debug Entering SpeakOutNextInQueue. Status: stopped. PendingSpeechTrackEnd: False
nov-03 23.38.51   SqueezeBox Debug Entering speechTimer_Elapsed
nov-03 23.38.51   SqueezeBox Debug Exiting SpeakIn. Queue Length: 1 State: stopped
nov-03 23.38.51   SqueezeBox Debug StartSpeechTimer. State: stopped Duration: 0:0:4 (4)
nov-03 23.38.51   SqueezeBox Debug Entering SpeakProxyUpdateDevices
nov-03 23.38.51   SqueezeBox Debug Entering SpeakIn host: , device: 0, Text: c:\program files (x86)\homeseer hs3\media\nattatid.mp3 , Enabled: True

Del dette innlegget


Lenke til innlegg
Del på andre sider
10 timer siden, iceball skrev:

Jeg sliter med å få spilt av mp3er over Squeezebox-plugin. Plugin kræsjer hver gang, kommer aldri noe lyd ut. Har forsøkt både "play audio file" og "speak". @Moskus1f913.png1f62c.png

Spør her:

https://forums.homeseer.com/forumdisplay.php?f=982

 

.. men det er mulig MP3-filen må ligge et sted som er tilgjengelig fra Logitech Media Center.

Del dette innlegget


Lenke til innlegg
Del på andre sider

Nytt problem, scriptet vil ikke lage en lengre TTS, stopper ved grader celsius når jeg vil forsøke å spille av noen stringer fra YR.

Parameter som scriptet skal lage TTS av:

Været i dag $$DTR:1925:

Og selve devicen.

Reference ID 1925
Technology Address WD-0018
Status 0 = OFF
Value 0   
String Snø, -1 °C. Laber bris, 6,6 m/s fra Nord-nordøst. 0,3 - 0,6 mm regn

 

Samme gjelder 0 °C, så det må være grader-tegnet som er problemet for min HS. Hvis jeg kopierer stringen inn i nettadressen manuelt så fungerer det fint. Bruker Siggi sin versjon med WebClient. Noen som har tips?

Del dette innlegget


Lenke til innlegg
Del på andre sider
6 timer siden, iceball skrev:

Samme gjelder 0 °C, så det må være grader-tegnet som er problemet for min HS. Hvis jeg kopierer stringen inn i nettadressen manuelt så fungerer det fint. Bruker Siggi sin versjon med WebClient. Noen som har tips?

 

Må sikkert url-encodes. 

Kanskje funksjonen her fungerer?

https://forums.homeseer.com/showpost.php?p=1148547&postcount=3

 

Alternativt, kjøre en replace av grader-tegnet med ordet «grader». :) 

Del dette innlegget


Lenke til innlegg
Del på andre sider
2 timer siden, ZoRaC skrev:

Alternativt, kjøre en replace av grader-tegnet med ordet «grader». :) 

Dette hadde jeg prøvd først... ;)

 

Dim speakThis as String = hs.ReplaceVariables(input.ToString).Replace("°C","grader")

 

Del dette innlegget


Lenke til innlegg
Del på andre sider
15 minutter siden, Moskus skrev:

Dette hadde jeg prøvd først... ;)

 


Dim speakThis as String = hs.ReplaceVariables(input.ToString).Replace("°C","grader")

 

Takk! Det fungerte først ikke, men tenkte at det var HTML-kodet så da fungerte .Replace("°","grader"). 

  • Like 1

Del dette innlegget


Lenke til innlegg
Del på andre sider
Akkurat nå, Guahtdim skrev:

@iceball: Har du fått Squeezeboxplugin til å fungere for avspilling avmeldinger? Hva er løsningen?

Jeg har gitt den litt opp. Kontaktet dog ikke utvikleren, men røyk på en Sonos Playbase på fredagen, så regner med jeg bytter resten også over til Sonos 😱

Del dette innlegget


Lenke til innlegg
Del på andre sider
På 22.9.2017 den 11.20, Moskus skrev:

Jeg testet dette over kl. 11:15 og spilte av "Dette er en test! Klokken er kvart over elleve!".

Imponerende. :)

Funket på første forsøk. Tenk noe så "enkelt"! Takk for at du deler din HS kunnskap med oss @Moskus

Endret av toonwolf

Del dette innlegget


Lenke til innlegg
Del på andre sider
11 timer siden, toonwolf skrev:

Funket på første forsøk. Tenk noe så "enkelt"! Takk for at du deler din HS kunnskap med oss @Moskus

Bare hyggelig! :) 

Del dette innlegget


Lenke til innlegg
Del på andre sider

En liten detalj @Moskus, hvordan kan jeg legge inn pause i teksten? Har forsøkt med forskjellige varianter ref denne tråden

Dette her funker ikke f.eks:

Hei $$DSR:219:<silence mSec=""700"" />Døra er låst opp. 

 

Endret av toonwolf

Del dette innlegget


Lenke til innlegg
Del på andre sider
8 minutter siden, toonwolf skrev:

En liten detalj @Moskus, hvordan kan jeg legge inn pause i teksten? Har forsøkt med forskjellige varianter ref denne tråden

Dette her funker ikke f.eks:


Hei $$DSR:219:<silence mSec=""700"" />Døra er låst opp. 

 

Svarer på mitt eget spørsmål. Dette funker vel ikke fordi denne løsningen ikke bruker den innebygde TTS motoren i HS men code.responsivevoice.org - spørsmålet da er om det i det hele tatt er mulig å legge inn pause i teksten?

Del dette innlegget


Lenke til innlegg
Del på andre sider
På 9.11.2018 den 13.37, toonwolf skrev:

Dette funker vel ikke fordi denne løsningen ikke bruker den innebygde TTS motoren i HS men code.responsivevoice.org - spørsmålet da er om det i det hele tatt er mulig å legge inn pause i teksten?

Riktig, det er ikke HS sin TTS. Så det kan bare responsivevoice.org svare på. :) 

Del dette innlegget


Lenke til innlegg
Del på andre sider
På 9.11.2018 den 13.44, toonwolf skrev:

"Low-tech". Gjenstår å se om det funker. Delt opp i to oppgaver

dette funker så da er jeg fornøyd

 

2 minutter siden, Moskus skrev:

Så det kan bare responsivevoice.org

så ikke noe i dokumentasjonen deres for å legge inn pause

Del dette innlegget


Lenke til innlegg
Del på andre sider

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå

  • Lignende innhold

    • Av Moskus
      Dette scriptet lar deg logge alle bevegelser til en device, slik at det blir enklere å se på web eller HStouch. Bevegelser (eller enhver hendelse) blir da logget slik.
       

       
       MotionLog.vb (ny)
      Public Sub Main(ByVal input As Object) Dim logDeviceRef As Integer = 1081 ' Update this Dim count As Integer = 9 'Maximum number of lines shown on the device - 1. 9 means 10 lines are shown Dim currentText As String = hs.DeviceString(logDeviceRef) currentText = currentText.Replace("<br>", "|") Dim lines() As String = currentText.Split("|") If lines.GetLength(0) < count Then count = lines.GetLength(0) Dim oldLines(count - 1) As String Array.Copy(lines, oldLines, count) 'Creating the device text Dim newText As String = Now.Date & " " & Now.ToLongTimeString & " - " & input.ToString If lines.GetLength(0) > 0 And lines(0) <> "" Then newText &= "<br>" 'Adding the previous lines newText &= String.Join("<br>", oldLines) 'Updating the device string hs.SetDeviceString(logDeviceRef, newText, True) 'hs.TriggerEvent("Restart SisteBeveglse timer") lines = Nothing oldLines = Nothing End Sub  
       
       
      For hver bevegelsessensor har jeg da et event som blir trigget ved bevegelse (selvfølgelig! ), som i tillegg til å styre lys der det er nødvendig, kjører dette scriptet med sub Main og parameter med navnet på sensoren, som "Kjøkken" eller "Stue".
       
      I tillegg har jeg en timer som he ter "SisteBevegelse", som jeg resetter når dette skjer. Hvis du også vil bruke dette, må du opprette den timeren, lage et Event (som jeg har kalt "Restart SisteBevegelse timer" fordi det ikke finnes kode for å restarte den), og fjerne fnutten foran den nest siste linjen i koden.
       
       
      EDIT: Oppdatert slik at det blir penere i HStouch.  
      EDIT2:  Bruker arrays for å gjøre scriptet enklere. Burde nå kjøre på Linux uten problemer.
    • Av Jonnyhar
      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 = "myemail@gmail.com" 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  
    • Av Julius
      Hei, har nettopp startet med homeseer og ønsker å lage noen enkle skript i c#. Men det er vist ikke like enkelt...
       
      Scenario: Har skrevet data til en influxdb og vil lese disse igjen (med en mean aggregering). Problemet er at jeg vil bruke Newtonsoft.Json.Net til å parse JSON resultatet. See hele koden under. 
       
      Problemet er hvordan refererer jeg til Newtonsoft.Json.dll? I følge dokumentasjonen jeg fant her (under c# scripting) så står det: 
       
      Så det gjorde jeg... Jeg ser at Newtonsoft.Json.dll ligger i bin\Homeseer folderen og tenkte der for at det ikke var nødvending å legge til noe path. Har prøvd mye men får feil hele tiden. Det virker ikke som //css_reference har noen effekt.
       
      Kode:
      //css_reference Newtonsoft.Json.dll; using Newtonsoft.Json; using Newtonsoft.Json.Linq; public object Main(object param) { var sensitivity = double.Parse((string)param); var deviceId = 271; var INFLUX_DB_SERVER_IP = "10.0.0.104"; var INFLUX_DB_SERVER_PORT = "8086"; var INFLUX_DB_DATABASE_NAME = "homeseer"; var query = "q=select mean(value) from Downstairs_Bathroom_Humidity where time > now() - 1d"; var url = "http://" + INFLUX_DB_SERVER_IP + ":" + INFLUX_DB_SERVER_PORT + @"/query?db=" + INFLUX_DB_DATABASE_NAME; var request = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url); request.ContentType = "application/x-www-form-urlencoded"; request.Method = "POST"; try { request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; var data = System.Text.Encoding.ASCII.GetBytes(query); request.ContentLength = data.Length; request.Timeout = 5000; var stream = request.GetRequestStream(); try { stream.Write(data, 0, data.Length); } finally { stream.Close(); } var response = (System.Net.HttpWebResponse)request.GetResponse(); var responseString = new System.IO.StreamReader(response.GetResponseStream()).ReadToEnd(); var result = Newtonsoft.Json.JsonConvert.DeserializeObject(responseString); var meanValue = (double) ((Newtonsoft.Json.Linq.JValue)((Newtonsoft.Json.Linq.JContainer)result)["results"].First["series"].First["values"].First.Last).Value; var value = hs.DeviceValue(deviceId); if((value - sensitivity) > meanValue) { hs.TriggerEvent("Run Ventilator for 10 minuttes"); hs.WriteLog("Julius-Ventilation", "Info: Triggered Ventilation"); } } catch (System.Exception ex) { hs.WriteLog("Julius-Ventilation", "Error: " + ex.Message); } return 0; } Feil medling:
      Compiling script C:\Program Files (x86)\HomeSeer HS3\scripts\CSharpTest.cs: {interactive}(93,30): error CS0103: The name `Newtonsoft' does not exist in the current context {interactive}(93,41): error CS0023: The `.' operator cannot be applied to operand of type `' {interactive}(93,17): error CS0825: The contextual keyword `var' may only appear within a local variable declaration {interactive}(95,106): error CS0841: A local variable `result' cannot be used before it is declared {interactive}(95,74): error CS0246: The type or namespace name `Newtonsoft' could not be found. Are you missing a using directive or an assembly reference? {interactive}(95,17): error CS0825: The contextual keyword `var' may only appear within a local variable declaration {interactive}(101,44): error CS0841: A local variable `meanValue' cannot be used before it is declared {interactive}(11,17): warning CS0414: The private field `Script.hs' is assigned but its value is never used  
    • Av ZoRaC
      Scriptet er basert på @Moskus sitt "Fridager.vb":

      Tar derfor bare "kortversjonen" av oppsettet her:
      * Lag en virtuell device "Flaggdag" med verdiene "Ja" (On) og "Nei" (Off)
      * Noter deg devID
      * Lag "Flaggdag.vb":
      Sub Main(ByVal deviceReference As String) 'Moskus 2017 Dim devRef As Integer = Integer.Parse(deviceReference.ToString) Dim isCurrentDateFlagday As Boolean = IsFlagday(Now) If isCurrentDateFlagday Then hs.CAPIControlHandler(hs.CAPIGetSingleControlByUse(devRef, HomeSeerAPI.ePairControlUse._On)) Else hs.CAPIControlHandler(hs.CAPIGetSingleControlByUse(devRef, HomeSeerAPI.ePairControlUse._Off)) End If End Sub Public Function IsFlagday(ByVal _date As Date) As Boolean 'translated php script form xibriz: https://www.diskusjon.no/index.php?showtopic=1084239 _date = _date.Date 'in case time was added Dim easterDate As Date = GetEasterDate(_date.Year) 'Sjekker om datoen er 1. Januar If _date = New Date(_date.Year, 1, 1) Then Return True 'Sjekker om datoen er 21. Januar (Prinsesse Ingrid Alexandra) If _date = New Date(_date.Year, 1, 21) Then Return True 'Sjekker om datoen er 6. februar (samefolkets dag) If _date = New Date(_date.Year, 2, 6) Then Return True 'Sjekker om datoen er 21. februar (Kong Haralds bursdag) If _date = New Date(_date.Year, 2, 21) Then Return True 'Sjekker om datoen er 1. påskedag If _date = easterDate Then Return True 'Sjekker om datoen er 1. mai (offentlig høytidsdag) If _date = New Date(_date.Year, 5, 1) Then Return True 'Sjekker om datoen er 8. mai (frigjøringsdag) If _date = New Date(_date.Year, 5, 8) Then Return True 'Sjekker om datoen er 17. mai (grunnlovsdag) If _date = New Date(_date.Year, 5, 17) Then Return True 'Sjekker om datoen er 7. juni (unionsoppløsning) If _date = New Date(_date.Year, 6, 7) Then Return True 'Sjekker om datoen er 1. pinsedag (50. påskedag) If _date = easterDate.AddDays(49) Then Return True 'Sjekker om datoen er 4. juli (Dronning Sonja) If _date = New Date(_date.Year, 7, 4) Then Return True 'Sjekker om datoen er 20. juli (Kronprins Haakon) If _date = New Date(_date.Year, 7, 20) Then Return True 'Sjekker om datoen er 29. juli (Olsok) If _date = New Date(_date.Year, 7, 29) Then Return True 'Sjekker om datoen er 19. august (Mette-Marit) If _date = New Date(_date.Year, 8, 19) Then Return True 'Sjekker om datoen er 1. juledag (25. desember) If _date = New Date(_date.Year, 12, 25) Then Return True Return False End Function Public Function GetEasterDate(ByVal Year As Integer) As Date 'Originally taken from: http://www.thoughtproject.com/Snippets/Easter/Easter.vb.txt Dim a As Integer Dim b As Integer Dim c As Integer Dim d As Integer Dim e As Integer Dim f As Integer Dim g As Integer Dim h As Integer Dim i As Integer Dim k As Integer Dim l As Integer Dim m As Integer Dim n As Integer Dim p As Integer If Year < 1583 Then Return Nothing Else ' Step 1: Divide the year by 19 and store the ' remainder in variable A. Example: If the year ' is 2000, then A is initialized to 5. a = Year Mod 19 ' Step 2: Divide the year by 100. Store the integer ' result in B and the remainder in C. b = Year \ 100 c = Year Mod 100 ' Step 3: Divide B (calculated above). Store the ' integer result in D and the remainder in E. d = b \ 4 e = b Mod 4 ' Step 4: Divide (b+8)/25 and store the integer ' portion of the result in F. f = (b + 8) \ 25 ' Step 5: Divide (b-f+1)/3 and store the integer ' portion of the result in G. g = (b - f + 1) \ 3 ' Step 6: Divide (19a+b-d-g+15)/30 and store the ' remainder of the result in H. h = (19 * a + b - d - g + 15) Mod 30 ' Step 7: Divide C by 4. Store the integer result ' in I and the remainder in K. i = c \ 4 k = c Mod 4 ' Step 8: Divide (32+2e+2i-h-k) by 7. Store the ' remainder of the result in L. l = (32 + 2 * e + 2 * i - h - k) Mod 7 ' Step 9: Divide (a + 11h + 22l) by 451 and ' store the integer portion of the result in M. m = (a + 11 * h + 22 * l) \ 451 ' Step 10: Divide (h + l - 7m + 114) by 31. Store ' the integer portion of the result in N and the ' remainder in P. n = (h + l - 7 * m + 114) \ 31 p = (h + l - 7 * m + 114) Mod 31 ' At this point p+1 is the day on which Easter falls. ' n is 3 for March or 4 for April. Return DateSerial(Year, n, p + 1) End If End Function * Lag disse eventene:

      (parameters er devID til devicen du laget)
       
      Påminnelse om å flagge:

      (jeg bruker et script som sender meg pushvarsel via Pushover, hvis jeg er hjemme, men du kan bruke hva du vil som "action")

      Påminnelse om å ta ned:

      Her er "cannot re-run for" en fordel, for man skal ta ned flagget enten kl 2100 eller ved solnedgang. Ønsker ikke påminnelse på begge de tidspunktene.  
    • Av mpdei
      Jeg ønsker å få til trinnvis belysning av trappetrinn på samme måte som her: https://kreativbelysning.no/butikk/trappebelysning/automatisk-trappebelysning
      Tenker følgende:
      - Bevegelsesdetektor i topp og bunn
      - 4 stk Fibaro rgbw hvor hver utgang er koblet til ett trinn
      - Lage et script som styrer rekkefølgen og tidsintervall på når hvert trinn tennes (hsp.WaitMS?)
       
      Utfordringen er at jeg aldri har laget et script før, og vet knapt nok hvordan det fungerer. Så mitt spørsmål er: hvordan skal et slikt script skrives?
       
       
      Setter stor pris på tips i riktig retning
       
       
×