Temperatur

När man har en dator till akvariet så kliar det lite i fingrarna, det finns ju mer att göra än att styra ljuset! Först ut blev en enkel sak, att mäta vattentemperaturen i karet. Jag införskaffade en DS18B20 som är en vanlig sensor med 1-wire-gränssnitt. Med hjälp av instruktionerna på Computer Laboratory var det enkelt att löda ihop den med ett pull-up-motstånd och koppla in den på min Pi.

DSC_0198

Jag fick i och för sig flytta på styrningen av ett av reläerna och ändra lite i koden till ljusstyrningen men det var ett mindre bekymmer. Då var det lite jobbigare att den inte identifierades som den skulle… Efter ett tag hittade jag lösningen, version 3.18 av kerneln ändrade hanteringen av 1-wire och man är tvungen att lägga till ett par rader i /boot/config.txt:

# 1-wire settings
dtoverlay=w1-gpio,gpiopin=4

Efter omstart gick det bra att söka upp sensorn med två modprobe-kommandon men de vill inte skriva in varje gång utan istället la jag in det permanent i /etc/modules:

w1-gpio
w1-therm

För att kunna se temperaturen enkelt och på sikt presentera den på min spegel installerade jag Apache på min Pi med

apt-get install apache2

Sedan gick det enkelt att hacka ihop ett litet Python-skript som skriver aktuell temperatur varje minut till Apaches standardfil:

#!/usr/bin/python
import time

while True:
	tfile = open("/sys/bus/w1/devices/28-0000065bd235/w1_slave", 'r')
	text = tfile.read()
	tfile.close()

	secondline = text.split("\n")[1]
	temperaturedata = secondline.split(" ")[9]
	temperature = float(temperaturedata[2:])

	temperature = temperature / 1000
	wfile = open("/var/www/index.html", 'w')
	text = wfile.write(str(temperature))
	wfile.close()

	time.sleep(60)

Nu ska det bara kompletteras med en JSON-variant och integreras i spegeln också men det får bli en annan dag.

Share