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: