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

"Iterere" device statuser


ZoRaC

Anbefalte innlegg

Har en VD for søppeltømming. Value=1 viser inneværende uke, value=2 viser neste uke og value=3 viser om 2 uker. 

 

I HSTouch vil jeg vise inneværende uke, men ha en knapp for å "bla" gjennom ukene. Dvs i praksis endre status med +1 og ved value=3 sette den til 1. 

 

Må vel bruke hs.devicevalue("tommeplan") for å hente nåværende verdi og hs.setdevicevalue("tommeplan", nyValue) for å oppdatere, men er litt fersk i dette språket, så litt usikker på hvordan bygge opp scriptet. Også usikker på hvordan jeg kjører scriptet i HSTouch... Noen som kan hjelpe meg? :) 

Lenke til kommentar
Del på andre sider

Klart dette er mulig å få til! Men det er litt jobb (spesielt hvis du skal gjøre det litt kult), så vi begynner med en liten runde avklaringsspørsmål:

- Når du oppdaterer devicevalue skal du da oppdatere søppeltømmingen også?

- I så fall: Hvordan gjøres det?

 

... ellers hadde jeg ikke forkortet "virtual device" med VD fordi det oftest har en annen betydning... ;)

Lenke til kommentar
Del på andre sider

10 timer siden, Moskus skrev:

Klart dette er mulig å få til! Men det er litt jobb (spesielt hvis du skal gjøre det litt kult), så vi begynner med en liten runde avklaringsspørsmål:

- Når du oppdaterer devicevalue skal du da oppdatere søppeltømmingen også?

- I så fall: Hvordan gjøres det?

 

Vet ikke om jeg helt skjønte spørsmålet, så skal heller prøve å forklare hva jeg har gjort (så kanskje svaret ligger i forklaringen :P). 

 

Har et bash-script som trigges av en event natt til mandag. Den tar screenshot av tømmeplanen og lagrer 3 bilder i HS-mappa: trv-1.png, trv-2.png og trv-3.png. Så har jeg laget en virtual device med 3 statuser som er koblet mot hvert sitt bilde. Hele hensikten med devicen er å vise statusbilde på HSTouch, så den skal ikke brukes til å trigge noe event og det spiller ingen rolle hvilken status den er satt til. 

 

Vet ikke om det svarte på det du lurte på?

 

10 timer siden, Moskus skrev:

... ellers hadde jeg ikke forkortet "virtual device" med VD fordi det oftest har en annen betydning... ;)

 

Hmm, jeg tror vi ferdes på forskjellig deler av Internett, for de nettstedene jeg besøker har aldri brukt den forkortelsen ;) 

Lenke til kommentar
Del på andre sider

 

23 minutter siden, ZoRaC skrev:

Har et bash-script som trigges av en event natt til mandag. Den tar screenshot av tømmeplanen og lagrer 3 bilder i HS-mappa: trv-1.png, trv-2.png og trv-3.png. Så har jeg laget en virtual device med 3 statuser som er koblet mot hvert sitt bilde. Hele hensikten med devicen er å vise statusbilde på HSTouch, så den skal ikke brukes til å trigge noe event og det spiller ingen rolle hvilken status den er satt til. 

Aha, dette burde vi kunne løse greit. :)

Skal rote litt i scripts mappa mi og finne det som ligner mest, slik at omskrivingen blir minst. ;)

 

Jeg tenker som følger:

- Devicen lagrer tallet 1, 2 eller 3 (i DeviceValue)

- Legger til to knapper for å bla opp eller ned.

- Knappene trekker fra eller legger til 1 til den gjeldene verdi, men setter maks 3 og min 1. (Da kan vi også velge om hvis verdien er 3 og man trykker på "+" om verdien skal settes til 1 ("wrappe rundt") eller om den skal forbli 3. Samme for "-".)

- Når en knapp trykkes, oppdateres verdien ihht regimet over, og device'n kan oppdater DeviceString til å vise bildet over.

 

 

24 minutter siden, ZoRaC skrev:

Hmm, jeg tror vi ferdes på forskjellig deler av Internett, for de nettstedene jeg besøker har aldri brukt den forkortelsen ;)

Tror ikke jeg hadde brukt den forkortelsen på engelsk i noen deler av internett, og ferdig med det. Friends klarte jo å få forkortelsen kjent i ikke-engelskspråklige land også for 90-talls ungdommen.

 

