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

Anbefalte innlegg

Skrevet

Jeg ser det samme. Jeg kan skrive ToList() funksjonen selv, men den er nå så selvsagt i .NET at jeg hadde håpet å unngå dette. Skal høre med folkene i HST.

  • 1 måned senere...
Skrevet (endret)

Hvis man kun ønsker å se tidspunkt for siste hendelse, f.eks. hvis man har en oversikt i HStouch over siste bevegelse på alle multisensorer, så finnes det en superenkel måte å gjøre dette på.

 

Lag en virtual device for hver sensor du ønsker å logge - merk deg device id.

 

dev.png

 

id.png

 

Lag en event pr. enhet, sett den opp til å trigge på at multisensor registrerer "motion".

Velg så å kjøre en script kommando, endre da det første tallet i kommandoen til din "Reference ID".

"NOW" er jo en kjekk måte å sette inn tid/dato i en string, alternativt kan man gjøre som Iblis og benytte "DeviceLastChangeRef" som peker til device id for multisensor.

 

bev.png

 

I HSTouch Designer kan du nå legge til den virtuelle device i en visning, endre til StatusTrackingNormal, plukk frem den virtuelle devicen, endre til "Use Status Text".

 

hst.png

 

 

Endret av Nettopp
  • Like 3
  • 2 uker senere...
Skrevet
På 6.7.2016 den 10.46, Archos skrev:

Hei,

 

Jeg får denne erroren når jeg prøver å kjøre scriptet:

Running script C:\Program Files (x86)\HomeSeer HS3\scripts\MotionLog.vb :Exception has been thrown by the target of an invocation.->Does entry point Main exist in script? at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at A.c17b105f989efe61e5979e67bec1ef734.cffd66cb0782c50126727e3fa75582d7a()

 

 

 

Hei

 

Jeg får opp noe av den samme feilen, hva gjorde du for å fikse dette? @Moskus er det noe med en setup fil her?

På 6.7.2016 den 15.21, Moskus skrev:

OK, tror jeg får lage en egen Setup-funksjon som gjør dette her. Lager en device og setter den opp riktig.

 

Jeg har prøvd med Sum or Function som Main og main som ga 2 forskjellige feilmeldinger, se bildet

5a1fdafb2b8f6_Skjermbilde2017-11-3011_16_44.png.a303f479ff8861c2c7e348d273bb3030.png

 

er det bevegelseslogg devisen jeg har satt op feil?

Skrevet
9 timer siden, Moskus skrev:

Prøv med dette immediate scriptet:


&hs.SetDeviceString(DIN_DEV_REF, "Linje1<br>Line2<br>Linje3<br>Linje4", True)

 

Takk, det fungerte, i tillegg hadde jeg en bokstavfeil i scriptet men nå fungerer det, ?

Skrevet

Jeg kjører nyeste Mono, men får likevel dette:

Sitat
       
Dec-02 12:29:54   Error Compiling script /usr/local/HomeSeer/scripts/MotionLog.vb: 'ToList' is not a member of 'System.String[]'.
Dec-02 12:29:54   Error Compiling script /usr/local/HomeSeer/scripts/MotionLog.vb: 'ToList' is not a member of 'System.String[]'.
Dec-02 12:29:54   Error Compiling script /usr/local/HomeSeer/scripts/MotionLog.vb: The import 'System.Core' could not be found.

 

Tips? :) 

Skrevet
24 minutter siden, ZoRaC skrev:

Tips? :) 

Installer Windows...

 

Men seriøst:

Scriptet må skrives ganske mye om hvis Lamda-funksjoner som ".ToString()" ikke er støttes. Enten over til C# hvor det (visstnok og kanskje?) er støttet eller til å bruke Array istedenfor.

 

Et siste alternativ er å vente til den dagen HomeSeer eventuelt er bygd på .NET Core istedenfor mono på Linux.

Skrevet

Fikk «hacket» til en workaround. :) 

Sitat

Public Sub Main(ByVal input As Object)
    Dim logDeviceRef As Integer = 798 ' Update this

    Dim newText As String = Now.Date & " " & Now.ToLongTimeString & " - " & input.ToString & "<br>" & hs.GetINISetting("Log", "1", "", "MotionLog.ini") & hs.GetINISetting("Log", "2", "", "MotionLog.ini") & hs.GetINISetting("Log", "3", "", "MotionLog.ini")

 hs.SaveINISetting("Log", "3", hs.GetINISetting("Log", "2", "", "MotionLog.ini"), "MotionLog.ini")
hs.SaveINISetting("Log", "2", hs.GetINISetting("Log", "1", "", "MotionLog.ini"), "MotionLog.ini")
hs.SaveINISetting("Log", "1", Now.Date & " " & Now.ToLongTimeString & " - " & input.ToString & "<br>" , "MotionLog.ini")

    'Updating the device string
    hs.SetDeviceString(logDeviceRef, newText, True)
    'hs.TriggerEvent("Restart SisteBeveglse timer")
End Sub

 

  • 2 måneder senere...
Skrevet
På 22.5.2016 den 12.54, Moskus skrev:

Dette scriptet lar deg logge alle bevegelser til en device, slik at det blir enklere å se på web eller HStouch. Bevegelser (eller enhver hendelse) blir da logget slik.

Hei, jeg ønsker en ny versjon av dette scriptet, jeg prøvde å skrive det om selv men fikk det ikke helt til.

