Gå til innhold
  • Bli medlem

Anbefalte innlegg

Jeg ønsker å få til en virtuell device for alle vinduer, og en for dørene. Denne skal oppdateres med hvilke vinduer/dører som er åpne til en hver tid. Eventuelt om alle er lukket.

Scripting er jeg ganske fersk med, så det har blitt litt copy paste fra her inne samt homeseer forumet.

Fant et script som skal gjøre akkurat det jeg trenger, men jeg får warning i loggen :

VB.Net script exception(0), re-starting: Object reference not set to an instance of an object

 

Noen som har noen tips, er det noe åpenbart jeg har misset her?

Til info så har jeg oppdatert scriptet med mine devicer :)

Jeg kjører forøvrig HS3 på Raspbian.

' these are the virtual devices to be updated by the script
'423    Windows
'424    Doors

'Use the reference ID of the door or window sensor devices in the arrays below

Public Sub Main(ByVal Parms as Object)
   Dim array_windows() as string = {"221", "217", "215", "213", "211"}
   Dim array_doors() as string = {"219", "209"}
   Dim windows_count as integer = 0
   Dim window_name as string = ""
   Dim wstr as string = ""
   Dim doors_count as integer = 0
   Dim door_name as String = ""
   Dim dstr as string = ""
   Dim dv as Object

End Sub

'Using 2 subs, one for doors and the other for windows

'WINDOWS
Sub windows(ByVal Parms as Object)
Try
windows_count = 0
window_name = ""
wstr = ""
for each devw as string in array_windows
       'hs.writelog("Array", "Window " & window_name & " | Value " & hs.DeviceValue(devw))
    if hs.DeviceValue(devw) = 1 then
                windows_count = windows_count + 1
        dv = hs.GetDeviceByRef(devw)
        window_name =  dv.Name(hs)
               wstr = wstr & window_name & ",<br>"
    hs.writelog("DoorWindow", window_name & " Open")
       'hs.writelog("DoorWindow", array_windows)
        end if
next
    If windows_count > 0 then
        hs.SetDeviceValueByRef(423,100,true)
        hs.SetDeviceString(423, wstr,true)
    Else
        hs.SetDeviceValueByRef(423,0,true)
        hs.SetDeviceString(423, "Alle vinduer lukket",true)
    End If
    hs.writelog("DoorWindow", "Window Count: " & windows_count)

Catch ex As Exception
hs.WriteLog ("DoorWindow", "Error: " & ex.Message)
End Try

End Sub

'DOORS
Sub doors(ByVal Parms as Object)
Try
doors_count = 0
door_name = ""
dstr = ""
for each devd as string in array_doors
       'hs.writelog("Array", "Door " & door_name & " | Value " & hs.DeviceValue(devd))
    if hs.DeviceValue(devd) = 1 then
        dv = hs.GetDeviceByRef(devd)
        door_name =  dv.Name(hs)
        doors_count = doors_count + 1
        dstr = dstr & door_name & ",<br>"
    hs.writelog("DoorWindow", door_name & " Open")
        end if
next
    If doors_count > 0 then
        hs.SetDeviceValueByRef(424,100,true)
        hs.SetDeviceString(424, dstr,true)
    Else
        hs.SetDeviceValueByRef(424,0,true)
        hs.SetDeviceString(424, "Alle dører lukket",true)
    End If

    hs.writelog("DoorWindow", "Door Count: " & doors_count)

Catch ex As Exception
hs.WriteLog ("DoorWindow", "Error: " & ex.Message)
End Try

End Sub

 

Endret av Rufus

Del dette innlegget


Lenke til innlegg
Del på andre sider

Der hadde jeg blingset :)

Men nå får jeg en annen warning :

Compiling script /usr/local/HomeSeer/scripts/DoorsWindows.vb: Namespace or type specified in the Imports 'System.Core' doesn't contain any public member or cannot be found. Make sure the namespace or the type is defined and contains at least one public member. Make sure the imported element name doesn't use any aliases.

Det er mulig det er litt for seint på kvelden til å drive med sånt ;)

Har editert scriptet i opprinnelig post.

Del dette innlegget


Lenke til innlegg
Del på andre sider

 