Dessuten gir det ikke noe mer informasjon å bruke begrepet "virtuell device" istedenfor bare "device". ;) 

Lenke til kommentar
Del på andre sider

6 minutter siden, Moskus skrev:

Aha, dette burde vi kunne løse greit. :)

Skal rote litt i scripts mappa mi og finne det som ligner mest, slik at omskrivingen blir minst. ;)

 

Jeg tenker som følger:

- Devicen lagrer tallet 1, 2 eller 3 (i DeviceValue)

- Legger til to knapper for å bla opp eller ned.

- Knappene trekker fra eller legger til 1 til den gjeldene verdi, men setter maks 3 og min 1. (Da kan vi også velge om hvis verdien er 3 og man trykker på "+" om verdien skal settes til 1 ("wrappe rundt") eller om den skal forbli 3. Samme for "-".)

- Når en knapp trykkes, oppdateres verdien ihht regimet over, og device'n kan oppdater DeviceString til å vise bildet over.

Høres ut som akkurat det jeg er på jakt etter! :D 

Jeg tror ikke det er det mest kompliserte scriptet, men er fersk i både HS og med VB.NET, så da blir til og med små enkle ting litt vrien...

 

7 minutter siden, Moskus skrev:

Tror ikke jeg hadde brukt den forkortelsen på engelsk i noen deler av internett, og ferdig med det. Friends klarte jo å få forkortelsen kjent i ikke-engelskspråklige land også for 90-talls ungdommen.

Jeg var jo midt i målgruppen og en stor fan av Friends, men akkurat dette husket jeg faktisk ikke. Mulig jeg ikke festet meg så godt med forkortelsen den gangen og bare fulgte med på tekstingen :P

 

9 minutter siden, Moskus skrev:

Dessuten gir det ikke noe mer informasjon å bruke begrepet "virtuell device" istedenfor bare "device". ;) 

Device KAN jo bety en fysisk enhet da, men i denne settingen så er det kanskje ikke så sannsynlig at jeg snakker om en device som tømmer søppla for meg...så du har et poeng. :) 

Lenke til kommentar
Del på andre sider

43 minutter siden, ZoRaC skrev:

Jeg tror ikke det er det mest kompliserte scriptet, men er fersk i både HS og med VB.NET, så da blir til og med små enkle ting litt vrien...

Det er enkelt å lage et script som oppdaterer bildet på en device. Det som krever litt mer knote-kode er knappen, men det er også det som gjør det stilig... ;) 

Lenke til kommentar
Del på andre sider

10 minutter siden, Hilmar skrev:

Har noen sniffet seg fram til APIet til «Min renovasjon»-appen? Hadde vært greit å laste ned tømmeplanen der...

Kikket på appen nå, men ser ut til at den ikke støtter så mange kommuner? Hvis din kommune har en webbasert tømmeplan, så kan det hende du kan gjøre som meg (se "hva har du gjort i dag"-tråden for beskrivelse). 

Lenke til kommentar
Del på andre sider

Jepp, fant webbasert plan etter litt graving på mobilwebben til folloren.no. Skal sjekke mer når jeg kommer hjem til ordentlig browser. Har lyst til å ta vare på datoverdiene for å enkelt lage varsler, så håper på en JSON service eller lignende i bakgrunnen.

Sent fra min H60-L04 via Tapatalk

Lenke til kommentar
Del på andre sider

Folloren bruker en JSON webservice levert av Norkart for å servere hentedatoer for avfall og papir. Det ser ut som at den dekker hele landet, men alle kommuner har sikkert ikke tatt den i bruk.

 

Det er tydelig at de ikke vil at den skal brukes utenfor de designerte websidene, men med litt fikling med HTTP-headers så går det greit å laste ned data fra den.

 

 

Lenke til kommentar
Del på andre sider

1 time siden, Hilmar skrev:

Folloren bruker en JSON webservice levert av Norkart for å servere hentedatoer for avfall og papir. Det ser ut som at den dekker hele landet, men alle kommuner har sikkert ikke tatt den i bruk.

... har du en link?

Lenke til kommentar
Del på andre sider

Jeg kjørte søket først fra folloren.no sine sider:

http://www.folloren.no/toemmedager-og-sortering-av-avfall.342505.no.html

 

Deretter brukte jeg "Utviklerverktøy" i Firefox for å se på kommunikasjonen i et virkelig søk (huset mitt)

 

