Moskus Skrevet 22. mai 2016 Skrevet 22. mai 2016 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. MotionLog.vb (ny) Public Sub Main(ByVal input As Object) Dim logDeviceRef As Integer = 1081 ' Update this Dim count As Integer = 9 'Maximum number of lines shown on the device - 1. 9 means 10 lines are shown Dim currentText As String = hs.DeviceString(logDeviceRef) currentText = currentText.Replace("<br>", "|") Dim lines() As String = currentText.Split("|") If lines.GetLength(0) < count Then count = lines.GetLength(0) Dim oldLines(count - 1) As String Array.Copy(lines, oldLines, count) 'Creating the device text Dim newText As String = Now.Date & " " & Now.ToLongTimeString & " - " & input.ToString If lines.GetLength(0) > 0 And lines(0) <> "" Then newText &= "<br>" 'Adding the previous lines newText &= String.Join("<br>", oldLines) 'Updating the device string hs.SetDeviceString(logDeviceRef, newText, True) 'hs.TriggerEvent("Restart SisteBeveglse timer") lines = Nothing oldLines = Nothing End Sub Spoiler MotionLog.vb (gammel) Public Sub Main(ByVal input As Object) Dim logDeviceRef As Integer = 1081 ' Update this Dim currentText As String = hs.DeviceString(logDeviceRef) Dim lines As System.Collections.Generic.List(Of String) If currentText.Contains("<br/>") Then lines = currentText.Split("<br/>").ToList Else lines = currentText.Split("<br>").ToList End If 'Removing empty lines and cleaing up strings For i As Integer = lines.Count - 1 To 0 Step -1 If lines(i).Trim = "" Then lines.RemoveAt(i) If lines(i).Contains("br/>") Then lines(i) = lines(i).Replace("br/>", "") If lines(i).Contains("br>") Then lines(i) = lines(i).Replace("br>", "") Next 'Remove the bottom entry if needed If lines.Count = 10 Then lines.RemoveAt(lines.Count - 1) 'Creating the device text Dim newText As String = Now.Date & " " & Now.ToLongTimeString & " - " & input.ToString If lines.Count > 0 Then newText &= "<br>" If lines.Count > 2 Then For i As Integer = 0 To lines.Count - 2 newText &= lines(i) & "<br>" Next ElseIf lines.Count = 2 Then newText &= lines(0) & "<br>" End If 'Adding the last lines without the HTML break newText &= lines(lines.Count - 1) 'Updating the device string hs.SetDeviceString(logDeviceRef, newText, True) 'hs.TriggerEvent("Restart SisteBeveglse timer") End Sub For hver bevegelsessensor har jeg da et event som blir trigget ved bevegelse (selvfølgelig! ), som i tillegg til å styre lys der det er nødvendig, kjører dette scriptet med sub Main og parameter med navnet på sensoren, som "Kjøkken" eller "Stue". I tillegg har jeg en timer som he ter "SisteBevegelse", som jeg resetter når dette skjer. Hvis du også vil bruke dette, må du opprette den timeren, lage et Event (som jeg har kalt "Restart SisteBevegelse timer" fordi det ikke finnes kode for å restarte den), og fjerne fnutten foran den nest siste linjen i koden. EDIT: Oppdatert slik at det blir penere i HStouch. EDIT2: Bruker arrays for å gjøre scriptet enklere. Burde nå kjøre på Linux uten problemer. 3 Siter
GeneralVirus Skrevet 28. mai 2016 Skrevet 28. mai 2016 Har du prøvd å vise infoen fra motion log devicen i HSTouch? Hvordan har du eventuelt fått det til på en pen måte? Får ikke linjeskift til å fungere. Siter
Moskus Skrevet 28. mai 2016 Forfatter Skrevet 28. mai 2016 Nei, jeg har faktisk ikke prøvd HStouch enda. Men det er bare HTML-formatert (kun < br/>), har du prøvd vis som HTML i HStouch? Siter
DiderikFrom Skrevet 28. mai 2016 Skrevet 28. mai 2016 Ja, jeg har prøvd dette tidligere, men det ser ikke ut til å funke på linux... ? Siter
GeneralVirus Skrevet 28. mai 2016 Skrevet 28. mai 2016 4 hours ago, Moskus said: Nei, jeg har faktisk ikke prøvd HStouch enda. Men det er bare HTML-formatert (kun < br/>), har du prøvd vis som HTML i HStouch? Det funker ikke med html nei Siter
iblis Skrevet 28. mai 2016 Skrevet 28. mai 2016 Jeg har en versjon av dette scriptet hjemme hvor jeg deler opp hver event til en virtual device. Gjør det lettere å få det pent i HSTouch. Skal poste det når jeg er ferdig på jobb. Siter
Moskus Skrevet 29. mai 2016 Forfatter Skrevet 29. mai 2016 ... skrev jeg det til deg, eller har du modifisert det selv? Siter
iblis Skrevet 29. mai 2016 Skrevet 29. mai 2016 Det er en modifisert utgave av den du skrev til meg for en stund siden. Poster det senere i kveld. Siter
iblis Skrevet 1. juni 2016 Skrevet 1. juni 2016 Den 5/29/2016 klokken 19.52, Moskus skrev: ... skrev jeg det til deg, eller har du modifisert det selv? Rettelse; det var ikke en modifisert utgave av scriptet ditt, men heller en overkomplisert metode som sikkert kan gjøres lettere med et script. ? Slik gjorde jeg det: 1. Start med å lage en Virtual Device for hver bevegelsessensor du vil ha historie på. #618 = 01 - Bevegelse historie #619 = 02 - Bevegelse historie #620 = 03 - Bevegelse historie 2. Lag en ny gruppe i Events med navn "Bevegelsessensor historie" og opprett følgende eventer i denne gruppen: Bevegelsessensor - Gang Bevegelsessensor - Stue Bevegelsessensor - Soverom 3. Event Bevegelsessensor - Gang ser slik ut: Script1: &hs.SetDeviceString(620, hs.DeviceString(619), True) Script2: &hs.SetDeviceString(619, hs.DeviceString(618), True) Script3: &hs.SetDeviceString(618, hs.DeviceLastChangeRef(621) & " " & "- Bevegelse i gang", True) 4. Event Bevegelsessensor - Stue ser slik ut: Script1: Ingen forandring Script2: Ingen forandring Script3: &hs.SetDeviceString(618, hs.DeviceLastChangeRef(622) & " " & "- Bevegelse i stue", True) 5. Event Bevegelsessensor - Soverom ser slik ut: Script1: Ingen forandring Script2: Ingen forandring Script3: &hs.SetDeviceString(618, hs.DeviceLastChangeRef(623) & " " & "- Bevegelse i soverom", True) 6. Hver gang en bevegelsessensor trigger så kjøres eventene og resultatet blir som dette: De 3 VDene kan du nå plassere i riktig rekkefølge hvor du måtte ønske i HSTouch. 1 Siter
Moskus Skrevet 1. juni 2016 Forfatter Skrevet 1. juni 2016 Hjælp! Tenker jeg oppdaterer scriptet mitt istedenfor, jeg. 1 Siter
TomasV Skrevet 8. juni 2016 Skrevet 8. juni 2016 Den 1.6.2016 klokken 11.16, Moskus skrev: Hjælp! Tenker jeg oppdaterer scriptet mitt istedenfor, jeg. Er det bare å kopiere å bruke scriptene dere lager? Dette er en jeg vil låne om det er mulig, og den blir oppdatert. Siter
iblis Skrevet 8. juni 2016 Skrevet 8. juni 2016 2 minutter siden, TomasV skrev: Er det bare å kopiere å bruke scriptene dere lager? Dette er en jeg vil låne om det er mulig, og den blir oppdatert. Ja, her er det bare å kopiere og bruke scriptene som du vil. Bare husk på å forandre på Reference IDen slik at de passer ditt system. 1 Siter
Moskus Skrevet 9. juni 2016 Forfatter Skrevet 9. juni 2016 Jepp, lån i vei! Men hvis du legger til noe som gjør det enda bedre, så hadde det vært kjekt om du postet den nye versjonen. Kanskje ditt er bedre enn mitt? Siter
Archos Skrevet 6. juli 2016 Skrevet 6. juli 2016 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() Slik ser eventen ut: Har byttet DeviceRef til ny opprettet VD. Noen som ser åpenbar feil jeg har gjort? Siter
GeneralVirus Skrevet 6. juli 2016 Skrevet 6. juli 2016 Prøv å kjør denne under Tools -> Control Panel -> Immediate Script Command. hs.SetDeviceString(DINDEVICEREF, "Linje 1<br/>Linje 2<br/>Linje 3", True) 1 Siter
Moskus Skrevet 6. juli 2016 Forfatter Skrevet 6. juli 2016 OK, tror jeg får lage en egen Setup-funksjon som gjør dette her. Lager en device og setter den opp riktig. Siter
Archos Skrevet 7. juli 2016 Skrevet 7. juli 2016 On 7/6/2016 at 11:23, GeneralVirus said: Prøv å kjør denne under Tools -> Control Panel -> Immediate Script Command. hs.SetDeviceString(DINDEVICEREF, "Linje 1<br/>Linje 2<br/>Linje 3", True) Det virker. Hva kan da være feil? Siter
Archos Skrevet 7. juli 2016 Skrevet 7. juli 2016 OMG. Nybegynner feil, hadde ikke trykket på "Save script edits" Siter
Moskus Skrevet 7. juli 2016 Forfatter Skrevet 7. juli 2016 45 minutter siden, Archos skrev: Det virker. Hva kan da være feil? Hvis det virker kan det vel ikke være feil... Siter
iceball Skrevet 1. november 2016 Skrevet 1. november 2016 Har litt problemer med å få scriptet ditt til å fungere @Moskus Tips? Siter
Moskus Skrevet 1. november 2016 Forfatter Skrevet 1. november 2016 Zee2, HS3-Pi eller fullversjon du kjører? Siter
Moskus Skrevet 1. november 2016 Forfatter Skrevet 1. november 2016 Zee2, HS3-Pi eller fullversjon du kjører? Siter
iceball Skrevet 1. november 2016 Skrevet 1. november 2016 HomeSeer Version: HS3 Pro Edition 3.0.0.297 (Linux) HomeSeer: Is running in Trial Mode På en RPI3 Siter
Moskus Skrevet 1. november 2016 Forfatter Skrevet 1. november 2016 OK, da kan det være at du trenger å oppdatere fra mono 3 til mono 4, eller noe sånt. Jeg er dessverre ikke rette personen å spørre. Mono er .NET på Linux. Men versjon 3 har ikke alle de kule funksjonene som den siste versjonen har. EDIT: Det kan være at det hjelper å skrive "Imports System.Linq" på en egen linje helt, helt øverst i scriptet. 1 Siter
iceball Skrevet 1. november 2016 Skrevet 1. november 2016 16 minutter siden, Moskus skrev: OK, da kan det være at du trenger å oppdatere fra mono 3 til mono 4, eller noe sånt. Jeg er dessverre ikke rette personen å spørre. Mono er .NET på Linux. Men versjon 3 har ikke alle de kule funksjonene som den siste versjonen har. EDIT: Det kan være at det hjelper å skrive "Imports System.Linq" på en egen linje helt, helt øverst i scriptet. Ser ikke ut som det hjalp å legge til Imports System.Linq, så da skal jeg se om jeg får oppdatert til mono 4 (eller så får jeg børste støv av en win pc). Siter
Anbefalte innlegg
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.