I din Public Sub Main så gjør du ingenting. Mulig dette er grunnen. Når jeg sliter med scriptfeil så pleier jeg å fjerne så mye som mulig (kommentere vekk alle subrutiner) og så ta det tilbake litt etter litt.

 

 

Jeg er litt usikker på om windows er godkjent subnavn så den ville jeg ha gitt ett annet navn (CheckWindows?).

 

Småpirk: Sub'er bør helst ha stor bokstav så 

Sub doors(ByVal Parms as Object) vil bli Sub Doors(ByVal Parms as Object) (men jeg ville kanskje renamet funksjonen til CheckDoors)

 

Og feilmeldingene i Sub'ene dine ville jeg ha gjort om så du kan se i hvilken sub det feiler

 

Catch ex As Exception

hs.WriteLog ("CheckDoors", "Error: " & ex.Message)

 

hs.WriteLog ("CheckWindows", "Error: " & ex.Message)

Del dette innlegget


Lenke til innlegg
Del på andre sider

Ser at dette er en gammel tråd. Men hadde det samme problemet som TS. Fikk hjelp fra homeseer forumet. En som lagde sin egen versjon. Det fungerte hos meg som kjører HS3 Pro på win10.

 

Sub Main(ByVal Parms As String)

    'Use the reference ID of the door or window sensor devices in the arrays below
    'This script work for devices that have a value of 0 when they are secure and greater than 0 If they are not

    Dim WindowArray() As Integer = {8152,8129,8086,8123,8158}
    Dim DoorArray() As Integer = {1017,1018,1146,6370}
    Dim DoorDev As Integer = 8259
    Dim WindowDev As Integer = 8260
    Dim Debug As Boolean = True
    Dim LogName As String = "Door-Window"

    Dim WindowCount As integer = 0
    Dim WindowName As string = ""
    Dim WindowDevString As string = ""

    Dim DoorCount As integer = 0
    Dim DoorName As String = ""
    Dim DoorDevString As string = ""

    Dim dv As Scheduler.Classes.DeviceClass

    Try
        'Windows
        For Each Window As Integer In WindowArray
            dv = hs.GetDeviceByRef(Window)
            WindowName =  dv.Name(hs)
            If Debug Then hs.writelog(LogName, "Window " & WindowName & " | Value " & hs.DeviceValue(Window))
            If hs.DeviceValue(Window) > 0 Then
                WindowCount = WindowCount + 1
                WindowDevString = WindowDevString & WindowName & ",<br>"
                If Debug Then hs.writelog(LogName, WindowName & " Open")
            End If

        Next
        If WindowCount > 0 Then
            hs.SetDeviceValueByRef(WindowDev,100,True)
            hs.SetDeviceString(WindowDev, WindowDevString,True)
        Else
            hs.SetDeviceValueByRef(WindowDev,0,True)
            hs.SetDeviceString(WindowDev, "All Windows Closed",True)
        End If

        If Debug Then hs.writelog(LogName, "Window Count: " & WindowCount)

        'Door
        For Each Door As Integer In DoorArray
            dv = hs.GetDeviceByRef(Door)
            DoorName =  dv.Name(hs)
            If Debug Then hs.writelog(LogName, "Door " & DoorName & " | Value " & hs.DeviceValue(Door))
            If hs.DeviceValue(Door) > 0 Then
                DoorCount = DoorCount + 1
                DoorDevString = DoorDevString & DoorName & ",<br>"
                If Debug Then hs.writelog(LogName, DoorName & " Open")
            End If
        Next
        If DoorCount > 0 Then
            hs.SetDeviceValueByRef(DoorDev,100,True)
            hs.SetDeviceString(DoorDev, DoorDevString,True)
        Else
            hs.SetDeviceValueByRef(DoorDev,0,True)
            hs.SetDeviceString(DoorDev, "All Doors Closed",True)
        End If

        If Debug Then hs.writelog(LogName, "Door Count: " & DoorCount)

    Catch ex As Exception
        hs.WriteLog (LogName, "Error Door: " & ex.Message)
    End Try

End Sub

Endre: Dim Debug As Boolean = True til Dim Debug As Boolean = False for å fjerne all log beskjeder.

Endret av Terje Klungervik
  • Like 1

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
      Link til siste versjon
      AutomowerConnectSeer 0.0.0.3
       
      NB: Kun testet i Windows 10
       
      Hva plugin gjør:
      Plugin for oppkobling mot Automower Connect API som gjør at man kan få info om og styre Husqvarna Autmower (robotgressklipper) gitt at denne er på nett og du kan bruke en app (AMC i android) for å kontakte den).
       
      I tillegg til å få devicer i HomerSeer med data om gressklipperen status så er det også følgende actions til bruk i events:
      Endre poll tid (hvor ofte man spør Automower Connect API om data) Park Resume Schedule Pause Start Park until further notice Park until next schedule  
      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_AutomowerConnectSeer.exe og HSPI_AutomowerConnectSeer.exe.config, mens du i katalogen Homeseer HS3\bin skal ha fått en ny underkatalog -  AutomowerConnectSeer - med 28 filer) og under html\images katalogen skal du ha fått en AutomowerConnectSeer katalog med 24 filer   Restart Homeseer Gå inn på Homeseer->Plugins->Manage og trykk enable på RFLinkSeer  
       
      For å få dette til å virke må du inn og registrere deg på nettsiden (bruk samme epost og passord som på AMC app)
      https://developer.1689.cloud/
      Der må du også lage din egen applikasjon (etter at du har fått logget inn)
       
      Epost, passord og applikasjonsid må du registrere i plugin

       
      Når du har gjort dette (hvis du har fått det til riktig) så vil du få oversikt over din(e) klipper(e) i hoved konfigurasjonen

      Rask forklaring:
      Time between check of cloud service  -  periode mellom oppkobling mot skytjenesten for å hente data
      Default number of minutes to mow when using Start button - Antall minutter klipperen klipper når du trykker på Start i HomeSeer
      Default number of minutes to park when using Park button - Antall minutter som klipperen står parkert når du trykker på Park i HomeSeer
      Log level - hvilket nivå med logging som gjøres til HomeSeer (og eventuelt fil)
      Number of calls this month - antall kall mot skytjenesten så langt denne måneden (NB NB det er opplyst om at max er 10 000 kall i måneden)
      Og oversikt over klipper(e).
      Trykk Add på de du ønsker å ha inn i HomeSeer. Trykk Delete hvis du vil fjerne de (events vil ikke bli fjernet). Fix devices er en knapp for å prøve å rette opp hvis du f.eks. har slettet noe du ikke skulle.
       
      Oversikt i HomeSeer 3

       
      Rask forklaring:
      Connected - Status på om klipper er koblet til skytjeneste. 3 typer: Disconnected=-1, connected=0, connected error =1-99999.
      Battery - prosent av batteri igjen
      Mode - "MAIN_AREA"=gjør noe i definert hovedområde,  "SECONDARY_AREA"gjør noe i definert sekundærområde, "HOME"=er hjemme (ladestasjon), "DEMO"=kjører rundt uten å ha blader igang,  "UNKNOWN" =Ukjent status
      Activity - "UNKNOWN" =Ukjent status, "NOT_APPLICABLE"=Ingen verdi, "MOWING"=Klipper, "GOING_HOME"=kjører hjem, "CHARGING"=lader, "LEAVING"=kjører ut av ladestasjon,  "PARKED_IN_CS"=Parkert i ladestasjon, "STOPPED_IN_GARDEN"=stoppet i hagen
      State - "UNKNOWN" =Ukjent status, "NOT_APPLICABLE"=Ingen verdi, "PAUSED"=pauset, "IN_OPERATION"=går som normalt/står i lader, "WAIT_UPDATING"=oppdaterer software, "WAIT_POWER_UP"=Slår seg på, "RESTRICTED"=begrenset på grunn av oppsett i kalender,  "OFF"=av,  "STOPPED"=stoppet opp, "ERROR"/"FATAL_ERROR"/"ERROR_AT_POWER_UP"=Feilsituasjoner
      Command - Viser om siste kommando ble oversendt ok og hva den var
      Error - Feilmelding hvis det er rapportert en feil
      Last Connected - Tidspunkt for når klipperen var sistt tilkoblet
      Next Start - Neste start av klipperen
       
      Eksempler på actions i events
       

      Park brukes for å få klipper(e) til å parkere for en gitt periode. Start vil se nesten helt lik ut, men der er perioden du oppgir hvor lenge den skal klippe.
       

      Resume schedule, Pause, Park until further notice, Park until next Schedule ser veldig like ut og du kan der bestemme hvilke klipper som skal få tilsendt action.
       

      Set cloud poll interval gjør at du kan via events endre hvor ofte du henter ned data fra skytjenesten.
       
      Endringslogg:
      0.0.0.3 - Fikset sjekk på manglende verdier slik at det ikke kræsjer før man har lagt inn applikasjons id, epost og passord 
      0.0.0.2 - Fikset statusverdier slik at det blir enklere å lage events. Fikset noen Copy&Paste feil
      0.0.0.1 - Første versjon. Sikkert endel mangler som dukker opp
       
      Problemer/utfordringer/videreutvikling
      Må kunne sette Poll interval tilbake til default ved f.eks. omstart  
       
       
    • Av Rune L
      Jeg ønsker å måle volt 0-50 volt å få lest det av i Homeseer.
      Hvordan kan det gjøres? Arduino? z-wave ?
    • Av Olamann1
      HS3 PRO Lisens selges
       
      kr 2000,- 
       

      25$ til Homeseer for å omregistrere lisensen over til ny bruker.
    • Av M.Hatlem
      hei hei
       
      Har en industri tempføler som har egen web server.
      Er det mulig å hente info fra denne inn i Fibaro med bruk av XML eller txt ?
       
      har prøvd meg med flere lua koder men får bare feil meldinger.
       
      Kan noen hjelpe meg på rett vei?
       
      Temperatur = Net.FHttp("192.168.1.26")
      Temperatur, status, errorCode = temperatur:GET("/command.php?action=get&variable=temperatur")
      fibaro:debug(status.."-"..errorCode)
      fibaro:log("Aktuell temp "..temp)
      fibaro:debug("Aktuell temp = "..temp)
      short_temp = string.sub(temp, ,1 ,1)
      fibaro:call(541,"setProperty", "ui.Temp1.value","Temp: "..short_temp.."C")
       
       
      Sensors Values, (n = 1..x) ---------------------------------------------------- .1.3.6.1.4.1.21796.4.9.3.1.1.n Sensor Index (integer, NUM (1..x)) .1.3.6.1.4.1.21796.4.9.3.1.2.n Sensor Name (string, SIZE (0..16)) .1.3.6.1.4.1.21796.4.9.3.1.3.n Sensor State (integer, 0=Invalid, 1=Normal, 2=OutOfRangeLo, 3=OutOfRangeHi, 4=AlarmLo, 5=AlarmHi) .1.3.6.1.4.1.21796.4.9.3.1.4.n Sensor String Value (string, SIZE (0..10)) .1.3.6.1.4.1.21796.4.9.3.1.5.n Sensor Value (integer, current value *10) .1.3.6.1.4.1.21796.4.9.3.1.6.n Sensor SN (string, SIZE (0..16)) .1.3.6.1.4.1.21796.4.9.3.1.7.n Sensor Unit (integer, 0=unknown, 1=°C, 2=°F, 3=°K, 4=%) .1.3.6.1.4.1.21796.4.9.3.1.8.n Sensor ID (integer, NUM (0..x))
    • Av Guahtdim
      Dette er en plugin for å kunne styre Daikin varmepumpe med wifi-modul
       
      Link til siste versjon
      DakinSeer 0.0.1.3
      (NB: Kun testet i Windows )
      Hvis du allerede har installert tidligere versjoner så slett alle enheter og opprett på nytt
       
      Hva denne plugin gjør:
      Gir deg en oversikt over forskjellige status

      Gir deg mulighet til å styre varmepumpen fra "oversiktbildet"
      eller 
      legge det inn som en action i en (eller flere) events

       

       
      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_DaikinSeer.exe og HSPI_DaikinSeer.exe.config, mens du i katalogen Homeseer HS3\bin og Homeseer HS3\html\images skal ha fått en ny underkatalog - DaikinSeer)   Restart Homeseer Gå inn på Homeseer->Plugins->Manage og trykk enable på DaikinSeer  
      Hvordan å legge inn en varmepumpe
      For å kunne legge inn en varmepumpe så må du vite ip adressen til den.  Dette kan du finne i f.eks. routeren din. 
       
       
      General Settings
      I "General Settings" vil du kunne sette opp hvor lang tid det skal gå mellom hver gang det hentes info fra varmepumpen (der er det en copy&paste bug ja). Time between triggering if true skal egentlig være "Time between heat pump check" eller noe.
      Du kan sette loggnivå.
      Og du får opp antall varmepumper tilknyttet (Number of heat pumps to check)

       
      Sette temperatur offset for alle varmepumper som kjøres av plugin

      Ved å sette noe annet enn 0 grader på heat point offset så vil temperaturene du ser i HomeSeer være justert i forhold til offset. Si at du setter det til -2,5 grader. Da vil du se 24 grader i HomeSeer på Heat point, men plugin vil ha fått inn 26,5 grader. Det samme vil også gjelde hvis du endrer temperatur. Hvis du endrer fra 24 til 23 grader så sendes 25,5 grader til varmepumpen.
      NB: Dette gjelder kun for plugin så hvis noen begynner å endre med fjernkontroll eller app på telefonen så vil ikke offset gjelde fra disse. Fjernkontroll vil heller ikke få med seg endringer sendt til varmepumpen.
       
      Streamer mode, Power mode og Econo mode

      Ved å velge en ip adresse fra dropdown som sier "Choose ip address for adding power and streamer" så vil det gjøres en test på om denne enheten har en eller flere av disse mulighetene. Hvis det blir testet ok så legges dette til i HomeSeer for gjeldende enhet.
       
       
      Endringslogg
      0.0.1.3 - Oppdatert slik at Connected vil endre seg til verdier over 0 hvis det er feil. I tillegg lagt til nytt ikon og ekstra tekst når det kommer feil tilbake fra Daikin varmepumpe
      0.0.1.1 - Lagt inn mulighet for å legge inn offsetverdi på temperatur. Denne vil gjelde for alle varmepumper som du kjører. I tillegg gitt mulighet til å legge til EconoMode, PowerMode og StreamerMode (hvis du har det på din varmepumpe). Disse tre modes må legges til ved å velge dette fra dropdown i Ip-config.
      0.0.0.9 - Fikset feil nummer brukt når man skulle skifte til FAN mode. Også oppdatert slik at plugin husker siste temperatur hvis man skifter mellom modes og en av de er FAN siden FAN ikke rapporterer temperatur tilbake (Dette forutsetter at plugin har fått en temperatur før man skifter til FAN mode. Hvis man starter i FAN mode vil default temperatur være 18 grader for kjøling og 10 grader for oppvarming). Takk til @Kenneth for å ha funnet denne.
      0.0.0.8 - Fikset håndtering av tall med desimaler fra Wifi adapter når man ikke kjører US oppsett.
      0.0.0.6 - Endret bygging av temperatur dropdown for å unngå feil ved desimal verdier0.0.0.7 - Fikset visning av temperatur ikoner + ekstra sjekk når man lager enhet slik at man ikke kan ha mer enn en varmepumpe per Ip
      0.0.0.5 - endret shum tilbake, men sørget for us-formatering av temperatur sendt til varmepumpe fra HomeSeer
      0.0.0.4 - endret shum i til å ikke ha verdi (fra shum=0&.. til shum=&..)
      0.0.0.3 - Fikset flere upper/lower case  i image-path
      0.0.0.2 - Lagt på litt mer debug logging og fikset noen upper/lower case i image-path
      0.0.0.1 - Første versjon
       
       
      Problemer/utfordringer/videreutvikling
      Få inn PowerMode, Streamer og EcoMode for de enheter som støtter dette. Automagisk legge dette inn i oppstart. Individuelt oppsett av offset for de som har mer enn en varmepumpe. Gjenopprette devicer tilbake til standard hvis man f.eks. har slettet eller gjort endringer på enhetene sine. Prøve å beholde deviceId hvis denne finnes. Få til en oppdatering av allerede eksisterende enheter hvis man har gjort rettelser på de. Kunne selv velge default temperatur hvis plugin ikke har noen temperatur å gå ut ifra Legge inn mulighet for å kjøre en offset på ønsket temperatur Kunne sende Streamer on/off og Powerful on/off for de som har dette Det skal ikke være mulig å lage mer enn en enhet/samling med devicer per ip. Hvis den allerede eksisterer så skal man få opp en advarsel. Hvordan få satt en drop-down til å ha korrekt formatering i forhold til hva HomeSeer forventer.
×
×
  • Opprett ny...