Så klippet jeg ut headeren fra AJAX-kallet fra nettside-søket inn i headeren til det direkte tjenestekallet (kunne sikkert prøvd meg fram, men var lat :)). Bl.a er det en application key og et kommunenummer som jeg tipper må med. Mulig også Referer og Kommunenr, selv om den også er med i query-stringen.

 

Gatekode ser ut til å referere til vegnummerdelen i vegrefereransen til gata di. Altså kun vegnummer uten RV, FV, eller KV foran. Du kan finne ditt vegnummer i vegkartet/NVDB i SVVs karttjeneste her:

https://www.vegvesen.no/vegkart

 

URLen til tømme-tjenesten blir da følgende følgende:

https://komteksky.norkart.no/komtek.renovasjonwebapi/api/tommekalender/?kommunenr=[DITTKOMMUNENR]&gatenavn=[GATENAVNETDITTHER]&gatekode=[DITTVEGNUMMERHER]&husnr=24B

 

Request-header som fungerte:

Host: komteksky.norkart.no
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: nb-NO,nb;q=0.9,no-NO;q=0.8,no;q=0.6,nn-NO;q=0.5,nn;q=0.4,en-US;q=0.3,en;q=0.1
Accept-Encoding: gzip, deflate, br
Kommunenr: 217
RenovasjonAppKey: AE13DEEC-804F-4615-A74E-B4FAC11F0A30
Content-Type: application/json; charset=UTF-8;
Referer: https://komteksky.norkart.no/komtek.renovasjonwebapi/api/tommekalender/?kommunenr=217&gatenavn=[DITTGATENAVNHER] &gatekode=[DINGATEKODE]&husnr=24B
Connection: keep-alive

 

Edit: glemte resultatet...

 

[{"FraksjonId":1,"Tommedatoer":["2016-08-24T00:00:00","2016-09-07T00:00:00"]},

{"FraksjonId":2,"Tommedatoer":["2016-09-14T00:00:00","2016-10-13T00:00:00"]},

{"FraksjonId":7,"Tommedatoer":["2016-09-14T00:00:00","2016-10-13T00:00:00"]}]

 

Henholdsvis tømming av restavfall (fraksjonsid 1) og tømming av papir og plast

Endret av Hilmar
  • Like 1
Lenke til kommentar
Del på andre sider

  • 1 år senere...
På 15.8.2016 den 19.36, Hilmar skrev:

Jeg kjørte søket først fra folloren.no sine sider:

http://www.folloren.no/toemmedager-og-sortering-av-avfall.342505.no.html

 

Deretter brukte jeg "Utviklerverktøy" i Firefox for å se på kommunikasjonen i et virkelig søk (huset mitt)

 

Så klippet jeg ut headeren fra AJAX-kallet fra nettside-søket inn i headeren til det direkte tjenestekallet (kunne sikkert prøvd meg fram, men var lat :)). Bl.a er det en application key og et kommunenummer som jeg tipper må med. Mulig også Referer og Kommunenr, selv om den også er med i query-stringen.

 

Gatekode ser ut til å referere til vegnummerdelen i vegrefereransen til gata di. Altså kun vegnummer uten RV, FV, eller KV foran. Du kan finne ditt vegnummer i vegkartet/NVDB i SVVs karttjeneste her:

https://www.vegvesen.no/vegkart

 

URLen til tømme-tjenesten blir da følgende følgende:

https://komteksky.norkart.no/komtek.renovasjonwebapi/api/tommekalender/?kommunenr=[DITTKOMMUNENR]&gatenavn=[GATENAVNETDITTHER]&gatekode=[DITTVEGNUMMERHER]&husnr=24B

 

Request-header som fungerte:

Host: komteksky.norkart.no
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: nb-NO,nb;q=0.9,no-NO;q=0.8,no;q=0.6,nn-NO;q=0.5,nn;q=0.4,en-US;q=0.3,en;q=0.1
Accept-Encoding: gzip, deflate, br
Kommunenr: 217
RenovasjonAppKey: AE13DEEC-804F-4615-A74E-B4FAC11F0A30
Content-Type: application/json; charset=UTF-8;
Referer: https://komteksky.norkart.no/komtek.renovasjonwebapi/api/tommekalender/?kommunenr=217&gatenavn=[DITTGATENAVNHER] &gatekode=[DINGATEKODE]&husnr=24B
Connection: keep-alive

 

Edit: glemte resultatet...

 

