Gå til innhold
  • Bli medlem
Moskus

SCRIPT: IncrementLight.vb - Øk lyset gradvis til det er helt på (på forskjellige måter)

Anbefalte innlegg

Dette scriptet brukes f.eks. hvis du vil øke lyset gradvis fra 0% til 100% over en halv time. Da trenger du et script som trigger hvert 18. sekund, og som kjører dette scriptet:

 

IncrementLight.vb

    Public Sub Main(ByVal _deviceRef As Object)
        '© Moskus
        Dim deviceRef As Integer = Integer.Parse(_deviceRef)
        Dim deviceValue As Integer = hs.DeviceValue(deviceRef)

        'Exit if the device is already at maximum, i.e. "On"
        If hs.CAPIGetStatus(deviceRef).Status = "On" Then Exit Sub

        'Find the correct CAPI control to execute. I really miss Linq!!!
        For Each cc As HomeSeerAPI.CAPIControl In hs.CAPIGetControl(deviceRef)
            If cc.ControlValue = (deviceValue + 1) Then

                'Set the correct dim level
                hs.CAPIControlHandler(cc)

                'We're done, so let's exit!
                Exit Sub
            End If
        Next
    End Sub

 

 

IncrementLightCustom.vb

Ulempen med de fleste dimmere er at de ikke er lineære. De første 1-20% gir en mye større relativt forskjell enn de siste 80-99%. Det gjør det følgende scriptet med, men du trenger en "counter" som må settes til 0 før du starter.

 

Parameter: 100#counter name

... der 100 er device ref til lampen du skal styre, og "counter name" selvfølgelig er navnet på counteren.

 

    Public Sub Main(ByVal _deviceRefAndCounter As Object)
        '© Moskus
        Dim deviceRef As Integer = Integer.Parse(_deviceRefAndCounter.ToString.Split("#")(0))
        Dim countervalue As Integer = hs.CounterValue(_deviceRefAndCounter.ToString.Split("#")(1))
        Dim modifier As Integer = 4

        Dim dimvalue As Integer = Math.Ceiling(countervalue ^ (modifier) / 100 ^ (modifier - 1))

        'Exit if the device is already at maximum, i.e. "On"
        If hs.CAPIGetStatus(deviceRef).Status = "On" Then Exit Sub

        'Find the correct CAPI control to execute. I really miss Linq!!!
        For Each cc As HomeSeerAPI.CAPIControl In hs.CAPIGetControl(deviceRef)
            If cc.ControlValue = dimvalue Then

                'Set the correct dim levelQ
                hs.CAPIControlHandler(cc)

                'We're done, so let's exit!
                Exit Sub
            End If
        Next
    End Sub

 

 

IncrementLightRGB.vb

Hvis man istedenfor har en RGB-stripe eller lampe, og man først vil ha lyset rødt, så gult, og deretter hvitt, kan man bruke dette. Du må endre de fire første linjene for å passe til ditt oppsett.

    Public Sub Main(ByVal _nothingreally As Object)
        '© Moskus
        Dim deviceR As Integer = 990
        Dim deviceG As Integer = 991
        Dim deviceB As Integer = 992
        Dim countervalue As Integer = hs.CounterValue("Sunshine soverom")
        Dim modifier As Integer = 2

        Dim dimvalue As Integer = Math.Ceiling(countervalue ^ (modifier) / 100 ^ (modifier - 1))


        'Exit if the device is already at maximum, i.e. "On"
        'If hs.CAPIGetStatus(deviceR).Status = "On" Then Exit Sub

        'Red
        If countervalue <= 100 Then
            'Find the correct CAPI control to execute. I really miss Linq!!!
            For Each cc As HomeSeerAPI.CAPIControl In hs.CAPIGetControl(deviceR)
                If cc.ControlValue = dimvalue Then
                    If hs.CAPIGetStatus(deviceR).Status <> "On" Then hs.CAPIControlHandler(cc)
                    Exit For
                End If
            Next
        End If

        'Green
        If countervalue > 100 AndAlso countervalue <= 200 Then
            For Each cc As HomeSeerAPI.CAPIControl In hs.CAPIGetControl(deviceG)
                If cc.ControlValue = countervalue - 100 Then
                    If hs.CAPIGetStatus(deviceG).Status <> "On" Then hs.CAPIControlHandler(cc)
                    Exit For
                End If
            Next
        End If


        If countervalue = 150 Then
            Dim capi As HomeSeerAPI.CAPIControl = hs.CAPIGetSingleControl(deviceB, True, "off", False, False)
            hs.CAPIControlHandler(capi)
        End If

        'Blue
        If countervalue > 150 Then
            For Each cc As HomeSeerAPI.CAPIControl In hs.CAPIGetControl(deviceB)
                If cc.ControlValue = countervalue - 150 Then
                    If hs.CAPIGetStatus(deviceB).Status <> "On" Then hs.CAPIControlHandler(cc)
                    Exit For
                End If
            Next
        End If
    End Sub

 

Generelt oppsett av eventer:

1uxCI8r.png

 

eHhfpga.png

 

B9AiIPR.png

  • Like 1

Del dette innlegget


Lenke til innlegg
Del på andre sider

Hva er enkleste måte å justere alarmtidspunkt på? En virtuell device med dropdown list blir vel ikke helt optimalt siden man da må gå via en verdi som ikke er på "klokkeformat"?

Skulle gjerne hatt en klokkeapp på iPhonen som kunne sendt en IFTTT trigger.

Endret av iceball

Del dette innlegget


Lenke til innlegg
Del på andre sider

Med utgangspunkt i @Moskus sitt IncrementLight.vb har jeg laget en "v2", som bare krever ett event (ellers ikke så mye annerledes 🙂):

Sub Main (ByVal params as Object)
  ' @Author: Sven-Ove Bjerkan and Moskus
  ' @Version: 2 (2017-10-07)

  ' IMPORTANT! 
  ' 1. Create this event as a "disabled" event and trigger it once from another event!
  ' 2. Set the trigger for this event to "The event will automatically trigger every..." E.g: 6 seconds will dim the light from 0 to 100 in 10 min

  ' @Syntax: deviceid|this_event_name|stoplevel
  ' deviceid: lamp deviceid
  ' this_event_name: The name of this exact event - very important!
  ' stoplevel: optional, will increment to 100 if not supplied


  Dim parameters() as String = params.ToString.Split("|")
  Dim deviceRef As Integer = parameters(0)
  Dim eventName As String = parameters(1)
  Dim stopValue As Integer = 100

  If parameters.length = 3 Then
       stopValue = parameters(2)
  End If

  Dim deviceValue As Integer = hs.DeviceValue(deviceRef)

  deviceValue = deviceValue + 1
  If deviceValue > 100 Then
    deviceValue = 100
  End If
  If deviceValue < 1 Then
    deviceValue = 1
  End If

  hs.EnableEvent(eventName)
  'Exit if the device is already at maximum, i.e. "On"
  If hs.CAPIGetStatus(deviceRef).Status = "On" Or deviceValue > stopValue Then 
    hs.DisableEvent(eventName)
    Exit Sub
  End If


  'Find the correct CAPI control to execute. I really miss Linq!!!
  For Each cc As HomeSeerAPI.CAPIControl In hs.CAPIGetControl(deviceRef)
    If cc.ControlValue = deviceValue Then

    'Set the correct dim level
    hs.CAPIControlHandler(cc)

    'We're done, so let's exit!
    Exit Sub
    End If
  Next

End Sub

incrementlightv2.thumb.PNG.102df8d4d21a80a5b1b36153f7276be9.PNG

  • Like 2

Del dette innlegget


Lenke til innlegg
Del på andre sider
På 10/7/2017 den 22.17, ZoRaC skrev:

Med utgangspunkt i @Moskus sitt IncrementLight.vb har jeg laget en "v2", som bare krever ett event (ellers ikke så mye annerledes 1f642.png):

I like it! :D 

Del dette innlegget


Lenke til innlegg
Del på andre sider
On 07/10/2017 at 22:17, ZoRaC said:

Med utgangspunkt i @Moskus sitt IncrementLight.vb har jeg laget en "v2", som bare krever ett event (ellers ikke så mye annerledes 🙂):

 

 

