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

Logge events til fil


TomB

Anbefalte innlegg

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.

Lenke til kommentar
Del på andre sider

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.

Lenke til kommentar
Del på andre sider

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

Lenke til kommentar
Del på andre sider

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.

Lenke til kommentar
Del på andre sider

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?

Lenke til kommentar
Del på andre sider

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=)

 

  • Thanks 1
Lenke til kommentar
Del på andre sider

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å ;)

Lenke til kommentar
Del på andre sider

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 av TomB
Lenke til kommentar
Del på andre sider

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.

Lenke til kommentar
Del på andre sider

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.