[{"FraksjonId":1,"Tommedatoer":["2016-08-24T00:00:00","2016-09-07T00:00:00"]},

{"FraksjonId":2,"Tommedatoer":["2016-09-14T00:00:00","2016-10-13T00:00:00"]},

{"FraksjonId":7,"Tommedatoer":["2016-09-14T00:00:00","2016-10-13T00:00:00"]}]

 

Henholdsvis tømming av restavfall (fraksjonsid 1) og tømming av papir og plast

 

Er det noen som har laget et script e.l som faktisk får disse tømmedatoene tilgjengelig i HomeSeer? Ønsker å lage varsler om tømming av søpla, men har dessverre ikke nok greie på programmering til at jeg kommer meg noe videre med denne informasjonen...  Tror jeg skal komme meg i mål hvis noen har et script som bare henter ut de tilgjengelige datoene for restavfall, papir&plast osv..?

  • Like 1
Lenke til kommentar
Del på andre sider

  • 1 år senere...
On 15/08/2016 at 19:36, Hilmar said:

Jeg kjørte søket først fra folloren.no sine sider:

http://www.folloren.no/toemmedager-og-sortering-av-avfall.342505.no.html

 

Deretter brukte jeg "Utviklerverktøy" i Firefox for å se på kommunikasjonen i et virkelig søk (huset mitt)

 

Så klippet jeg ut headeren fra AJAX-kallet fra nettside-søket inn i headeren til det direkte tjenestekallet (kunne sikkert prøvd meg fram, men var lat :)). Bl.a er det en application key og et kommunenummer som jeg tipper må med. Mulig også Referer og Kommunenr, selv om den også er med i query-stringen.

 

Gatekode ser ut til å referere til vegnummerdelen i vegrefereransen til gata di. Altså kun vegnummer uten RV, FV, eller KV foran. Du kan finne ditt vegnummer i vegkartet/NVDB i SVVs karttjeneste her:

https://www.vegvesen.no/vegkart

 

URLen til tømme-tjenesten blir da følgende følgende:

https://komteksky.norkart.no/komtek.renovasjonwebapi/api/tommekalender/?kommunenr=[DITTKOMMUNENR]&gatenavn=[GATENAVNETDITTHER]&gatekode=[DITTVEGNUMMERHER]&husnr=24B

 

Request-header som fungerte:

Host: komteksky.norkart.no
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: nb-NO,nb;q=0.9,no-NO;q=0.8,no;q=0.6,nn-NO;q=0.5,nn;q=0.4,en-US;q=0.3,en;q=0.1
Accept-Encoding: gzip, deflate, br
Kommunenr: 217
RenovasjonAppKey: AE13DEEC-804F-4615-A74E-B4FAC11F0A30
Content-Type: application/json; charset=UTF-8;
Referer: https://komteksky.norkart.no/komtek.renovasjonwebapi/api/tommekalender/?kommunenr=217&gatenavn=[DITTGATENAVNHER] &gatekode=[DINGATEKODE]&husnr=24B
Connection: keep-alive

 

Edit: glemte resultatet...

 

[{"FraksjonId":1,"Tommedatoer":["2016-08-24T00:00:00","2016-09-07T00:00:00"]},

{"FraksjonId":2,"Tommedatoer":["2016-09-14T00:00:00","2016-10-13T00:00:00"]},

{"FraksjonId":7,"Tommedatoer":["2016-09-14T00:00:00","2016-10-13T00:00:00"]}]

 

Henholdsvis tømming av restavfall (fraksjonsid 1) og tømming av papir og plast

Hei, 

Vriker dette enda ? 

 

Lenke til kommentar
Del på andre sider

  • 6 måneder senere...
2 minutes ago, Moskus said:

Tror du må minne oss på hva "dette" er og hvordan det ser ut... ;) 

he he. Kan jo det :D

 

Min Renovasjon bruker also et RestAPI. Testet I Chrome: 

 

GET /komtek.renovasjonwebapi/api/tommekalender/?kommunenr=0710&gatenavn=bl%C3%A5b%C3%A6rveien&gatekode=45024&husnr=16 HTTP/1.1
Kommunenr: 0710
RenovasjonAppKey: AE13DEEC-804F-4615-A74E-B4FAC11F0A30
Host: komteksky.norkart.no
 
