Vinnerliste
Populært innhold
Viser innholdet med mest poeng fra 16. des. 2022 i alle områder
-
I disse dagene med ekstreme prisvariasjoner er det nok smartere å bruke mer strøm i de timene strømprisene er lavest enn å optimalisere for lavest effektledd. Prisen på de høyeste timene har typisk ligget på 10x prisen til laveste time. Det kan se slik ut (rød kurve er pris etter beregnet strømstøtte basert på gjennomsnittet for 1-16 desember): Her er effektiv gjennomsnittelig strømpris ca 1,56 kr per kWt inkludert alle avgifter og nettleie etter at strømstøtten er trukket fra. Uten å flytte forbruk hadde nok gjennomsnittet ligget over 1kr høyere per kWt. Med et forbruk på ca 70 kWt per døgn vil det si at et trinn opp på nettleien er spart inn på et par dager.2 poeng
-
Det er det samme maset hvert år: "Hvorfor må vi alltid ha disse kjedelige juletrelysene? Klart jeg kan bruke RGBW-lys, men de er så... statiske.". Vi har alle vært der. Vel, Twinkly er svaret. Det er juletrelys som kan styres via en app, man kan legge til animasjoner, og man kan til og med lage egne og "tegne" fargene på treet i sanntid. Og nå kan man også selvfølgelig styre treet fra HomeSeer. Lagre scriptet under som Twinkly.vb i /scripts-mappen, endre IPen (nest øverste linje), og lag et event der du kjører "Setup"-funksjonen. Hvis du oppdaterer, så kan du istedenfor kjøre "AddDeviceButtons"-funksjonen og bruke deviceID'en til eksisterende Twinkly-devicer som parameter (en om gangen). Twinkly.vb 'Moskus 2019-2020 Dim IP As String Dim debug As Boolean = False Public Sub Main(ByVal something As Object) End Sub Public Sub ButtonPress(ByVal input As Object) Dim deviceRef As Integer = input(0) IP = DirectCast(hs.GetDeviceByRef(deviceRef), Scheduler.Classes.DeviceClass).Device_Type_String(hs) Dim cmd As String = input(1) If cmd.StartsWith("Brightness_") Then Dim value As Integer = cmd.Split("_")(1) DoCmd("Brightness", value) Else If DoCmd(cmd) Then hs.SetDeviceString(deviceRef, cmd, True) End If If DoCmd(cmd) Then hs.SetDeviceString(deviceRef, cmd.Replace("_", " "), True) End Sub Public Function DoCmd(ByVal command As String, Optional ByVal value As Integer = 100) As Boolean 'SetMode("rt") 'SetMode("demo") 'SetMode("movie") 'SetMode("effect") 'SetMode("off") If debug Then hs.WriteLog("Twinkly", "Starting DoCmd()") Dim code As String = GetRandomCode() If debug Then hs.WriteLog("Twinkly", "Code: " & code) Dim auth As TwinklyAuthentication = Login(code, forceNew:=True) If debug Then hs.WriteLog("Twinkly", "Authentication_token: " & auth.authentication_token) Dim success As Boolean = Verify() If debug Then hs.WriteLog("Twinkly", "Verified: " & success) If command = "Brightness" Then SetBrightness(value) Else SetMode(command) End If Return True End Function Public Sub Setup(ByVal not_used As String) Dim new_ref As Integer = hs.NewDeviceRef("Twinkly") Dim dv As Scheduler.Classes.DeviceClass = hs.GetDeviceByRef(new_ref) dv.Location(hs) = "Twinkly" dv.Location2(hs) = "Twinkly" dv.Can_Dim(hs) = False dv.DeviceType_Set(hs) = New HomeSeerAPI.DeviceTypeInfo dv.Status_Support(hs) = True dv.Can_Dim(hs) = False dv.MISC_Set(hs, HomeSeerAPI.Enums.dvMISC.SHOW_VALUES) 'This is &H100 dv.MISC_Clear(hs, HomeSeerAPI.Enums.dvMISC.STATUS_ONLY) 'This is &H10 hs.SaveEventsDevices() AddDeviceButtons(new_ref) hs.WriteLog("Twinkly", "Initiation done!") End Sub Public Sub AddDeviceButtons(ByVal device_ref As String) Dim devID As Integer = CInt(device_ref) hs.DeviceScriptButton_DeleteAll(devID) hs.DeviceProperty_dvMISC(device_ref, HomeSeerAPI.Enums.eDeviceProperty.MISC_Set, HomeSeerAPI.Enums.dvMISC.SHOW_VALUES) Try hs.WriteLog("Twinkly", "Added button 1: " & hs.DeviceScriptButton_AddButton(devID, "Movie", 101, "Twinkly.vb", "ButtonPress", "Movie", 1, 1, 1)) hs.WriteLog("Twinkly", "Added button 2: " & hs.DeviceScriptButton_AddButton(devID, "Effect", 102, "Twinkly.vb", "ButtonPress", "Effect", 1, 2, 1)) hs.WriteLog("Twinkly", "Added button 3: " & hs.DeviceScriptButton_AddButton(devID, "Demo", 103, "Twinkly.vb", "ButtonPress", "Demo", 1, 3, 1)) hs.WriteLog("Twinkly", "Added button 4: " & hs.DeviceScriptButton_AddButton(devID, "Pause", 104, "Twinkly.vb", "ButtonPress", "RT", 1, 4, 1)) hs.WriteLog("Twinkly", "Added button 5: " & hs.DeviceScriptButton_AddButton(devID, "Off", 0, "Twinkly.vb", "ButtonPress", "Off", 1, 5, 1)) For i As Integer = 10 To 100 Step 10 hs.WriteLog("Twinkly", "Added dimming " & i & " : " & hs.DeviceScriptButton_AddButton(devID, (i & "%").ToString, i, "Twinkly.vb", "ButtonPress", "Brightness_" & i, 2 + Math.Floor(i / 51), (i / 10 - Math.Floor(i / 51) * 5), 1)) Next Catch ex As Exception hs.WriteLog("Twinkly", "Error adding buttons: " & ex.Message) End Try End Sub Public Sub SetMovieConfig(ByVal frameDelay As Integer, ByVal numberOfLEDs As Integer, ByVal framesNumber As Integer, ByVal loopType As Integer) Dim data As New System.Collections.Generic.Dictionary(Of String, Integer) data.Add("frame_delay", frameDelay) data.Add("leds_number", numberOfLEDs) data.Add("frames_number", framesNumber) Dim output As String = RunAPI("led/movie/config", Newtonsoft.Json.JsonConvert.SerializeObject(data)) If debug Then hs.WriteLog("Twinkly", "SetMovieConfig: " & output) End Sub Public Sub GetMovieConfig() ' {"frame_delay":66,"leds_number":175,"loop_type":0,"frames_number":212,"sync":{"mode":"none","slave_id":"","master_id":""},"code":1000} Dim output As String = RunAPI("led/movie/config") If debug Then hs.WriteLog("Twinkly", "GetMovieConfig: " & output) End Sub Public Sub GetMovieFull() If debug Then hs.WriteLog("Twinkly", "GetMovieFull: ") Dim output As Byte() = RunAPIraw("led/movie/all") If debug Then hs.WriteLog("Twinkly", ConvertByteArrayToString(output) & " ... done!") End Sub Public Sub SetMovieFull(ByVal octetString As String) Dim movie() As Byte = ConvertStringToByteArray(octetString) If debug Then hs.WriteLog("Twinkly", "SetMovieFull: ") Dim ret = RunAPIraw("led/movie/full", movie) If debug Then hs.WriteLog("Twinkly", System.Text.Encoding.ASCII.GetString(ret) & " ... done!") End Sub ''' <summary> ''' Get brightness ''' </summary> Public Function GetBrightness() As Integer Console.Write("Getting brigthness...") Dim output As String = RunAPI("led/out/brightness") Dim json = Newtonsoft.Json.JsonConvert.DeserializeObject(Of Object)(output) Return json("value") End Function ''' <summary> ''' Set brightness ''' </summary> ''' <param name="brightness">0-100</param> Public Sub SetBrightness(ByVal brightness As Integer) If debug Then hs.WriteLog("Twinkly", "Setting brigthness to '" & brightness & "'...") Dim data As New System.Collections.Generic.Dictionary(Of String, Object) data.Add("mode", "enabled") data.Add("value", brightness) data.Add("type", "A") Dim output As String = RunAPI("led/out/brightness", Newtonsoft.Json.JsonConvert.SerializeObject(data)) If debug Then hs.WriteLog("Twinkly", IIf(output.Contains("1000"), " was a success!", " failed. :(")) End Sub ''' <summary> ''' Sets the display ''' </summary> ''' <param name="mode">rt, movie, demo, restart, effect, off</param> Public Sub SetMode(ByVal mode As String) If debug Then hs.WriteLog("Twinkly", "Setting mode to '" & mode & "'") Dim data As New System.Collections.Generic.Dictionary(Of String, String) data.Add("mode", mode.ToLower()) Dim output As String = RunAPI("led/mode", Newtonsoft.Json.JsonConvert.SerializeObject(data)) Dim success As Boolean = output.Contains("1000") If debug Then hs.WriteLog("Twinkly", "Mode set: " & IIf(success, " was a success!", " failed. :(")) If Not success And debug Then hs.WriteLog("Twinkly", "Output: " & output) End Sub Public Function GetAuthentication() As TwinklyAuthentication Dim auth As TwinklyAuthentication = New TwinklyAuthentication Dim authString As String = hs.GetINISetting("Twinkly", "Authentication", "", "Twinkly.ini") Try If authString <> "" Then auth = Newtonsoft.Json.JsonConvert.DeserializeObject(Of TwinklyAuthentication)(authString) End If Catch ex As Exception End Try Return auth End Function Public Function Verify() As Boolean Dim auth As TwinklyAuthentication = GetAuthentication() Dim data As New System.Collections.Generic.Dictionary(Of String, String) data.Add("challenge-response", auth.challengeresponse) Dim output As String = RunAPI("verify", Newtonsoft.Json.JsonConvert.SerializeObject(data)) Return output.Contains("1000") End Function Public Function Login(ByVal challenge As String, Optional ByVal forceNew As Boolean = False) As TwinklyAuthentication Dim auth As TwinklyAuthentication = Nothing Dim authString As String = "" authString = hs.GetINISetting("Twinkly", "Authentication", "", "Twinkly.ini") Try If authString <> "" Then auth = Newtonsoft.Json.JsonConvert.DeserializeObject(Of TwinklyAuthentication)(authString) Catch ex As Exception End Try If auth Is Nothing OrElse forceNew Then Dim data As New System.Collections.Generic.Dictionary(Of String, String) data.Add("challenge", challenge) Dim output As String = RunAPI("login", Newtonsoft.Json.JsonConvert.SerializeObject(data)) hs.SaveINISetting("Twinkly", "Authentication", output, "Twinkly.ini") auth = Newtonsoft.Json.JsonConvert.DeserializeObject(Of TwinklyAuthentication)(output) End If Return auth End Function Private Function RunAPI(ByVal urlFunction As String, Optional ByVal query As String = "") As String Dim source As String = "" Dim url As String = "http://" & IP & "/xled/v1/" & urlFunction Dim auth As TwinklyAuthentication = GetAuthentication() Using client As New System.Net.WebClient client.Headers.Add("Content-Type", "application/json") If auth.authentication_token <> "" Then client.Headers.Add("X-Auth-Token", auth.authentication_token) End If If query <> "" Then source = client.UploadString(url, "POST", query) Else source = client.DownloadString(url) End If End Using Return source End Function Private Function RunAPIraw(ByVal urlFunction As String, Optional ByVal bytes() As Byte = Nothing) As Byte() Dim auth As TwinklyAuthentication = GetAuthentication() Dim source As Byte() = {} Dim url As String = "http://" & IP & "/xled/v1/" & urlFunction Using client As New System.Net.WebClient Net.ServicePointManager.DefaultConnectionLimit = 9999 client.Headers.Add("Content-Type", "application/octet-stream") If auth.authentication_token <> "" Then client.Headers.Add("X-Auth-Token", auth.authentication_token) End If If bytes IsNot Nothing Then source = client.UploadData(New Uri(url), bytes) Else source = client.DownloadData(url) End If End Using Return source End Function Public Function GetRandomCode(Optional ByVal forceNew As Boolean = False) As String Dim code As String = hs.GetINISetting("Twinkly", "Code", "", "Twinkly.ini") If code = "" OrElse forceNew Then code = GetRandomString(32) hs.SaveINISetting("Twinkly", "Code", code, "Twinkly.ini") End If Return code End Function Private Function GetRandomString(ByVal length As Integer) Dim s As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" Dim r As New Random Dim sb As New Text.StringBuilder For i As Integer = 0 To length - 1 Dim idx As Integer = r.Next(0, 35) sb.Append(s.Substring(idx, 1)) Next Return sb.ToString() End Function Public Function ConvertStringToByteArray(ByVal input As String) As Byte() Dim lst As New System.Collections.Generic.List(Of Byte) For i As Integer = 0 To input.Length - 1 Step 2 Dim temp As String = input.Substring(i, 2) Dim val As Integer = Convert.ToInt32(temp, 16) lst.Add(Convert.ToByte(val)) Next Return lst.ToArray() End Function Public Function ConvertByteArrayToString(ByVal bytes() As Byte) As String Dim ret As String = "" For Each b As Byte In bytes ret &= Convert.ToChar(b).ToString() Next Return ret End Function Public Class TwinklyAuthentication Private _authentication_token As String Public Property authentication_token() As String Get Return _authentication_token End Get Set(ByVal value As String) _authentication_token = value End Set End Property Private _authentication_token_expires_in As Integer Public Property authentication_token_expires_in() As Integer Get Return _authentication_token_expires_in End Get Set(ByVal value As Integer) _authentication_token_expires_in = value End Set End Property Private _challengeresponse As String Public Property challengeresponse() As String Get Return _challengeresponse End Get Set(ByVal value As String) _challengeresponse = value End Set End Property Private _code As Integer Public Property code() As Integer Get Return _code End Get Set(ByVal value As Integer) _code = value End Set End Property End Class Gammelt script: Da får du en device som dette: Gå inn på Devicen, og gå til Advanced. Legg så IP-adressen til Twinkly-lenken inn under "Device Type (String)": ... og siden vi endrer Device Types, må vi huske å vise alle etter på: Den nye versjonen støtter altså flere lenker på samme script, man slipper å lage kopier av scriptet hvis man har flere lenker.1 poeng
-
Men her er det context.get("kWh_part") sin returverdi som bestemmer datatypen. Javascript har noen merkelig funksjonalitet ang datatyper og jeg er på gyngende grunn her. Kjenner ikke javascript godt nok. Men her må du se på sannsynlige årsaker. Javascript roter ikke med noe så enkelt som kWh_acc = kWh_acc + 0.01; Det nekter jeg å tro på.1 poeng
-
Dette forumet var det som fikk meg i gang med Homeseer da jeg hadde et konkret behov som måtte løses og det er dette forumet og de brukere som er her som har hatt hovedrollen med å hjelpe meg med å løse diverse større og mindre utfordringer som har oppstått. Dette forumet er den viktigste ressursen og kunnskapskilden jeg har når det gjelder hejmmeautomasjon. Jeg har herved meldt meg på for et årlig beløp.1 poeng
-
Har ingen direkte erfaring med SpacLync, men har en LogicMachine, så kunnskapen bør være noenlunde overførbar. SpaceLync er en rebranda LogicMachine. Selv har jeg flyttet det meste av automasjon og styring over til HomeAssistant, og bruker LogicMachine mest som en KNX/1-wire gateway. Om du trenger hjelp så er nok forumet til LogicMachine veien å gå: https://forum.logicmachine.net/index.php For å gjøre mer avansert logikk må du også lese deg opp på Lua-scripting, som er språket som brukes på LogicMachine. Sitter du fast får du god hjelp på forumet. Om du spør riktig kan det hende noen har løst det samme som du er ute etter tidligere også1 poeng
-
Det er ofte bedre å gjøre en "Replace failed node", så slipper en at den får en ny node id.1 poeng
-
Jeg synes Aeotec Heavy Duty fungerer meget bra. Du må selvsagt ha noe som styrer den. Fordelen er at en har full kontroll selv og er ikke avhengig av noe annet som typisk det kan gå ut av support.1 poeng
-
~�A��|��@ �� AIDON_V0001 `� 735999289929XXX `� 6525 �r � � �� �$�! G�,�! � �# 4� ;�# H� �#�A~ osv... Jepp, var det jeg fryktet. Ikke noe galt med ElWiz, men skeptisk til å ha ennå en applikasjon som må gå i bakgrunnen. Så jeg har allerede resignert og bestilt en Amsleser til hjemmebruk, så tar jeg Pulse til hytta og setter den opp mot Tibber igjen.1 poeng
-
Støttes! Donasjon kommer 😄👊 Foretrekker årlig beløp. Det er så mange småabonnementer som ruller, og det er vanskelig å ha total oversikt over cashflow. Hadde vært supert om administratorene kunne si noe om forventet "inntekt" og hvor mye som er samlet inn, så kan forumet bidra kollektivt til å opprettholde/støtte drifta. Jeg synes i alle fall det er vår plikt å støtte, og det burde være lav terskel for å spørre om mer, eller si at dere har fått nok for et år...1 poeng
-
WLED er et program som kjører på en liten og billig chip (ESP32 eller NodeMCU), og som gjør at du enkelt kan lage stilige lyssettinger mer adresserbare LED-striper eller -lenker. Dette er en nybegynners guide til WLED, bl.a. fordi jeg er en nybegynner selv (selv om jeg har lekt med det i 3-4 år)! Julelys i 2022: ... og 2021 og 2020. For å komme i gang trenger du ikke mye: En NodeMCU (ESP8266) eller en ESP32 Alternativt kan man kjøpe et ferdig byggesett med QuinLed. @aarpi har bygget to stykker for meg. Den siste har jeg kjøpt ferdig bygget med ESP32 og ekstern antenne. Noen ledninger og gjerne hurtigtilkoblinger for LED-striper. En strømforsyning på 5V, " så kraftig som mulig". (Det er ikke bra å ha for svak strømforsyning, så ikke spar på pengene her). Jeg har typisk kjøpt gode, kraftige strømforsyninger på RS components. En adresserbar LED-stripe eller -lenke, f.eks. med WS2812B-leds 5V. Jeg har kjøpt striper som disse og lenker som disse. Installere WLED Jeg har prøvd og feilet litt tidligere på dette, men fant til slutt en enkel måte. Last ned WLED: Gå hit: https://github.com/Aircoookie/WLED Trykk på Releases (siste versjon er i skrivende stund 0.13.3) På bunnen finner du flere filer. Finn riktig fil og last ned last ned. Har du en ESP8266/NodeMCU så skal du ha filen som slutter med "_ESP8266.bin". Har du en ESP32 skal du ha filen som slutter med "_ESP32.bin". Last ned ESPHomeFlasher for Windows, Mac eller Linux https://github.com/esphome/esphome-flasher/releases Installer og start ESPHomeFlasher. Velg .bin-filen du lastet ned i punkt 1.3 og flash denne. Verifiser at du (f.eks. med mobiltelefonen din) finner WLED-AP og kan koble deg til dette. Passordet er "wled1234". Koble opp en LED-lenke/stripe Dette er enklest forklart på WLED sine egne sider. I prinsippet handler det om å koble både ESP32/8266 og LED-stripen til samme + og -, og så koble dataporten til riktig pinne på EPS32/NodeMCU. I sin enkleste form kan det være slik: Det kan med fordel være en sikring før L3D-stripen, spesielt hvis du skal ha dem ute: Det er bedre at sikringen går enn at strømforsyningen blir for varm, brann er generelt dumt, og greit å unngå. Tidligere nevnte QuinLed løser dette for deg, de blir levert med sikring på kretskortet. Alle mine utendørs er QuinLed, og da kan man også velge 12V eller 24V LEDs hvis man ønsker uten for mye styr. Når alt er klart, setter man strømsforsyningen i veggen. Hvis alt er OK, vil LEDene nå lyse gult. Hvis de ikke lyser gult men en annen farge, så må man justere fargene på RGB, for de kan komme i mange ulike rekkefølger, gå til Settings -> LED preferences og finn "Color Order". Innstillinger Første jobb er å koble seg på ditt trådløse nettverk. Koble til WLED-AP med passord1234 Åpne en nettleser og gå til adressen http://4.3.2.1 Gå til Config, øverst til høyre. Trykk på WiFi Setup. Tast inn din nettverksinfo, SSID og passord. Hvis du har mulighet til fast IP, så kan det være en stor fordel. Konfigurer det nå. Trykk Save øverst eller nederst. Vent på reboot. Installer app'en "WLED" fra App Store eller Google Play, og åpne app'en. Åpne appen, og trykk på + øverst til høyre. Trykk på "Discover lights" Legg til wled-instansen den finner. Nå er du i prinsippet klar. Integrering Web-grensesnitt inneholder maaange konfigurasjoner, og det er lett å gå seg vil. Her er mine raske notater om hva jeg finner hvor. Alexa-integrering: Innstillinger finnes under Config -> Sync Interfaces. Bare husk å gi den navn enn noen annet enn "Light" for det kan fort skape krøll for de andre lysene. HTTP-API Enkelt å sende kommandoer fra "hva som helst". Dokumentasjonen finnes her:https://kno.wled.ge/interfaces/http-api/ MQTT Innstillingene for dette ligger også under Config -> Sync Interfaces. HomeSeer, via mscMQTT. Gratis-plugin til HomeSeer, støtter WLED ut av esken. Kan scripte HTTP-integrering hvis ønskelig. Home Assistant, HTTP-integrering: https://www.home-assistant.io/integrations/wled/ men andre har også brukt MQTT-integrering. DMX og E1.31 xLights, QLC+, jinx er eksempler på programmer som bruker DMX-integreringen. Jeg har lange lysshow programmert i QLC+, men de fleste sprø julehus er visst for det meste programmert i xLights (for oss amatører). Jinx kan sende 2D-effekter, tall og bokstaver hvis du ønsker det. xLights kan nok fort parkere det jeg har til nå... Effekter WLED har mange innebygde effekter, og i kombinasjon med ulike parametre gir det millioner av variasjoner. Her er det bare å leke. På julelysene bruker jeg effekten "Running 2" med rød og hvit som farger som standard. Dette kjører i vinduer og på reinsdyr, stjerne og juletre til noen ute aktiverer triggere. Triggeren i garasjevinduet er en TOF-sensor som trigger hvis avstanden blir redusert med X%. Jeg bruker MQTT-integreringen i HomeSeer sammen med et lite script for å lage små lysshow. De spesielt interesserte kan se scriptet her:1 poeng
-
En sparer jo ikke penger på hjemmeautomasjonen, men får mer komfort så hvorfor ikke spytte i et bidrag. En sparer jo bomkjøp av produkter som andre har gjort 😅 Eller når strømmen koster sånn som nå sparer en kansje penger på hjemmeautomasjon, så noe "positivt" er det nå om en kan si det sånn.1 poeng
Vinnerlisten er satt til Oslo/GMT+01:00