Ennek a cikknek a fabrikálásába azért kezdtem bele, mert nem nagyon találtam Ubuntu 15.04 alá igazán jó leírásokat arról, hogy a DS18B20-at hogyan illesszem a One-wire-el a Bananapihez. Nem annyira vészes itt sem, de kicsit másabb mint a neten fellelhető leírások zöme ami Bananian alá vagy épp más Debian alapú oprendszer alá készültek. Lássuk hogyan működik: Bananapi – DS18B20 és python webesen
Első lépésben telepítsük a megfelelő programokat.
sudo apt-get update apt-get install libusb-1.0-0-dev sudo apt-get install sunxi-tools
Ha ezzel megvagyunk akkor, akkor nyissunk egy terminált, és hajtsuk végre a következő műveleteket:
Első lépés:
Itt most megnéztük mi a boot partíciónk neve. Mert ezt a partíciót kell felcsatolni.
Második lépés:
Itt felcsatoltuk a boot partíciót az „mnt” mappába, és kilistáztuk a benne lévő fájlokat.
Harmadik lépés:
Itt most beléptünk a „/usr/share/sunxi-tools” mappába és átkonvertáltuk a „script.bin” fájlt „fex” formátumba. Majd kilistáztuk a fájlokat.
Negyedik lépés:
nano script.fex
Ebben a lépésben szerkesztjük a „script.fex” fájlt és hozzáadjuk az alsó 4 sort. Ennek megfelelően kell majd a bekötést is végrehajtani. GPIO0, GPIO1, GPIO7 valamelyikére. Ezt most nem részletezném, mert ez annyira nem bonyolult.
Ötödik lépés:
fex2bin script.fex /mnt/script.bin umount /mnt ls /sys/bus/w1/devices/
Végül 6. lépésben:
Itt láthatjuk, hogy az eszközünk kommunikál és azt is, hogy 23,750 Celsius fok van a lakásban.
Nah és ennek fejébe jön most a python kód, ami webes környezetbe illeszti az egészet.
#!/usr/bin/python
import os
import time
import urllib2
os.system('modprobe w1-gpio')
os.system('modprobe w1-therm')
temp_sensor = '/sys/bus/w1/devices/28-0315a854a8ff/w1_slave'
def temp_raw():
f = open(temp_sensor, 'r')
lines = f.readlines()
f.close()
return lines
def read_temp():
lines = temp_raw()
while lines[0].strip()[-3:] != 'YES':
time.sleep(0.2)
lines = temp_raw()
temp_output = lines[1].find('t=')
if temp_output !=-1:
temp_string = lines[1].strip()[temp_output+2:]
temp_c = float(temp_string) / 1000.0
temp_f = temp_c * 9.0 / 5.0 + 32.0
return temp_c
#return temp_c, temp_f
while True:
temperature = read_temp()
temp_string = str(round(temperature,3))
link = 'http://localhost/temp.php?temp='+temp_string
#print link
resp = urllib2.urlopen(link)
html = resp.read()
print html
#print(read_temp())
time.sleep(60*15-1)
Itt a kódot értelemszerűen kell átalakítani, mert az eszköz azonosítója nyilván nem az lesz mint nálam, plusz ha valaki nem localhostra akarja kinyomni ezeket az adatokat, akkor persze az URL-t is át kell írni.
Ami pedig a webes részt illeti, egy korábbi cikkben már körbeírtam a kutyafittyet. Ezt és a webes fájlokat megtaláljuk <-ITT->
A beállítások és az előző cikkben leírtak teljes mértékben kompatibilisek a fent ismertetett python script-el. Lustaság fél egészség, senki se dolgozzon kétszer. Remélem mindenkinek hasznos volt ez a kis szösszenet. Akinek nem az Send me Email.
Azonnal megvásárolható a webshopban:






