Temperaturvisning på hemsida (Raspberry-Pi)

Berätta om dina pågående projekt.
Ranstam
Inlägg: 456
Blev medlem: 17 november 2007, 21:20:16
Ort: LUND

Re: Temperaturvisning på hemsida (Raspberry-Pi)

Inlägg av Ranstam »

En säkring är en bra ide! ska se om en sådan går att ordna fram

Nu har jag gjort lite ändringar i koden, framförallt att "trasiga" värden inte loggas och att värdena loggas exakt prick varje minut(inte med sleep-fördröjning som tidigare). Problemet verkar vara att flyttals jämförelser i python är opålitliga.

Kod: Markera allt

mport datetime;
import time;
import commands

def readone():
	tfile = open("/sys/bus/w1/devices/28-0000040db5a9/w1_slave")
	text = tfile.read()
	tfile.close()
	secondline = text.split("\n")[1]
	temperaturedata = secondline.split(" ")[9]
	temperature = float(temperaturedata[2:])
	temperature = temperature / 1000
	if temperature == -0.062:
		return("#error")
	else:
		return(temperature)

def readtwo():
        tfile = open("/sys/bus/w1/devices/28-0000040de8fc/w1_slave")
        text = tfile.read()
        tfile.close()
        secondline = text.split("\n")[1]
        temperaturedata = secondline.split(" ")[9]
	temperature = float(temperaturedata[2:])
        temperature = temperature / 1000
	if temperature  == -0.062:
		return("#error")
	else:
	        return(temperature)

def getdate():
	date = datetime.datetime.now()
	return(unicode(date.replace(microsecond=0)))

def logg():
	if readtwo() == -0.062 or readone() == -0.062:
		print "error!"
		file = open("logg.txt", "a")
		file.write("#ERROR")
		file.write("\n")
	else:
		file = open("logg.txt", "a")
                file.write(str(getdate()))
                file.write(" ")
                file.write(str(readone()))
                file.write(" ")
                file.write(str(readtwo()))
                file.write("\n")
		
def copy():
		commands.getstatusoutput('gnuplot logg.pg')
		commands.getstatusoutput('gnuplot logg3d.pg')
		commands.getstatusoutput('gnuplot logg3h.pg')
		commands.getstatusoutput('gnuplot logg1d.pg')
   	        commands.getstatusoutput('gnuplot logg7d.pg')




def main():
	
	while 1 > 0:
		d = datetime.datetime.now()
		if d.second == 59:
	 		logg();
			copy();
main();
MiaM
Inlägg: 10225
Blev medlem: 6 maj 2009, 22:19:19

Re: Temperaturvisning på hemsida (Raspberry-Pi)

Inlägg av MiaM »

En ren gissning gällande flyttalsberäkningarna:

Utan att faktiskt veta något alls om python (mer än att det är ett interpreterande programmeringsspråk eller nåt sånt :wink: ) så gissar jag att det är dynamiskt typat. Kan det vara så att du måste tvinga fram flyttalsberäkningar och att python gör heltalsberäkning om du matar in tal utan decimaler (men gör t.ex. en division)?

Annars kan du kanske i värsta fall räkna allt som heltal och klämma in decimalkommat på strängnivå.
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43205
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Re: Temperaturvisning på hemsida (Raspberry-Pi)

Inlägg av sodjan »

> Problemet verkar vara att flyttals jämförelser i python är opålitliga.

Det är en så att säga inbyggd finess i flyttal, det har inget med Python som sådant att göra.
Man måste "ta höjd" och se till att ha marginal för eventuella avrundningseffekter.

Tänker du t.ex på detta :

Kod: Markera allt

   temperature = temperature / 1000
   if temperature == -0.062:
      return("#error")
   else:
      return(temperature)
Det är ju ett typexempel på ett fall där jämförelsen är osäker.
Jag är ganska säker på att 0.062 inte går att representera exakt binärt.
Det är sannolikt bättre att t.ex göra :

Kod: Markera allt

   if temperature == -62:
      return("#error")
   else:
      return(temperature/1000)
Ranstam
Inlägg: 456
Blev medlem: 17 november 2007, 21:20:16
Ort: LUND

Re: Temperaturvisning på hemsida (Raspberry-Pi)

Inlägg av Ranstam »

Nu har jag monterat den nya spänningsregulatorn och testat med en Raspberry, systemet fungerar som det är tänkt. Nu återstår det att se hur bra Wifi fungerar innifrån plåtlådan... alternativt får det vara kabel. Fortsatt utprövning får också visa huruvida värmeutveckingen i skåpet blir ett problem. Återkommer med bilder när installationen är klar.

Spänningsregulatorn är denna http://www.electrokit.com/switchregulator-5v-1a.45051 tänkte först använda en vanlig 7805 men kom snabbt fram till att det skulle bli välldans mycket spillvärme inne i skåpet när man matar med 19v(gammalt nätagg från en bärbar dator)
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43205
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Re: Temperaturvisning på hemsida (Raspberry-Pi)

Inlägg av sodjan »

Och hur var det med de opålitliga flyttals jäömförelserna?
MiaM
Inlägg: 10225
Blev medlem: 6 maj 2009, 22:19:19

Re: Temperaturvisning på hemsida (Raspberry-Pi)

Inlägg av MiaM »

