Loggning med HTTP

Loggning för spårbarhet och felsökning.

fingerPrint

Jag har nu skapat ett program för att logga digitala händelser hemma. Jag har valt att nyttja HTTP för att skicka data eftersom EPS8266 projektet kommer att skicka data med http.

Senast uppdaterad

  • 2015-07-26 – V1.3.1 – Flytt av loggfiler, Möjlighet att logga till egna filer, möjlighet att läsa tillbaka loggar via http, starta programmet från en .config  fil (samt mycket mer)
  • 2015-07-24 – V1.2 – Extra sätt att logga, Optimering av kod, buggfix
  • 2015-07-23 – V1.1 – Släpper första versionen av programmet

Syftet med programmet är att få spårbarhet och ett universellt gränssnitt oavsett källsystem (Windows, Linux, Vera, esp8266, Arduino…).

Jag delar med mig av programmet och uppdatera det allt eftersom jag lägger till funktioner (Går att ladda hem här: Loggning eller längst ner på sidan).

V1.3.1 – Utöver att programmet loggar data så går det att läsa tillbaka data från webbläsaren med! Samt logga Macadresser till egna filer (http://localhost:81/AA:BB:CC:DD:EE:FF/dindata/dittvärde/)

ReadLogdata

Genom att skriva ”http://DittIP:DinPort/readlog/default”, detta läser upp all data ur default loggen från ”servern”, skriver man istället ”http://DittIP:DinPort/readlog/AA:BB:CC:DD:EE:FF” så hämtas all information om just den sensorn.

Genom att högerklicka på .exe filen och välja ”kör som administratör” startas en http lyssnare default på ”http://localhost:81/”. Genom att sedan öppna en webbläsare och skriva http://127.0.0.1:81/demo så loggas informationen till Data.log som skapas i mappen där programmet startas.

ProgramExempelV132

Exemplet ovan är startat med ett argument loggning.exe http://127.0.0.1:81/  (Tänk på att brandväggen måste tillåtas att ta emot anrop på porten 81 i detta exemplet med)

ConfigFilen

Genom att ändra i loggning.exe.config (markerade värdet på bilden, missa inte att ditt ip eller namn måste sluta på ”/” efter porten.

[poll id=”10″]

LoggningProgram

Applikationen består nu av följande:

  • Loggning.exe – Applikationen som kör loggning.
  • loggning.exe.config (ändra det fetmarkerade till önskad lyssnare en gång. <add key=”HTTPLyssnare” value=”HTTP://localhost:81/”/>

 

Exempel på jag logga just nu:

Vera rapporterar in allt som händer med hjälp av LUUP kod i scenes (ändra Loggserver och 86 till ditt ip och din port om du vill logga från din vera):

  • luup.inet.wget(”http://Loggserver:86/Vera/Pellets/Lite Pellets Kvar”)

Mina ESP8266 skickar data till loggservern direkt.

Information om datorstatus skickas via Powershell och invoke-webrequest.

Programmet klarar just nu (v1.2 – 2015-07-24):

 

  • (V1.3.1 – 2015-07-26):
  • Alla loggar sparas nu till .\Data\Data.log
    Unika Macadresser sparas till egna filer (AABBCCDDEEFF.log) (om macadressen som skickades är AA:BB:CC:DD:EE:FF)
    Lägger till stöd för att läsa tillbaka loggar via webburl (http://serverurl:port/readlog/default)
    Lägger till stöd för att läsa tillbaka MAC loggar via webburl (http://serverurl:port/readlog/AA:BB:CC:DD:EE:FF)   – Både ”-” och ”:” fungerar i Macadresser
    Lägg till så att programmet tar argument från en XML fil i mappen där programmet startas (loggning.exe.config).
    Buggfix – Mer än 40 annrop / sek kunde få programmet att stanna, detta är nu åtgärdat
    Optimering av C# kod
    Lägger till stöd för att logga varje mac i en egen extra fil. görs genom (http://localhost:81/AA:bb:cc:dd:ee:dd/dindata/värde) eller (http://localhost:81/AA-bb-cc-dd-ee-dd/dindata/värde)

 

  • (V1.2 – 2015-07-24):
    Adresser som börjar med en Mac adress loggas i egna filer (Exempel http://localhost:81/aa:cb:cc:de:ee:fd/D2/+11.22) (Skapar en egen loggfil med namnet ”aacbccdeeefd.log”)
    Regexp filter för att verifiera att det är en korrekt Mac adress som skickats.
    buggfix ( ett extra ” | ” är nu borta ur loggar)
  • (v1.1 – 2015-07-22):
    Multipla http anrop
    starta med argument (http url) – exempel: Loggning.exe http://dinDatorsNamn:82/
    Loggning till fil (skapas i mappen där programmet startas data.log)
    Översätter åäö och mellanslag
    Ersätter “/” med “|” tecken.
    Skriver ner en tidsstämpel med millisekund inräknat.
    Kontrollerar att man startar det som administratör
    Ska gå att köra som en tjänst med argument (har inte hunnit testa)
    För att skicka data till loggprogrammet så startar du en webbläsare och skriver samma URL som står efter ”du har startat loggning på följande adress:

SkickaDatamedChrome0

Det går även att transportera text innehållande mellanslag och Svenska tecken till loggservern

 

När datat skickas från klienten så ersätts tecknen i webbläsaren automatiskt, detta översätts sedan åter igen på servern. Om datat loggats på loggservern så returneras ett http 200 (samt ett ”OK”), vilket gör att jag enkelt kan lägga till en kontroll i Arduino, vera och esp8266 att data skrivits korrekt.

SkickaDatamedChrome

Datat loggades OK

 

Loggfilen Data.log innehåller sedan loggning på följande sätt:    (tidpunkt för loggning)   |   (klientens IP adress)  |   ( Data som mottagits, varje ”/” översätts till en ny ”|”  )

LagratData

 

 

Vill du själv köra loggning med programmet följ då guiden nedan? 

  1. Ladda hem ”loggning.zip” (lite längre ner)
  2. Packa upp zip filen och ändra i genvägen så att den stämmer med ditt ip eller datornamn. Välj sedan en ledig port (jag körde 81)
    startlink
  3. Högerklicka på genvägen och kör det som administratör.
  4. Gör ett undantag i brandväggen som tillåter vald port att ta emot data.
  5. Klart 🙂

Hela programmet finns att ladda när här: Loggning  (Nuvarande version är 1.2)

 

Jag ska absolut inte ta creds för att ha skrivit delen som hanterar http anrop/svar. Den koden kommer från David’s Blog som har publicerat hela källkoden (Stort tack!).

Det jag har skrivit är ramverket för loggning och översättning av datat ska loggas, samt påbörjat lite filter och checker för hur och vart data ska loggas.

Eftersom detta är ett program jag själv kör så försöker jag få det så stabilt och snabbt som möjligt, men man kör det självklart på egen risk.

Får du det inte att fungera eller har några bra tips på saker du skulle vilja ha med i programmet? Skriv gärna en kommentar eller kontakta mig så kollar jag om det är möjligt.

Dela och gilla gärna detta så att fler får se att vi finns och kanske hittar ett bra verktyg för felsökning och loggning  🙂

Samma gäller för alla som kör med Google+

 

 

// Ispep

10 reaktioner på ”Loggning med HTTP”

  1. Pingback: Guide – Windows IoT Core |

  2. Pingback: Guide – Logga till Thingspeak |

  3. Pingback: Projekt – ESP8266 Wifi Tempertursensor |

  4. Pingback: Projekt - Rörelsesensor Till Vera Med ESP8266 12E |

  5. Pingback: Automatiserar - Gratis Program För Att Skicka Sms |

  6. Pingback: Guide: Hemautomation med Node-Red |

  7. Helge Fabricius

    Hej, superbra projekt.
    Jag kör dock linux på en liten Asus burk med bland annat MySQL så jag hade gärna sett det som ett python program.
    Jag hade också valt att lagra datan i MySQL databasen

    1. Hej
      Om du använder Linux tror jag nästan det är lättast att nyttja ett simpelt python script som du nämner, det finnas en hel del färdiga på internet. I framtiden funderar jag på att göra något mot Linux för Dot.net core och Powershell, men det är inte aktuellt på länge tyvärr.

      // Ispep

  8. Pingback: Vad är Tasker och behöver du det? |

  9. Pingback: Flows & Apps i Homey 2.0 | Lösningar för smarta hem

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *