TomB Skrevet 9. oktober 2017 Skrevet 9. oktober 2017 Jeg installerte nylig noen magnet-sensorer som jeg vil overvåke når blir åpnet/lukket, og aller helst vil jeg skrive dette til en fil som jeg kan ha kontroll på. Enten tekst eller en CSV-file. Er det noen enkel måte å fikse dette på? Jeg trenger bare navn på sensor, status og klokkeslett. Jeg bruker Pushover for å få melding når det gjøres på spesielle tider, men ut over det vil jeg fremdeles logge alle events der hvis det er enkelt å gjøre. Siter
TomB Skrevet 9. oktober 2017 Forfatter Skrevet 9. oktober 2017 Jeg bruker device history, men kun for grafer. Kan den også logge til fil? Siter
Nettopp Skrevet 9. oktober 2017 Skrevet 9. oktober 2017 Alt som logges med Device History havner i en felles database som du kan hente data fra. Siter
TomB Skrevet 9. oktober 2017 Forfatter Skrevet 9. oktober 2017 Det er mulig, men det jeg var ute etter var om det er mulig å logge events direkte til en fil. Det er mulig jeg må veien om noe slikt, men da kan jeg like så godt trekke data rett ut i fra homeseer loggen i stedet for å bruke en 3. part plugin for å få det i en database for deretter å måtte hente det ut manuelt igjen. Håpet var at det fantes en måte å få det direkte til en fil. Siter
Tverfyll Skrevet 9. oktober 2017 Skrevet 9. oktober 2017 Lag en event som kjører et script. Følgende kode legger til en linje for hver gang det kjøres. Dim file As System.IO.StreamWriter file = My.Computer.FileSystem.OpenTextFileWriter("c:\test.txt", True) file.WriteLine("Here is the first string.") file.Close() Dette er bare en eksempelkode som du kan tilpasse til ditt behov. Tverfyll Siter
Nettopp Skrevet 9. oktober 2017 Skrevet 9. oktober 2017 Ja da er det antagelig best å lage et event som kjører en script kommando som skriver en ny linje til en text/csv fil. Det bør være grei skuring. Du kan vel kjøre $time som en input-parameter for timestamp, og har du et event for hver "state" kan du definere tekst som skal skrives. Siter
TomB Skrevet 9. oktober 2017 Forfatter Skrevet 9. oktober 2017 Jeg skal teste, takk for tipsene. Hvis det er noen som vet om noen plugin som gjør dette direkte så tar jeg gjerne imot tips om det også, jeg er lat nok til at jeg foretrekker plugins Siter
TomB Skrevet 9. oktober 2017 Forfatter Skrevet 9. oktober 2017 9 minutes ago, Tverfyll said: Dim file As System.IO.StreamWriter file = My.Computer.FileSystem.OpenTextFileWriter("c:\test.txt", True) file.WriteLine("Here is the first string.") file.Close() Jeg er ikke god på kode så jeg spør om hjelpe Hvordan kan jeg legge inn timestamp i strengen som skrives til filen? Og vil denne legge til en ny linje hver gang? Siter
Tverfyll Skrevet 9. oktober 2017 Skrevet 9. oktober 2017 Jeg er på ingen måte rette personen til å spørre om koding, men jeg har forsøkt å "hacke" sammen noe til deg. Dette fungerer iallefall, med ny linje for hver "hendelse" Sub Main(params As Object) Dim input() As String = params.ToString.Split("|") Dim ref As Integer = input(0) Dim name As String = input(1) Dim dato As DateTime = DateTime.Now() Dim verdi As String = hs.DeviceValueEx(ref) Dim file As System.IO.StreamWriter file = My.Computer.FileSystem.OpenTextFileWriter("c:\test.txt", True) file.WriteLine("Tidspunkt: " & dato & Chr(9) &"Navn: " & name & Chr(9) & "Verdi: " & verdi) file.Close() End Sub Hvis du kjører scriptet hver gang en bryter endrer seg, med parameterene: "deviceref" | "beskrivelse" Så skal dette fungere. Legg det inn og prøv deg frem, så oppdager du fort hvordan de forskjellige funksjonene påvirker resultatet=) 1 Siter
TomB Skrevet 9. oktober 2017 Forfatter Skrevet 9. oktober 2017 Quote Public Sub Main(params As Object) Dim file As System.IO.StreamWriter file = My.Computer.FileSystem.OpenTextFileWriter("c:\temp\test.txt", True) file.WriteLine(DateTime.Now & " - Event skjer") file.Close() End Sub Dette fungerte helt fint. Trenger bare å vite hvordan jeg kan bruke norske bokstaver nå Siter
TomB Skrevet 9. oktober 2017 Forfatter Skrevet 9. oktober 2017 (endret) 7 minutes ago, Tverfyll said: Jeg er på ingen måte rette personen til å spørre om koding, men jeg har forsøkt å "hacke" sammen noe til deg. Dette fungerer iallefall, med ny linje for hver "hendelse" Sub Main(params As Object) Dim input() As String = params.ToString.Split("|") Dim ref As Integer = input(0) Dim name As String = input(1) Dim dato As DateTime = DateTime.Now() Dim verdi As String = hs.DeviceValueEx(ref) Dim file As System.IO.StreamWriter file = My.Computer.FileSystem.OpenTextFileWriter("c:\test.txt", True) file.WriteLine("Tidspunkt: " & dato & Chr(9) &"Navn: " & name & Chr(9) & "Verdi: " & verdi) file.Close() End Sub Hvis du kjører scriptet hver gang en bryter endrer seg, med parameterene: "deviceref" | "beskrivelse" Så skal dette fungere. Legg det inn og prøv deg frem, så oppdager du fort hvordan de forskjellige funksjonene påvirker resultatet=) Når du snakker om Device Ref så mener du nummeret som enheten jeg vil ha status fra heter i HS3 ikke sant? I dette tilfellet er det 396 som jeg skal hente verdien av. Problemet er at den er en 0 eller 255 sak, og den henter ikke Status navnet, men bare Device Value når jeg kjører den kommandoen. Er det noen måte å få den til å erstatte Value med Status i et script? (Veldig takknemlig for hjelp, lærer litt her gang ). Endret 9. oktober 2017 av TomB Siter
Tverfyll Skrevet 11. oktober 2017 Skrevet 11. oktober 2017 Beklager, har vært litt opptatt de siste dagene. Jeg kan ikke finne funksjonen som henter ut status på device, men kanskje @Moskus har noen tips? Alternativt kan du legge inn en enkel IF-statement som skriver teksten ut fra verdien. Dette er dog en dårlig løsning, da det er lite gjenbruksvennlig hvis du ønsker å logge andre ting med samme scriptet. Siter
Moskus Skrevet 11. oktober 2017 Skrevet 11. oktober 2017 1 time siden, Tverfyll skrev: Jeg kan ikke finne funksjonen som henter ut status på device, men kanskje @Moskus har noen tips? Det er flere måter å lage en string på i HomeSeer, så man må ta hensyn til alt. Se LogStatusToFile.vb her. 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.