Gå til innhold
  • Bli medlem
ZoRaC

SCRIPT: Flaggdag.vb - sjekk om dagen i dag er flaggdag

Anbefalte innlegg


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:

image.png.575e9a8cf886fc6dfa0d006ee78c27a6.png

(parameters er devID til devicen du laget)

 

Påminnelse om å flagge:

image.png.66ae8562436989098cfc1d500fa370f1.png

(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:
image.png.826789c01ea7df4cec488241a53e9736.png
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. :) 

  • Like 4

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 Guahtdim
      Dette er en enkel plugin som kun brukes som condition i en event. 
       
       
      Kun testet i Windows
       
      Plugin kan lastes ned her
      HSPI_DataCurveSeer versjon 0.0.0.4
       
       
       
      VIKTIG!!! Stopp Homeseer og ta en kopi av hele katalogen til Homeseer (normalt "c:\program files (x86)\Homeseer HS3" for Windows) og legg kopien på ett trygt sted i tilfelle du trenger å gå tilbake. Pakk ut filen i din Homeseer katalog - pass på at du får følgende oppsett (katalogen "Homeseer HS3" skal inneholde 2 nye filer HSPI_DataCurveSeer.exe og HSPI_DataCurveSeer.exe.config, i katalogen Homeseer HS3\bin skal ha fått en ny underkatalog - DataCurveSeer - med 24 filer og i katalogen html\images skal du ha fått underkatalogen DataCurveSeer med 2 filer)   Restart Homeseer Gå inn på Homeseer->Plugins->Manage og trykk enable på DataCurveSeer  
       
      Plugin gir deg 2 valg når du lager events:

      Her prøver man ut fra enheten man har satt til å overvåke å predikere om man vil gå over en gitt verdi i løpet av en gitt periode hvis stiging/senkning fortsetter slik det har gjort. 
       
       

      Her vil man trigge hvis man har passert gitt grenseverdi og kurven man har er stigende eller synkende
       
      Ansvarsfraskrivelse:
      Laste ned og bruke plugin gjøres på eget ansvar. Skulle jeg ødelegge Homeseer oppsettet ditt så kan jeg desverre ikke hjelpe deg.
    • Av Blodstrupmoen
      Min Fibaro universal sensor begynte i går å sende masse gjentakende rapporteringer på z-wave nettverket mitt slik at kontrolleren knelte. Etter en restart av noden har den fortsatt og sende doble postinger av alle rapporteringer. Er det noen som har opplevd det samme, og her en løsning på dette?

    • Av Guahtdim
      RfLinkSeer er en plugin for å støtte RfLink (hardware) et alternativ til RfxTrx. Dette er hardware man selv kan sette sammen eventuelt bestille på nett (se under RFLink gateway).
       
      OBS OBS OBS
      Dette er i Alfa(nivået før beta, som igjen er nivået før man faktisk sier man har en versjon man er fornøyd med) og ser ut deretter Kun testet i windows.   
      Hva som er støttet så langt:
      "Lytting" til det som skjer (plugin er i hovedsak laget for å håndtere mine prologue tempmålere). Mulighet til å legge enheter inn i Homeseer  Mulighet for å sende kommandoene ON/OFF/ALLON/ALLOFF.  
      Testet med:
      433Mhz brannvarsler (Kjell.com Konig SAS-SA200)- tar imot signal og kan også trigge denne (testet uten familien i hus) 433MHz fjernstrømbrytere (Håndterer ON/OFF/ALLON/ALLOFF)  
      Hva som kommer til å skje videre:
      Gjøre ting penere i GUI Begynne å se på å sende kommandoer for de enheter som kan motta kommandoer Stabilitet når man mister kontakten med en RfLink enhet over tcp/ip Fange opp om en kommando kom seg over ok til RfLink  
      *** Link til siste versjon: RfLinkSeer_V_0481  ***
       
      Hva gjør jeg for å installere?
      VIKTIG!!! Stopp Homeseer og ta en kopi av hele katalogen til Homeseer (normalt c:\program files (x86)\Homeseer HS3) og legg kopien på ett trygt sted i tilfelle du trenger å gå tilbake. Pakk ut filen i din Homeseer katalog - pass på at du får følgende oppsett (katalogen "Homeseer HS3" skal inneholde 2 nye filer HSPI_RfLinkSeer.exe og HSPI_RfLinkSeer.exe.config, mens du i katalogen Homeseer HS3\bin skal ha fått en ny underkatalog - RfLinkseer - med 17 filer) og under Html\images katalogen skal du ha fått en RfLinkSeer katalog 3 underkataloger og diverse bilde filer (totalt 49 bildefiler under RfLinkSeer og tilhørende underkataloger)  Restart Homeseer Gå inn på Homeseer->Plugins->Manage og trykk enable på RFLinkSeer  
      Brukermanual:

      Hvis du kobler til RFLink direkte så må du sette opp korrekt Com-port. Dette gjøres under Plugins->RfLinkSeer->Comport config. Velg fra dropdown og trykk på knappen "Add comport"
       

      Hvis du har koblet RFLink vha RasberryPi og ser2net så må du inn på TcpIp config. Tast inn ip, port og trykk "Add Tcp/Ip address".
       

      I begge tilfeller skal man se noe i løpet av 5-30 sekunder hvis man går inn på Plugins->RfLinkSeer->Found Units.
       

      Ser du ikke noe så gå inn på General config og sett logging til debug. Går du i logvinduet så skal du se en masse med RfLinkSeer meldinger. Hvis alt går bra ser du også noen av typen "received 20;12;....". Hvis du får en haug med feilmeldinger om reconnect etc så er det mulig at du har satt opp comport eller tcpip feil.
       

      For å velge enheter så går du til siden Plugins->RfLinkSeer->Found Units. Vent i 5-10 sekunder så skal det komme opp en tabell med enheter som den finner. Trykk på knappen Add for den/de enhetene som du ønsker å legge inn i Homeseer.
       

      For å endre kommandoport eller protokoll og enhetsId går man inn og konfigurerer enheten (trykker på navnet til enheten i oversikten). Man skal under fanen RfLinkSeer ha en eller 2 dropdowns. Den ene velger kommandoport (det man har konfigurert under com og/eller tcp/ip).
      Den andre porten velger enhet som man skal ta protokoll og enhetsid fra. I tillegg til at man viser protokoll og enhetsid så viser jeg også sist mottatte data slik at det skal bli enklere å velge (noe jeg savner i RfxCom plugin).
       
      Plugin støtter å kjøre mer enn en kilde. Hjemme kjører jeg to enheter (433MHz og 868Mhz) over tcpip og det ser ut til å gå greit. Jeg antar at man også kan kjøre ett par comporter også samtidig, men har ikke fått testet så mye på det.
       
      Mer info vil komme etterhvert som jeg får mer tid til å "pusse" på koden.

       
      Ansvarsfraskrivelse:
      Laste ned og bruke plugin gjøres på eget ansvar. Skulle jeg ødelegge Homeseer oppsettet ditt så kan jeg desverre ikke hjelpe deg.
       
      Endringer
      0.4.8.1 - Fikset en feil i grafikk for temperatur mellom 21 og 26 (stoppet på 24) 0.4.8.0 - Fikset en feil i håndtering av kommandoer som ble introdusert i 0.4.7.4 0.4.7.4 - Fikset manglende link mellom child og parent devices.  
       
      Endringer i Alpha4 (2018-06-08)
      * Kommandoene On, Off, AllOn, AllOff, Set_level kan nå bli sendt fra RfLinkSeer til RfLink (som igjen sender det ut til enhetene)
      * Mulighet for å endre porten som enheten skal sende kommandoer over. (ligger i RFLinkSeer-fanen når man configurerer eksisterende enhet i HomeSeer)
      * Mulighet til å endre enhetens protokoll og adresse til en funnet enhet som ikke er i HomeSeer, men funnet av RfLink. Dette gjør det enklere å hente inn enheter som endrer seg etter batteribytte. (ligger i RFLinkSeer-fanen når man configurerer eksisterende enhet i HomeSeer)
       
      Endringer i Alpha3 (2018-03-28)
      * Alle enheter skal nå ha ikon
      * Lagt til knapp for å manuelt slå av røykvarlser i Homeseer (den sender IKKE ut til brannvarslerne)
      * Fikset opp i oversikt over enheter slik at man
      Fjerne fra Homeseer devicer Oppdatere med nye ikon hvis man har en enhet installert fra før, men uten korrekt ikon * Mulighet til å endre hvor lenge man tar var på enheter som har gitt signal i oversikt over enheter som er funnet, men som ikke er lagt til i Homeseer
      * I oversikt er det nå enklere å se hvilke enheter som man har lagt til i Homeseer
       
      Endringer i Alpha2 (2018-02-22)
      * Bedre håndtering av On/Off kommandoer fra enheter
      * Unitconfig har fått en skikkelig overhaling og har nå følgende:
      Mulighet for søk Sortering Enkelt å legge til en ny enhet  
      Kjente feil
      Krangler med Arduinoplugin hvis du bruker com port både på RfLinkSeer og Arduino plugin. Uvist hvordan dette skal løses siden jeg har lagt opp til at man skal kunne bruke mer enn en comport samtidig. Den antar at alle kommandoer som sendes går ok. Jeg har desverre ikke implementert noen sjekk på returen jeg får fra RfLink når jeg sender en kommando. Mye logging til console som ikke er fjernet, men dette vil du kun se om du kjører plugins i developer mode. "Testing testing"-teksten i config siden jeg først tenkte over den da jeg oppdaterte disse sidene.  
       
       
       
    • Av BME
      Tenkte å hente inn frist for neste EU-kontroll på bilen i HomeSeer. Da vil jeg også kunne sette opp eventer/varsler på dette.
      URL: https://www.vegvesen.no/kjoretoy/Eie+og+vedlikeholde/kjoretoyopplysninger?registreringsnummer=BT23537 (tilfeldig reg.nr)
       
      Har forsøkt å bruke Jon00 DataScraper til dette, men det fungerer ikke helt.
      Ut fra det jeg fant på HS-forum, kan det tyde på at det er fordi datoene faktisk hentes med JavaScript og ikke ved pageload.
       
      Er det noen andre som har fått til å hente dette?
    • Av Guahtdim
      Dette er en trigger plugin basert på det som gjøres i tråden til @ZoRaC 
       
       
       
      Triggeren brukes i eventer mot google kalender. Følgende må oppfylles: Man starter på/er inne i kalendermøtet/event/registreringen (fra nå av CalendarEvent) og kalender teksten (Summary text) er enten lik, starter med, inneholder en tekst som man setter opp. Eventuelt så bryr man seg ikke om teksten, men bare at det er en kalender event. (4 forskjellige valg som kan gjøres når man legger inn triggeren). Man kan søke i mer enn en kalender.
      Man kan også legge inn flere søkeord skilt med || (eller) eller && (og) slik at en trigger kan håndtere flere forskjellige ord. I noen av triggerne vil ikke det å skille med && (og) gi noen treff siden f.eks. matching exactly på ett søk hvor man har brukt && (og) ikke vil treffe noen gang. 
       
      En trigger slår til minst en gang, som oftest mange ganger etter hverandre! Jeg anbefaler at man derfor setter opp f.eks en device å sjekke mot slik at man unngår å trigge f.eks hvert tiende sekund i løpet av en halvtime når det skjer en event. Jeg setter opp events slik at de i tillegg til å bli trigget av triggere også sjekker mot device som den skal styre.
      Eks:

      Her er det triggeren som starter det hele, men den vil kun slå til hvis device "Unknown Unknown Events" er av (off). Da vil device settes til på (on).
       
       
      OBS OBS OBS
      Dette er i Alfa(nivået før beta, som igjen er nivået før man faktisk sier man har en versjon man er fornøyd med) og ser ut deretter Testet ok i Windows.   
      For nå er linken til siste versjon 
      GCalSeer_V0039
       
      Hvordan sette opp :
      VIKTIG!!! Stopp Homeseer og ta en kopi av hele katalogen til Homeseer (normalt "c:\program files (x86)\Homeseer HS3" for Windows) og legg kopien på ett trygt sted i tilfelle du trenger å gå tilbake. Pakk ut filen i din Homeseer katalog - pass på at du får følgende oppsett (katalogen "Homeseer HS3" skal inneholde 2 nye filer HSPI_GCalSeer.exe og HSPI_GCalSeer.exe.config, mens du i katalogen Homeseer HS3\bin skal ha fått en ny underkatalog - GCalSeer - med 30 filer)   Restart Homeseer Gå inn på Homeseer->Plugins->Manage og trykk enable på GCalSeer  
      Oppsett av Google kalender
       
      Oppsett av kobling mot Hotmail/Outlook live
       
      Du er nå klar for å sette opp en trigger 
       
      Ved hjelp av script: Mulighet til å lage en device som lister opp alle kalenderhendelser x dager framover :
       
      Ansvarsfraskrivelse:
      Laste ned og bruke plugin gjøres på eget ansvar. Skulle jeg ødelegge Homeseer oppsettet ditt så kan jeg desverre ikke hjelpe deg.
       
      Planlagte utvidelser/ønskeliste
      Mulighet for å liste ut hendelser fra flere kalendere samtidig vha script.  Mulighet til å legge inn device som viser X nærmeste hendelser fra utvalgte kalendere eller for en gitt tidsperiode fra tidspunktet man er i (planlagt utvidelse) Mulighet for Regex/Wildcards i søketekst (ønske) Bedre kontroll på kobling mot Google slik at refreshtoken blir prøvd brukt hvis man har passert utløp på accesstoken Egen device for å vise status med tanke på autorisasjon Mulighet til å sette opp en trigger til å slå til på offsets Mulighet for å trigge på hendelser innenfor en dag, uke, måned, frem i tid Mulighet for å hente inn kalender events fra MS Outlook (antageligvis kun for de som kjører HS i Windows OS) Eget scriptkall for å hente events fra en eller flere kalendere - ref https://forums.homeseer.com/forum/ultilities-plug-ins/utilities-discussion/blgdata-blade/87199-event-listing-in-a-hs-device  
      Kjente feil:
      Mulig å sette tid mellom hver sjekk lenger enn hva en autorisering gjelder (3600 sekunder) For mye logging Autorisering mot google fungerer ikke i Linux - under arbeid.  
      Endringer:
      0.0.3.9 - Fikset en bug ved at offset ble brukt i during-valg selv om det ikke var mulig å endre i eventet. Takk til @JohnMartin
      0.0.3.7 - Fikset en bug i hvordan det blir hentet kalender events fra Google når man skal bruke scripmulighetene. Takk til @JohnMartin
      0.0.3.6 - Fikset en bug i håndtering av all day events. All day events overskred dagen(e) de var lagt til og ble slik med en dag mer enn de skulle (en dag i etterkant). Takk til @JohnMartin
      0.0.3.5 - Fikset en bug i offset after. Trigging av event skjedde ikke selv om alle eventer sluttet samtidig. Takk til @toonwolf
      0.0.3.4 - Filtrerer nå bort kalenderhendelser som ligger i andre kalendere enn det man har satt til gyldig for trigger (enkelte av oss kjører med mer enn en kalendere og triggere som kun går på noen av disse). Takk til @toonwolf for bra bug rapport igjen.
      0.0.3.3 - Håndterer nå at en kalenderhendelse er uten subject/summary/overskrift. Både Google og Microsoft leverer NULL tilbake når dette feltet er tomt. Det fungerte dårlig. Takk til @toonwolf for bug rapport.
      0.0.3.2 - Fikset opp i hvordan kalender hendelser hentes fra Microsoft. Henter nå de 100 første innenfor gitt tidsrom.
      0.0.3.1 - Fjernet 2 config sider som ikke fungerer. Lagt inn støtte for GetItemsFromMsCalendar siden den kun eksisterte som GetItemsForMsCalendar. Begge er nå støttet.
      0.0.3.0 - Ms connection bedre dokumentert på konfigside med tanke på Azure.
      0.0.2.9 - Det er skjedd mye, men det meste er i sammenheng med håndtering av å sette opp for toonwolf. Dokumentasjon kommer plutselig... 
      0.0.2.0 - Fikset opp slik at man kan få tilbake objekter fra script, ikke bare ferdige strenger 
      0.0.1.8 - Lagt til uthenting av kalenderinfo vha script for Microsoft kalendere.
      0.0.1.1 - Fikset opp i visning når man har brukt avanserte settinger. Dette vil nå bli vist når man har "krympet/rullet opp" eventet.
      0.0.1.0 - Fjernet noen småfeil i offset (takk til toonwolf for testing) og lagt til muligheten å kunne søke på flere ord ved hjelp av logiske operatorer - || (eller/OR) og && (og/AND)
      0.0.0.7 - Forbedret kobling mot Google + fjernet noen småfeil i offset
      0.0.0.6 - Microsoft kalenderfunksjonalitet lagt til (Hotmail/Outlook Live).
      0.0.0.5 - Mye ekstra funksjonalitet lagt inn på triggerne. Egen device for å vise status på koblingen mot Google.
      0.0.0.4 - Man kan ikke sette tid mellom ny info fra Google til mer enn 3599 sekunder.
      0.0.0.3 - Fungerer mot Linux. Autorisasjon endret.
      0.0.0.2 - Logging settes og slik sett får man mindre i HomeSeer loggen hvis det er ønskelig.
       
       
×
×
  • Opprett ny...