Jeg prøver å benytte dette scriptet for å dimme opp flere lyssoner (4) i stue/kjøkken samtidig om morgenen. Jeg har da et event som trigges av Alexa og det eventet trigger igjen et event for hver sone, som er satt opp som beskrevet over. Alle Dimme-eventene benytter samme .vb-script. 

Dette fungerer ikke... Selv med "Only allow a single instance to run at a time" disabled og enablet "Wait for script to finish before continuing", samt andre kombinasjoner av disse, så starter ikke dimming på alle sonene. Kun en eller to soner begynner å dimmes opp.

 

Noen som har forslag til fiks her?

Eller skal jeg kanskje bare utvide scriptet slik at et script dimmer alle 4 sonene? Det bør vel være inne rekkevidde, selv for en novise som meg, når alle sonene skal dimmes opp til samme nivå.

Del dette innlegget


Lenke til innlegg
Del på andre sider

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gjest
Skriv svar til emnet...

×   Du har limt inn tekst med formatering.   Fjern formatering

  Du kan kun bruke opp til 75 smilefjes.

×   Lenken din har blitt bygget inn på siden automatisk.   Vis som en ordinær lenke i stedet

×   Tidligere tekst har blitt gjenopprettet.   Tøm tekstverktøy

×   Du kan ikke lime inn bilder direkte. Last opp eller legg inn bilder fra URL.


  • Lignende innhold

    • Av Moskus
      Nå kan du endelig få endre trigger-tiden til dine eventer med noen enkle tastetrykk! Det fungerer fint på websiden, HStouch og HS Mobile.  
       
      Vi har alle eventer som går av på et visst tidspunkt. F.eks. vekkerklokker. Av og til vil man enkelt kunne endre tiden på vekkerklokken uten å måtte navigere til Event-siden og finne selve eventet. Kanskje vil man at ungene skal kunne gjøre det, etc.
       
      Med dette scriptet får du en device som dette:
      ... som lar deg endre klokkeslettet på et event.
       
      Her er scriptet (vær nøye med filnavnet, det må være riktig):
      TimeDevice.vb
      Public Sub Main(ByVal input As Object) 'Moskus 2019 '----------------------------- 'The Main sub will update 'DeviceRef,NewTime 'Example: 3245,13:00 -> will set device 3245 to 13:00 and the event to trigger at 13:00 '----------------------------- Dim deviceRef As Integer = input.ToString.Split(",")(0) Dim timeString As String = input.ToString.Split(",")(1) Dim _time As TimeSpan = TimeSpan.Parse(timeString) UpdateDeviceAndEvent(deviceRef, _time) End Sub Public Sub CreateDevice() Dim deviceRef As Integer = hs.NewDeviceRef("Klokkekontroll") Dim dev As Scheduler.Classes.DeviceClass = hs.GetDeviceByRef(deviceRef) dev.Location(hs) = "Klokke" dev.Location2(hs) = "Klokke" dev.Device_Type_String(hs) = "Ditt event her" hs.SaveEventsDevices() AddDeviceButtons(deviceRef) Dim _time As New TimeSpan hs.SetDeviceString(deviceRef, _time.ToString("hh\:mm"), False) hs.SetDeviceValueByRef(deviceRef, _time.TotalMinutes, True) End Sub Public Sub ButtonPress(ByVal input As Object) Dim deviceRef As Integer = input(0) Dim parameter As String = input(1) Dim deviceValue As Integer = hs.DeviceValue(deviceRef) Dim minutesToAdd As Integer = Integer.Parse(parameter) Dim newValue As Integer = deviceValue + minutesToAdd If newValue < 0 Then newValue = 24 * 60 + minutesToAdd If newValue > 24 * 60 Then newValue = minutesToAdd Dim _time As TimeSpan = New TimeSpan(0, newValue, 0) UpdateDeviceAndEvent(deviceRef, _time) End Sub Public Sub UpdateDeviceAndEvent(ByVal deviceRef As Integer, ByVal _time As TimeSpan) hs.SetDeviceString(deviceRef, _time.ToString("hh\:mm"), False) hs.SetDeviceValueByRef(deviceRef, _time.TotalMinutes, True) Dim eventName As String = DirectCast(hs.GetDeviceByRef(deviceRef), Scheduler.Classes.DeviceClass).Device_Type_String(hs) Dim eventRef As String = hs.GetEventRefByName(eventName) hs.EventSetTimeTrigger(eventRef, New Date(1, 1, 1).Add(_time)) hs.SaveEventsDevices() 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("TimeDevice.vb", "Added button 1: " & hs.DeviceScriptButton_AddButton(devID, "+5 min", 5, "TimeDevice.vb", "ButtonPress", "+5", 1, 1, 1)) hs.WriteLog("TimeDevice.vb", "Added button 2: " & hs.DeviceScriptButton_AddButton(devID, "-5 min", -5, "TimeDevice.vb", "ButtonPress", "-5", 1, 2, 1)) hs.WriteLog("TimeDevice.vb", "Added button 3: " & hs.DeviceScriptButton_AddButton(devID, "+15 min", 15, "TimeDevice.vb", "ButtonPress", "+15", 1, 3, 1)) hs.WriteLog("TimeDevice.vb", "Added button 4: " & hs.DeviceScriptButton_AddButton(devID, "-15 min", -15, "TimeDevice.vb", "ButtonPress", "-15", 1, 4, 1)) hs.WriteLog("TimeDevice.vb", "Added button 5: " & hs.DeviceScriptButton_AddButton(devID, "+1 time", 60, "TimeDevice.vb", "ButtonPress", "+60", 2, 1, 1)) hs.WriteLog("TimeDevice.vb", "Added button 6: " & hs.DeviceScriptButton_AddButton(devID, "-1 time", -60, "TimeDevice.vb", "ButtonPress", "-60", 2, 2, 1)) Catch ex As Exception hs.WriteLog("TimeDevice.vb", "Error adding buttons: " & ex.Message) End Try End Sub  
      Du trenger først å lage et event som trigger scriptet med rutinen "CreateDevice", slik:

       
      Gå nå til Device Manager-siden. Velg at "Klokke" skal vises, både for "Floor" og "Room". MEN: Du må også huske på å velge ALLE device typer:

       
      Da får du opp den nye devicen. Denne kan du navngi og gi plassering akkurat som det passer deg.
       
      Så skal vi bestemme hvilket event som skal trigges. Navnet sette vi som en "Device Type String" under Advanced-taben. Merk at hele navnet skal brukes, og at det er "Gruppe" + mellomrom + "Event navn". La oss si at jeg vil trigge et test-event som jeg har navngitt "Et timer-event", som her:

       
      Da er hele evnetnavnet mitt: "Test Et timer-event", og det setter vi inn her:

      ... og trykker "Done".
      NB! Når vi nå går tilbake til Device Manager, må vi huske på å vise alle Device Types igjen, fordi den har vi nettopp endret til noe nytt som ikke var valgt før.
       
      Så er det bare å stille klokka.  
      Endrer vi tiden på devicen til dette...

      ... vil eventet også endres:

       
      Det gjør ingenting om eventet ditt har andre conditions, de vil ikke bli påvirket av dette.  
       
       
       
      Scriptet har også en rutine for å endre klokkeslettet med eventer, f.eks. hvis man skal stille tilbake flere  vekkerklokker etter en ferie. 
      Da kaller man bare rutinen/metoden "Main" (eller lar være å spesifisere rutine), og bruker deviceRef og klokkeslett som parameter.
      Dette:

       
      ... gir dette:

      ... og selvfølgelig dette:

       
    • Av clio75
      Hva skal hentes denne uka er et gjentagende SPM hjemme hos oss. 
      Så jeg fant APPEN "Min renovasjon.". Men en app er jo ikke løsningen på noe. For man vil jo ha denne informasjonen inn i homeseer. 
       
      MinRenovasjon.vb
      Sub Main(ByVal parameters As Object) 'Clio75 All Credits to Moskus@hjemmeautomasjon.no 'Inspired and based on Moskus scrip NewsReader.vb Dim DevID As Integer = parameters.ToString.Split("|")(0) Dim KommuneNr As String = parameters.ToString.Split("|")(1) Dim Gatekode As String = parameters.ToString.Split("|")(2) Dim GateNavn As String = parameters.ToString.Split("|")(3) Dim GateNr As String = parameters.ToString.Split("|")(4) 'Setting URL string 'Dim URLGateName as string = URLEncode(GateNavn) ' hs.WriteLog("Soppel Debug", URLGateName ) 'Dim url As String = "https://komteksky.norkart.no/komtek.renovasjonwebapi/api/tommekalender/?kommunenr=0710&gatenavn=bl%C3%A5b%C3%A6rveien&gatekode=45024&husnr=16" 'Sette sammen URL: Dim kommuneURL as string = "kommunenr=" & KommuneNr Dim GateKodeURL as string = "gatekode=" & Gatekode Dim GateNavnURL as string = "gatenavn=" & GateNavn Dim GateNrURL as string = "husnr=" & GateNr Dim url As String = "https://komteksky.norkart.no/komtek.renovasjonwebapi/api/tommekalender/?kommunenr=0710&gatenavn=blåbærveien&gatekode=45024&husnr=16" Dim source As String = "" Try Using client As New System.Net.WebClient 'Sette Headers client.headers.set("Kommunenr", KommuneNr ) client.headers.set("RenovasjonAppKey", "AE13DEEC-804F-4615-A74E-B4FAC11F0A30") Net.ServicePointManager.SecurityProtocol = Net.SecurityProtocolType.Tls12 client.Encoding = System.Text.Encoding.UTF8 source = client.DownloadString(url) End Using Catch ex As Exception hs.WriteLog("Soppel Error", "Net Feil: " & ex.Message) End Try If source = "" Then hs.WriteLog("soppel Error", "Got no response from url: " & url) Exit Sub End If Try Dim json = Newtonsoft.Json.JsonConvert.DeserializeObject(Of Object)(source) Dim numMembers As Integer = 4 Dim DeviceText As String = "" For i As Integer = 0 To numMembers Dim output As String = "" Dim output2 As String = "" output = json(i)("FraksjonId") output2 = json(i)("Tommedatoer")(0) & " Neste :" & json(i)("Tommedatoer")(1) Select Case Output Case "1" output = Replace(output, "1", "<b>Restavfall : </b><br>") Case "2" output = Replace(output, "2", "<b>Papiravfall : </b><br>") Case "3" output = Replace(output, "3", "<b>Matavfall : </b> <br>") Case "4" output = Replace(output, "4", "<b>Glass/Metall : </b><br>") Case "5" output = Replace(output, "5", "<b>Drikkekartonger </b><br>") Case "6" output = Replace(output, "6", "<b>Grovavfall : </b><br>") Case "7" output = Replace(output, "7", "<b>Plastavfall : </b><br>") End Select DeviceText &= "" & output & " " & output2 & "<br>" 'hs.WriteLog("Soppel debug", output & " " & output2 ) Next hs.SetDeviceString(DevID, DeviceText , True) Catch ex As Exception hs.WriteLog("Soppel Error", "Net Feil: " & ex.Message) End Try End Sub Så en event : 
      Parameters : 
      DevieRef | Kommunenummer | Gatenummer | GataNavn | Husnummer
       
      Ser jeg forsatt har manuell trigger i screenshot, men en gang i døgnet burde vel holde i de fleste tilfeller. 

       
      SOM ga meg denne : 
       

       
      Instalering : 
      VeiNummer: 
      For å finne vegnummeret kan du gå inn på https://www.vegvesen.no/vegkart zoom deg inn på vegen din og nærmest mulig huset ditt klikker du på veien, Så finner du de 5 sifferene du trenger(Rødt). 
      Kommune Nummeret var de fire første her i Blått : 0710 

       
      HomeSeer trenger en referanse til Newtonsoft.Json.Dll, det kan du sette opp ved å lese under "Installasjon" i denne tråden: https://www.hjemmeautomasjon.no/forums/topic/4338-script-enturvb-få-inn-data-fra-entur/
       
      Takk Til: 
      Dette hadde jeg ikke klart alene.
       @Moskus skal ha en stor takk for sine delinger av script. Tatt utgangspunktet i hans NewsReader.VB
       @Marhil  Takk for tipset om Min renovasjons app eller hvordan jeg fant Gatenummer
      Og alle de andre som deler kode og eksempler åpnet på nett
       

    • Av Moskus
      Nyheter er viktig, og din bolig burde vite hva som skjer. HStouch kommer med en RSS-leser, men den støtter ikke norske tegn, og fungerer bare når den vil. Ettersom jeg ble lei av det, skrev jeg et lite script for å hente frem nyheter.
       
      NewsReader.vb
      Sub Main(ByVal parameters As Object) 'Moskus 2019 Dim devID As Integer = parameters.ToString.Split("|")(0) Dim url As String = "https://api.rss2json.com/v1/api.json?rss_url=" & System.Net.WebUtility.HtmlEncode(parameters.ToString.Split("|")(1)) Dim source As String = "" Try Using client As New System.Net.WebClient Net.ServicePointManager.SecurityProtocol = Net.SecurityProtocolType.Tls12 client.Encoding = System.Text.Encoding.UTF8 source = client.DownloadString(url) End Using Catch ex As Exception hs.WriteLog("NewsReader Error", "Net Feil: " & ex.Message) End Try If source = "" Then hs.WriteLog("NewsReader Error", "Got no response from url: " & url) Exit Sub End If Try Dim json = Newtonsoft.Json.JsonConvert.DeserializeObject(Of Object)(source) Dim output As String = "" For i As Integer = 0 To 4 output &= "• <b>" & json("items")(i)("title") & "</b><br>" output &= json("items")(i)("description") & "<br><br>" Next hs.SetDeviceString(devID, output, True) Catch ex As Exception hs.WriteLog("NewsReader Error", "Net Feil: " & ex.Message) End Try End Sub HomeSeer trenger en referanse til Newtonsoft.Json.Dll, det kan du sette opp ved å lese under "Installasjon" i denne tråden: https://www.hjemmeautomasjon.no/forums/topic/4338-script-enturvb-få-inn-data-fra-entur/
       
       
      Du trenger en virtuell device per nyhetskilde du vil ha. Ingen controller er viktig, velg "Status Only device" og "Do not log commands from this device".
       
      Så lager du et event. Det kan trigge hvert 15. minutt. Og så legger du til en kjøring av NewsReader.vb for hver nyhetskilde du ønsker deg. Parameter for scriptet er "DEV_ID|http://nyhetskilde.com/rss/", altså device ID, en "pipe" | og kilden. Huk av "Wait for script to finish" og "Only allow a single instance"
       

       
      Da blir resultatet dette:

       
      Her er noen nyhetskilder:
      https://www.aftenbladet.no/rss
      https://www.aftenposten.no/rss
      https://www.nrk.no/toppsaker.rss
      https://www.dagbladet.no/rss/
      https://www.vg.no/rss/feed/?categories=1068&limit=10&format=rss&private=1  - sjekk https://vg.no/rss for å sette opp din egen feed.
       
       
       
    • Av Moskus
      Tegneserier er gøy. Automatiske tegneserier er selvfølgelig enda gøyere. Tidligere var det bare å linke bildet på nettet, men VG ville gjøre det litt vanskeligere for oss. Men det lar seg ordne.
       
      Aller først trenger vi SP_ID'en din. Logg inn på VG (det holder med en gratis-konto), og trykk F12 (eller åpne Developer Console)
      Så finner du "Application" på menyen øverst, finner så cookies, og velger "www.vg.no". Dobbelttrykk på tekstfeltet etter "SP_ID" og kopier hele denne lange, uforståelige teksten til et sted.
       

       
       
       
      NB! Dette scriptet omfatter sletting av filer, og kan potensielt gå ad undas. Det er selvfølgelig testet en del av meg, men som alltid: Ta backup først!
       
      Scriptet er her:
      Tegneserie.vb
      Sub Main(ByVal input As Object) 'Moskus 2019 'Parametre: device_ID|Tegneserie 'Serie-alternativer: Pondus, Lunch, Hjalmar, Tegnehanne Dim devID As String = input.ToString.Split("|")(0) Dim serie As String = input.ToString.Split("|")(1) Dim deleteFiles As Boolean = True Dim SP_ID As String = "DIN_LANGE_SPID_STRENG_HER" Dim directoryName As String = hs.GetAppPath & "/html/images/Tegneserier/" 'Check if "Tegneserier" exits If (Not System.IO.Directory.Exists(directoryName)) Then System.IO.Directory.CreateDirectory(directoryName) 'Delete local files If deleteFiles Then For Each deleteFile As String In System.IO.Directory.GetFiles(directoryName, serie.ToLower & "*.*", System.IO.SearchOption.TopDirectoryOnly) System.IO.File.Delete(deleteFile) Next End If Dim remoteFile As String = "" Dim filename As String = serie.ToLower & "_" & Now.Date.ToString("yyMMdd") & ".jpg" Dim localFile As String = hs.GetAppPath & "/html/images/Tegneserier/" & filename Dim dateFormat As String = Now.Year & "-" & Now.Month.ToString("00") & "-" & Now.Day.ToString("00") Select Case serie.ToLower Case = "pondus" remoteFile = "https://www.vg.no/tegneserier/api/images/pondus/" & dateFormat Case = "lunch" remoteFile = "https://www.vg.no/tegneserier/api/images/lunch/" & dateFormat Case = "hjalmar" remoteFile = "https://www.vg.no/tegneserier/api/images/hjalmar/" & dateFormat Case = "tegnehanne" remoteFile = "https://www.vg.no/tegneserier/api/images/tegnehanne/" & dateFormat End Select If remoteFile <> "" Then Try Using client As New System.Net.WebClient Net.ServicePointManager.SecurityProtocol = Net.SecurityProtocolType.Tls12 client.Headers.Add(Net.HttpRequestHeader.Cookie, "SP_ID=" & SP_ID) client.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0") client.DownloadFile(remoteFile, localFile) client.Dispose() End Using Catch ex As Exception hs.WriteLog("Tegneserier", "Ex: " & ex.ToString) End Try Dim dateValue As Integer = CInt(Now.Date.ToString("yyMMdd")) hs.SetDeviceString(devID, "<img src='/images/HomeSeer/status/custom.gif' />", True) hs.SetDeviceString(devID, "<img src='./images/Tegneserier/" & filename & "' width='300px' />", False) hs.SetDeviceValueByRef(devID, dateValue, True) Else hs.WriteLog("Tegneserie", "RemoteFile ikke spesifisert for tegneserie: " & serie) End If End Sub Du legger inn SP_ID-strengen din istedenfor "DIN_LANGE_SPID_STRENG_HER".
       
      I tillegg må du lage en device pr. tegneserie du er interessert i. Som i nyhetsscriptet er dette en "Status Only" device.
       
      Så er det bare å sette opp eventet. Tegneseriene blir oppdatert kl. 08:00, så 08:15 er sikkert et bra tidspunkt. Kun ukedager og lørdager. Huk av "Wait for Script to finish" og "Only allow singe instance". Så repeter for hver tegneserie.
       
      Parameter er dev_ID|Tegneserie, f.eks. 3689|Pondus.

       

       
       
      ... som gir oss:

       
      Bredden er satt til 300px for at hele tegneserien skal dukke opp i Device Management, men dette er ikke en begrensning i f.eks. HStouch.
    • Av Guahtdim
      Problemet er som følger:
      Jeg overvåker fryser og ønsker å sende en melding i god tid før den har nådd 0 grader. Etter å ha opplevd ett par ganger at fryseren er blitt lukket, men ikke tett med tilsvarende dårlig kjøling så ønsker jeg å kunne varsle meg selv når man er på vei mot 0 grader ett stykke før den har nådd f.eks. -3 grader. 
       
      Nå overvåker jeg kun på overstigning av -3 grader, men dette har en tendens å inntreffe lenge etter at jeg har dratt inn til jobb og siden jeg er pendler ett greit stykke (Moss - Oslo) så er det ikke å stikke fra jobben for å sjekke/lukke fryseren.
       
      Finnes det noe plugin eller script for å se om temperaturen er på vei opp utenom de vanlige "bølgene" som oppstår mellom hver gang kompressoren slår inn? Eller er dette noe man må "snekre" selv?
×
×
  • Opprett ny...