先參考DHT 22的溫溼度計及以SQLITE當資料庫 這兩篇,接著我們就來實作溫溼度紀錄器。
編輯一個python 程式 DHT2SQL.py
#!/usr/bin/python
import Adafruit_DHT
import sqlite3
def insertsql(temp,humi):
conn = sqlite3.connect("/var/www/cgi-bin/envirm.db")
cursor = conn.cursor()
cursor.execute("insert into DHT22 Values(datetime('now','localtime'),'room1'," + str(temp) + "," + str(humi) + ")")
conn.commit()
# Parse command line parameters.
sensor_args = { '11': Adafruit_DHT.DHT11,
'22': Adafruit_DHT.DHT22,
'2302': Adafruit_DHT.AM2302 }
if len(sys.argv) == 3 and sys.argv[1] in sensor_args:
sensor = sensor_args[sys.argv[1]]
pin = sys.argv[2]
else:
print('usage: sudo ./DHT2SQL.py [11|22|2302] GPIOpin#')
print('example: sudo ./DHT2SQL.py 2302 4 - Read from an AM2302 connected to GPIO #4')
sys.exit(1)
humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
if humidity is not None and temperature is not None:
print('Temp={0:0.1f}* Humidity={1:0.1f}%'.format(temperature, humidity))
insertsql(temperature,humidity)
else:
print('Failed to get reading. Try again!')
sys.exit(1)
先測試是否沒問題:
如沒問題就放到crontab,如下每2分鐘就自動記錄一次。
樹哥的樹莓派(PI)
2017年3月31日 星期五
2016年8月22日 星期一
DHT 22的溫溼度計
DH 22是一個含有已校準數位信號輸出的溫濕度復合傳感器,其特行如下:
測濕範圍: 0-100%RH
測溫範圍: -40~80℃
測濕精度: ±2%RH
測溫精度: ±0.5℃
sudo ./AdafruitDHT.py 22 4
其中第1個參數 : 決定您使用的感測器。
11 : DHT 11 (此種溫濕度感測器很便宜,但不太準確,不建議)
22 : DHT 22
2302 : AM2302
其中第2個參數 : GPIO接腳,如下圖(此例子是接在GPIO 4):
測濕範圍: 0-100%RH
測溫範圍: -40~80℃
測濕精度: ±2%RH
測溫精度: ±0.5℃
硬體接線圖
安裝
sudo git clone https://github.com/adafruit/Adafruit_Python_DHT.git
cd Adafruit_Python_DHT
sudo apt-get update
sudo apt-get install build-essential python-dev
sudo python setup.py install
cd examples
sudo ./AdafruitDHT.py 22 4
其中第1個參數 : 決定您使用的感測器。
11 : DHT 11 (此種溫濕度感測器很便宜,但不太準確,不建議)
22 : DHT 22
2302 : AM2302
其中第2個參數 : GPIO接腳,如下圖(此例子是接在GPIO 4):
有跑出溫溼度數據表示成功了!
2016年8月21日 星期日
以SQLITE當資料庫
SQLite是一個很小的 C 語言程式庫,且免費的資料庫軟體,因本身就完全包含資料庫引擎的功能,可以嵌入至其他程式中,完全不用額外的設定。
SQLite 屬於無伺服器架構 (Serverless),因此不需要安裝伺服器在主機上,提供了單檔案的資料庫功能。對於資源要求不高,應該是樹梅派當資料庫的不錯選擇吧(雖然有很多人安裝使用mysql)。
蘋果公司OS X自從10.4後把SQLite這套相當出名的資料庫軟體,放進了作業系統工具集裡。可見SQLite這套免費且實作大部分SQL-92標準的資料庫軟體,已漸漸受到矚目及歡迎。
SQLite 官網 https://sqlite.org/
SQLite logo:
就為大家介紹則怎麼在樹梅派使用SQLite,先從安裝開始吧!
sudo apt-get install sqlite3
新增一個資料庫:
sqlite3 envirm.db
先來熱身一下,做一些練習吧!
新增一個TABLE
CREATE TABLE DHT22(ttime DATETIME,zone TEXT,temp NUMERIC,humi NUMERIC);
插入(INSERT)資料於TABLE
INSERT INTO DHT22(ttime,zone,temp,humi) Values('2016-08-20 16:34:53','room1',28.7,73.4);
查詢(SELECT)出資料
SELECT * FROM DHT22 WHERE ttime > '2016-08-20 00:00:00';
更新(UPDATE)資料
UPDATE DHT22 SET ttime= datetime('now','localtime'),temp=26.1,humi=27.5 WHERE ttime='2016-08-20 16:34:53';
刪除(DELETE)資料
DELETE FROM DHT22 WHERE ttime = '2016-08-20 16:34:53';
刪除TABLE
DROP TABLE DHT22;
SQLite 屬於無伺服器架構 (Serverless),因此不需要安裝伺服器在主機上,提供了單檔案的資料庫功能。對於資源要求不高,應該是樹梅派當資料庫的不錯選擇吧(雖然有很多人安裝使用mysql)。
蘋果公司OS X自從10.4後把SQLite這套相當出名的資料庫軟體,放進了作業系統工具集裡。可見SQLite這套免費且實作大部分SQL-92標準的資料庫軟體,已漸漸受到矚目及歡迎。
SQLite 官網 https://sqlite.org/
SQLite logo:
就為大家介紹則怎麼在樹梅派使用SQLite,先從安裝開始吧!
sudo apt-get install sqlite3
新增一個資料庫:
sqlite3 envirm.db
先來熱身一下,做一些練習吧!
新增一個TABLE
CREATE TABLE DHT22(ttime DATETIME,zone TEXT,temp NUMERIC,humi NUMERIC);
插入(INSERT)資料於TABLE
INSERT INTO DHT22(ttime,zone,temp,humi) Values('2016-08-20 16:34:53','room1',28.7,73.4);
查詢(SELECT)出資料
SELECT * FROM DHT22 WHERE ttime > '2016-08-20 00:00:00';
更新(UPDATE)資料
UPDATE DHT22 SET ttime= datetime('now','localtime'),temp=26.1,humi=27.5 WHERE ttime='2016-08-20 16:34:53';
刪除(DELETE)資料
DELETE FROM DHT22 WHERE ttime = '2016-08-20 16:34:53';
刪除TABLE
DROP TABLE DHT22;
PI3設定WEB Server(Apache)
在PI3可以安裝apache2當WEB Server,下安裝指令
sudo apt-get install apache2 -y
如完成可以 http://localhost或http://IP,出現下面畫面就表示成功了。
須注意預設首頁在
/var/www/html/index.html。
python 使用sqlite當資料庫無法執行UPDATE問題
在raspberry pi 3 使用apache2 當web server,使用sqlite3當資料庫,以python 當網頁CGI程式,其中有使用SQL command 去update 資料庫,卻一直無法UPDATE成功(以SELECT撈資料是正常的),捕捉一下訊息出現'attempt to write a readonly database'錯誤訊息,原因為apache2的默認賬戶是www-data,也不允許使用root啓動,對於網頁路徑的檔案操作權限可能會不足,所以需要修改owner加入www-data權限,需修改sqlite的資料庫檔案及其目錄owner權限如下範例:
sudo chown www-data:www-data /srv/mysite
sudo chown www-data:www-data /srv/mysite/DATABASE.sqlite
2016年8月14日 星期日
在Apache 以Python 視為 CGI 來源來執行
在Raspbian上安裝Apache2後想要以Python取代成為CGI的執行來源,一直不能成功,後來才解決,特記錄過程如下:
首先Google都說要修改/etc/apache2/sites-available下的000-default.conf檔,增加以下設定
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
在/var/www/cgi-bin/下放了一段hi.py測試程式:
apache也restart了,可是一直顯示無法解譯Python的訊息(一直將#!usr/bin/python當文字輸出)
,加以下指令終於搞定!
首先Google都說要修改/etc/apache2/sites-available下的000-default.conf檔,增加以下設定
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
在/var/www/cgi-bin/下放了一段hi.py測試程式:
apache也restart了,可是一直顯示無法解譯Python的訊息(一直將#!usr/bin/python當文字輸出)
,加以下指令終於搞定!
sudo a2enmod cgi
sudo service apache2 restart
原來是mod_cgi module沒載入。
在 /etc/apache2/mods-enabled/ 有一個 symlink cgid.load。
假如沒有這個
symlink,就要執行
a2enmod cgi這個指令產生他。
2016年8月3日 星期三
修改PI 3解析度,以連接7吋LCD顯示幕
我的作業系統為Raspbian,Google一下發現只要修改TF卡上的config.txt,在最後新增以下代碼,果然可以正常顯示了。
- max_usb_current=1
- hdmi_group=2
- hdmi_mode=1
- hdmi_mode=87
- hdmi_cvt 1024 600 60 6 0 0 0
訂閱:
文章 (Atom)