Da får jeg : 
[
    {
        "FraksjonId": 2,
        "Tommedatoer": [
            "2019-10-14T00:00:00",
            "2019-11-04T00:00:00"
        ]
    },
    {
        "FraksjonId": 3,
        "Tommedatoer": [
            "2019-10-14T00:00:00",
            "2019-10-21T00:00:00"
        ]
    },
    {
        "FraksjonId": 4,
        "Tommedatoer": [
            "2019-10-21T00:00:00",
            "2019-12-02T00:00:00"
        ]
    },
    {
        "FraksjonId": 7,
        "Tommedatoer": [
            "2019-10-21T00:00:00",
            "2019-11-11T00:00:00"
        ]
    },
    {
        "FraksjonId": 1,
        "Tommedatoer": [
            "2019-10-28T00:00:00",
            "2019-11-18T00:00:00"
        ]
    }
]
 
 
Spørsmålet var; Hvordan får jeg denne informasjonene inn i Homeseer ? 
 

 

 

Lenke til kommentar
Del på andre sider

Det beste "sparket" i riktig retning tror jeg er her: 

Du kan begynne med å hardkode deviceREf til det nummeret du har fått for en virtuell device, og så endre url'en i neste linje (bare erstatt hele greia).

 

Selve "tolkningen" av JSON-strengen skjer her:

            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

... det som står her er at det lages først et JSON-objekt, og deretter ser jeg etter "items" med index 0 til 4 (altså totalt 5), og henter ut "title" og "description".

 

Lenke til kommentar
Del på andre sider

On 08/10/2019 at 15:51, Moskus said:

... det som står her er at det lages først et JSON-objekt, og deretter ser jeg etter "items" med index 0 til 4 (altså totalt 5), og henter ut "title" og "description".

Da er jeg igang. Får denne tilbake

Da har jeg dette script: 

Sub Main(ByVal parameters As Object)
        'Moskus 2019
        Dim devID As Integer = parameters.ToString.Split("|")(0)
        Dim url As String = "https://komteksky.norkart.no/komtek.renovasjonwebapi/api/tommekalender/?kommunenr=0710&gatenavn=bl%C3%A5b%C3%A6rveien&gatekode=45024&husnr=16"

        Dim source As String = ""
        Try
            Using client As New System.Net.WebClient
                'Sette Headers 
		client.headers.set("Kommunenr", "0710")
		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
            hs.WriteLog("Soppel debug", source )
            Dim json = Newtonsoft.Json.JsonConvert.DeserializeObject(Of Object)(source)
            '
            Dim output As String = ""
            For i As Integer = 1 To 4
                output &= "• <b>" & json("")(i)("Tommedatoer") & "</b><br>"
                dim temp as string = output
                hs.WriteLog("Soppel debug", temp)
                output &= json("FraksjonId")(i)("Tommedatoer") & "<br><br>"
            Next

            hs.SetDeviceString(devID, output, True)
        Catch ex As Exception
            hs.WriteLog("Soppel Error", "Net Feil: " & ex.Message)
        End Try
    End Sub

 

Får i loggen : 

okt-14 00:35:02 Soppel ErrorNet Feil: Accessed JArray values with invalid key value: "". Int32 array index expected.

okt-14 00:35:02 Soppel debug[{"FraksjonId":2,"Tommedatoer":["2019-10-14T00:00:00","2019-11-04T00:00:00"]},{"FraksjonId":3,"Tommedatoer":["2019-10-14T00:00:00","2019-10-21T00:00:00"]},{"FraksjonId":4,"Tommedatoer":["2019-10-21T00:00:00","2019-12-02T00:00:00"]},{"FraksjonId":7,"Tommedatoer":["2019-10-21T00:00:00","2019-11-11T00:00:00"]},{"FraksjonId":1,"Tommedatoer":["2019-10-28T00:00:00","2019-11-18T00:00:00"]}]

 

Ser ut som Get på rest API er OK. Men tolkningen av Json som kommer tilbake ikke er riktig. Trenger et nytt spark eller tips for å komme videre :)

Lenke til kommentar
Del på andre sider

3 minutes ago, Moskus said:

Dette:


json("FraksjonId")(i)("Tommedatoer")

gir også en "array". Prøv med:


json("FraksjonId")(i)("Tommedatoer")(0)

 

Forsatt Net Feil: Accessed JArray values with invalid key value: "FraksjonId". Int32 array index expected.

Noen flere tips ?  

Lenke til kommentar
Del på andre sider

Bli med i samtalen

Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.

Gjest
Skriv svar til emnet...

×   Du har limt inn tekst med formatering.   Lim inn uten formatering i stedet

  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.

×
×
  • 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.