Ja, ytterligare ett skäl till att räkna med heltal och "måla" kommatecknet på strängnivå istället för att räkna med flyttal.
Ranstam
Inlägg: 456
Blev medlem: 17 november 2007, 21:20:16
Ort: LUND

Re: Temperaturvisning på hemsida (Raspberry-Pi)

Inlägg av Ranstam »

Den befintliga koden verkar nu kunna solla ut samtliga felvärden, så det problemet är löst! Nu är det bara lite meck som återstår med placeringen i lådan, diverse saker "krockar" med varandra.

Raspberry Pi på UPS-kraft!
Bild
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43205
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Re: Temperaturvisning på hemsida (Raspberry-Pi)

Inlägg av sodjan »

> Den befintliga koden verkar nu kunna solla ut samtliga felvärden,

Har alltså koden börjat bete sig annorlunda utan någon ändring?
Ranstam
Inlägg: 456
Blev medlem: 17 november 2007, 21:20:16
Ort: LUND

Re: Temperaturvisning på hemsida (Raspberry-Pi)

Inlägg av Ranstam »

Ja :)

Jag gjorde en rad försök att kunna sålla ut just felvärdena, vilket inte fungerade. Därpå gjorde jag försök att sortera ut alla värden mellan 5 och 30grader vilket inte heller fungerade. Detta testades både med flyttal och heltal men fungerade inte alls. Helt plötsligt efter lite omändringar i koden började det fungera tillfredsställande utan synbar anledning.

Antingen så har det gått troll i koden, eller så har jag missat något fundamentalt i python programering.
MiaM
Inlägg: 10225
Blev medlem: 6 maj 2009, 22:19:19

Re: Temperaturvisning på hemsida (Raspberry-Pi)

Inlägg av MiaM »

... eller så har det blivit väderändring och kondens/fukt på utomhusgivaren har torkat bort? :)


Vilket år som helst borde man orka läsa på om nån versionshanterare (typ git rekomenderas väl nu för tiden), då kan man lättare backa till äldre version.

Ja, hade alla OS varit lika bra som VMS så hade man såklart haft inbyggt system för att hantera flera versioner av samma fil...
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43205
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Re: Temperaturvisning på hemsida (Raspberry-Pi)

Inlägg av sodjan »

Hade inte kunnat säga det bättre själv... :-)
Användarvisningsbild
björn
EF Sponsor
Inlägg: 2570
Blev medlem: 29 mars 2004, 23:09:55

Re: Temperaturvisning på hemsida (Raspberry-Pi)

Inlägg av björn »

Man skall givetvis inte hålla på med att sortera ut felaktiga värden, se istället till att inte få felaktiga värden från 1-wire bussen. Felaktiga läsningar beror på något fel.

Jag har själv med kopplat upp en Pi för loggning av värmesystemet och elförbrukning mm, jag använder även Pin för att styra värmepumpen.
Min vp har original en styrning som endast kör med fast kondensering, genom att styra till och frånslagstemperaturer med pin istället så kan jag nu ha flytande kondensering.
Jag styr även shunten med med kurva i pi så jag kan hålla tankens temp på en vald temp över framledningstemperaturen, fungerar bra.

/B
Ranstam
Inlägg: 456
Blev medlem: 17 november 2007, 21:20:16
Ort: LUND

Re: Temperaturvisning på hemsida (Raspberry-Pi)

Inlägg av Ranstam »

Såja, nu UPS matningen klar!

Wifi fungerar fint med locket stängt, bortfall av nätspänning påverkar inte raspberryn och temperaturen håller sig på en rimlig nivå(ca 30grader) utan någon kylning när man kör på nätanslutning.

Bild

Nästa del av projektet får nog bli att se över one-wire nätet som påtalades. En del fel har inträfat där programmet stannat pga filerna som ska läsas har saknats. Givaren behöver nog lite bättre isolering och sladden behöver göras lite snyggare.

Jag kom också på en del funktioner som jag gärna skulle vilja bygga in, bland annat batteriövervakning. Tyvärr saknar ju raspberryn ADomvandlare, men det finns säkert i2c - ADomvandlare.
MiaM
Inlägg: 10225
Blev medlem: 6 maj 2009, 22:19:19

Re: Temperaturvisning på hemsida (Raspberry-Pi)

Inlägg av MiaM »

Bäst är givetvis att både se till att inte få felaktiga data men också se till att koden klarar att hantera felaktiga data.

M.v.h. Captain Obvious :)
Ranstam
Inlägg: 456
Blev medlem: 17 november 2007, 21:20:16
Ort: LUND

Re: Temperaturvisning på hemsida (Raspberry-Pi)

Inlägg av Ranstam »

Nu är servern försedd med säkringar från biltema som det tipsades om. 1st från nätagget och 1st från batteriet, båda på 2A. Dock så drar enheten bara runt 300mA i under dom 5min som jag mätte. El-installationen är också lite uppsnyggad med straps och sådant.

Nästa steg blir nog att sätta ett kretskort med batteri/spänningsövervakning i dörren. Det hade varit kul att knåpa ihop något med op-förstärkare, det var ett tag sedan jag pysslade med dessa. Jag hade tänkt rigga upp ett par komparatorer för att hålla koll på batterispänning samt om man befinner sig i batteridrift.

Är det någon som kan rekomendera en OP-förstärkare för 3,3V med sk. "rail to rail"(single supply) egenskaper?

Bild
Skriv svar