Jeg har EN device som har mange statuser. Ønsker er å ha en device som viser de 10 siste statusene fra denne ene Devicen.

 

Endring jeg ønsker er at scriptet skal skrive statusen til denne bestemte Device i stedet for teksten som skrives inn i parameter.

 

Er et noen som gidder og endre det for meg?

Skrevet
4 minutter siden, Ruud skrev:

Endring jeg ønsker er at scriptet skal skrive statusen til denne bestemte Device i stedet for teksten som skrives inn i parameter.

 

Er et noen som gidder og endre det for meg?

 

Prøv å bytt ut «input.ToString» med «hs.devicevalue(id)» :) 

 

Hvis det da er verdien av devicen du vil ha?

Skrevet

 

20 timer siden, ZoRaC skrev:

Prøv å bytt ut «input.ToString» med «hs.devicevalue(id)» :)

Fungerte nesten, jeg får nummeret på statusen men jeg ønsker  teksten som hører til nummeret.

Jeg måtte skrive GetDeviceString(ID)

det funket hvis jeg også la til 2 funksjoner:

Function GetDeviceString(ByVal DeviceRef As Integer) As String
        'Henter device string fra HS
        Dim devstring As String = hs.DeviceString(DeviceRef)
        If devstring <> String.Empty Then Return devstring
        'Henter devicestring directe fra CAPI-status, hvis den finnes
        devstring = hs.CAPIGetStatus(DeviceRef).Status
        If devstring <> String.Empty Then Return devstring
        'Henter devicestring fra CAPI beskrivelse (basert på value)
        devstring = GetCapiString(DeviceRef)
        If devstring <> String.Empty Then Return devstring
        'Henter devicestring fra device class
        Dim dev As Scheduler.Classes.DeviceClass = hs.GetDeviceByRef(DeviceRef)
        devstring = dev.devString(Nothing)
        If devstring <> String.Empty Then Return devstring
        Return "String not found for " & DeviceRef & ", value = " & hs.DeviceValueEx(DeviceRef)
    End Function
    Function GetCapiString(ByVal DeviceRef As Integer) As String
        For Each CAPI As HomeSeerAPI.CAPIControl In hs.CAPIGetControl(DeviceRef)
            If CAPI.ControlValue = hs.DeviceValue(DeviceRef) Then Return CAPI.Label.ToString
        Next
        Return String.Empty
    End Function

 

  • Like 1
Skrevet
1 time siden, Ruud skrev:

det funket hvis jeg også la til 2 funksjoner:

Hmmm, de så kjente ut. ;)

 

Du kunne nok klart deg med kun "GetCapiString" siden det er en CAPIlabel du skal ha :) 

  • Like 1
Skrevet
22 minutter siden, Moskus skrev:

Hmmm, de så kjente ut. ;)

Jepp det er klipp og lim fra ditt fantastiske script: LogStatusToFile.vb

 

24 minutter siden, Moskus skrev:

Du kunne nok klart deg med kun "GetCapiString" siden det er en CAPIlabel du skal ha :)

hmmm.. prøvde å ta vekk funksjonen - GetDeviceString, da sluttet det å virke??

Skrevet
11 timer siden, Ruud skrev:

hmmm.. prøvde å ta vekk funksjonen - GetDeviceString, da sluttet det å virke??

Du må også endre kallet ditt fra "GeDeviceString(ID)" til "GetCapiString(ID)". :) 

  • Thanks 1
Skrevet

Har nå laget e ny versjon av scriptet. Den er vesentlig forenklet (og dermed betydelig kjappere) enn før, og skal nå kunne kjøre på Linux uten problemer. :)

 

Merket at med mye aktivitet i huset så gikk det overraskende seint, mulig det ble mye konverteringer som egentlig var unødvendige.

Denne versjonen er kjapp. :) 

  • Thanks 2
Skrevet
Akkurat nå, Moskus skrev:

Den er vesentlig forenklet (og dermed betydelig kjappere) enn før, og skal nå kunne kjøre på Linux uten problemer. :)

 

Likte du ikke min Linux-workaround? :P 

 

  • Haha 1
Skrevet
Akkurat nå, Moskus skrev:

Kunne vel gjøre det bedre enn det. :P 

 

Ingen tvil om det. :P 

Har lagt inn din versjon nå, ser ut til å funke bra! :) 

  • Like 1
Skrevet

… men versjonen din funker jo. :)

Må tydeligvis forenkle litt både mtp. hastighet og kompabilitet. Script-compileren til HS3 er ikke bare fantastisk, tydeligvis.

  • 2 måneder senere...
Skrevet

image.png.704764b157bf01a543a8cc2a175284f6.png

 

Gjelder dette kun dette eventet, eller selve scriptet?

 

Tenker på om vi går fra ett rom til et annet og scriptet ikke er ferdig.

Eller det er folk i forskjellige rom.

 

Vil dette valget stoppe samtidig loggingen av flere event?

Skrevet
5 timer siden, JohnMartin skrev:

Gjelder dette kun dette eventet, eller selve scriptet?

Eventet. Men i utgangspunktet skal scriptet være såpass raskt at det ikke er et problem

Skrevet
10 hours ago, Moskus said:

Eventet. Men i utgangspunktet skal scriptet være såpass raskt at det ikke er et problem

 

Okei, takk.

Da skal jeg prøve å huske det for fremtiden også :)

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.