Manipulere Switch King SQLite database direkte

Supportfrågor för server och klient (Windows, iPhone, Android, Linux).
Forum rules
För att kunna hjälpa dig med supportfrågor behöver vi så mycket information som möjligt.
Innan du skapar en ny tråd, läs gärna:
viewtopic.php?f=10&t=20
Post Reply
paalkr
1 star
1 star
Posts: 11
Joined: Sun 12 Jan 2014, 10:10

Manipulere Switch King SQLite database direkte

Post by paalkr » Tue 29 Apr 2014, 22:25

Hei

Jeg har laget noen python script som manipulerer på sensordata fra en Oregon regnsensor, blant annet summerer nedbør siste time, siste 24 timer, siste måned osv. Jeg bruker Event Ghost til å fyre av scriptene for å gjøre nødvendige beregninger. Jeg ønsker så å presentere de kalkulerte verdiene som en datasource i Switch King, og lurer på hvilken metode som er minst belastende for serveren? Slik jeg ser det har jeg følgende offisielle metoder.
  • Lage REST datasource i SK og sende inn data fra python til SK den veien. Dette har jeg fått til å fungere greit med HTTP autentisering. Men, jeg tror det er en litt ressurskrevende måte å gjøre det på :O
  • Sette opp en filbasert datakilde i SK, og fra python oppdatere en fil med beregnede verdier som SK så importerer når det er endringer i filen. Har ikke prøvd dette, men det er jo enkle greier.
Men, SK bruker jo en rimelig enkel SQLite database. Å arbeide med SQLite fra python er jo ingen komplisert sak. Jeg har laget et script som skriver inn egne verdier i DataSourceValues tabellen. Det ser tilsynelatende ut til å fungere. Radene kommer opp korrekt med SQL spørringer mot basen, men SK vil kun vise de radene den selv har lagret i tabellen. Jeg benytter selvfølgelig en DataSourceID som er gyldig (og opprettet fra SK), formatert alle verdiene i DATETIME korrekt (tilsynelatende).

Jeg er klar over at det jeg prøver å gjøre er på siden av det som er supportert, men det vil jo være den absolutt minst ressurskrevende metoden å mate data inn i SK ;) Dessuten er det moro å "hacke" litt under panseret :D Er det noen spesielle triks som må gjøres for at SK skal plukke opp innholdet jeg selv har stappet inn i DataSourcValues tabellen? Alle verdier som SK selv har skrevet til den samme DataSoruceID vises, men mine records bare utelates fra GUI i SK. De kommer heller ikke ut ved eksport av datakilden til en fil.

mvh
PK

krambriw
4 stars
4 stars
Posts: 336
Joined: Thu 19 Jul 2012, 19:41

Re: Manipulere Switch King SQLite database direkte

Post by krambriw » Wed 30 Apr 2014, 06:04

Nu spekulerar jag bara...men kan det ha att göra med att SK i run time egentligen arbetar med data som finns i arbetsminnet (RAM) och inte med data i databasen???

Har du provat att starta om SK server och kontrollerat därefter om SK visar ditt data? Eller om det är borta (överskrivet)?

mvh Walter

paalkr
1 star
1 star
Posts: 11
Joined: Sun 12 Jan 2014, 10:10

Re: Manipulere Switch King SQLite database direkte

Post by paalkr » Thu 01 May 2014, 23:27

Takk, du har helt rett. SK leser hele basen inn i minnet runtime, og skriver endringer bare nye records til basen fortløpende. Men, SK leser ikke inn nye data uten en omstart hvis data "oppstår" i basen i mellomtiden.

Dette virker på meg som en god ide på små databaser, men mindre klokt når databasen blir stor :O Min database var på omlag en million rader, og SK slet litt med å håndtere den ;-) Ja, jeg har mange sensorer i tillegg til værstasjon med nedbør og vind :-) , og da blir det mye data selv om jeg har sagt at data ikke skal lagres hele tiden.

Har endret på en del av python skriptene jeg kjører i Event Ghost som blandt annet beregner nedbørsstatistikk og vindsektorer til å kun skrive til SK rest servicene hvis ny beregnet verdi er forskjellig fra den sist lagrede verdien i SK. Dette reduserte datamengden betydelig. Jeg brukte SQL for å rydde i basen og nå funker ting egentlig greit.

Takk for tipset!

Mvh
PK

Sent fra min HTC One via Tapatalk

Martin
Administrator
Administrator
Posts: 2655
Joined: Tue 09 Nov 2010, 20:25

Re: Manipulere Switch King SQLite database direkte

Post by Martin » Sun 04 May 2014, 16:53

Switch King läser inte från databasen hela tiden - däremot då och då. Det sättet som Switch King jobbar mot databasen i v3 och lägre är inte anpassat för stora datamängder och förändringar är på gång.
Att gå direkt mot databasen för att skriva kommer dock aldrig att vara någon bra idé - antingen bör man gå via publicerade gränssnitt (API) eller använda plugins.
Martin | Switch King

Post Reply

Who is online

Users browsing this forum: Bing [Bot] and 14 guests