カテゴリー別アーカイブ: raspberry pi

[raspberry pi]djangoをwsgiでapache2によりdeployまで

raspberry pi
raspbian liteにsshで接続までできているものとする

1. 必要なモジュールをインストール
$sudo apt install apache2
$sudo apt install libapache2-mod-wsgi-py3
$sudo apt install django

2. djangoのプロジェクト作成
$sudo django-admin startproject mysite

3. mysite/mysite/wsgi.pyにパスを追加
import sys
sys.append.path(“/home/pi/mysite”)

4. apache2の設定
cp /etc/apache2/sites-avalable/000-default.conf /etc/apache2/sites-avalable/django.conf


LoadModule wigs_module “modules/mod_wsgi.so”
WSGiScriptAlias / /home/pi/mysite/mysite/wsgi.py



Require all granted

##注意##パスの”pi”が”py”になっていてうまくいかない経験あり!!

5. 設定の有効化
$sudo a2dissite 000-default
$sudo a2ensite django
$sudo service apache2 restart

[raspberry pi]USB 電源能力

raspberry pi2 model B

USBのwifiドングルを使うと頻繁に機能しなくなる問題は、電源能力が原因らしい。
USB2.0の電源は4つ合計で300mA程度で一つあたりは100mAくらいしかとれない。
無線LANは通常300mAくらいを用いるらしいので、足りなくなる。

raspberry piのdocumentによるとマウスやキーボード以外の消費電力の大きいUSBデバイスは、
USBハブやその他の電源供給を行うようにとのこと。

一応電源供給は
/boot/config.txtにて
max_usb_current=1を追加することで4つ最大1200mAまでとなるらしい。

[raspberry pi]天気予報の取得

weather undergroundのAPIから取得
以下のスクリプトを実行すると本日の東京の曜日と降水確率が出力される。
ポイントはJSON形式の読み取りと抽出。

import urllib2
import json
#f = urllib2.urlopen('http://api.wunderground.com/api/0def10027afaebb7/geolookup/conditions/q/japan/Tokyo.json')
f = urllib2.urlopen('http://api.wunderground.com/api/0def10027afaebb7/geolookup/forecast/q/japan/Tokyo.json')
json_string = f.read()
parsed_json = json.loads(json_string)
title_today = parsed_json['forecast']['txt_forecast']['forecastday'][0]['title']
pop_today = parsed_json['forecast']['txt_forecast']['forecastday'][0]['pop']
print title_today+'\npop:'+pop_today
f.close()

[raspberry pi]SSMTPによるメール送信

raspberry piからプロバイダのSMTPサーバーを用いて送信する。

1. 必要なアプリをインストール
sudo apt-get install ssmtp
sudo apt-get install mailutil

2. SSMTPの設定
sudo vi /etc/ssmtp/ssmtp.conf

#プロバイダの設定情報により
root=xxx@xxx.xxx.xxx.xxx #契約しているメールアドレス。これがないと弾かれることがある 
mailhub=smtp.xxx.xxx:xxx #SMTPサーバーのアドレス
AuthUser=メールユーザID
AuthPass=メールパスワード
AuthMethod=LOGIN
UseSTARTTS=YES
#UseTLS=YES

rewriteDomain=hiroshi-no.raspberry.com #送信者として表示されるドメイン

3. メール送信 mailコマンド 本文を書き終えたあとcommand+dでEOFとなる
mail xxx@xxx.xxx.xxx.xxx
subject:test
test
EOF

BME280のサンプルコード実行とI2Cの設定[raspberry pi]

BME280というデジタルセンサについて


1. /boot/config.txt の末尾に dtparam=i2c_arm=on を加える
2. /etc/modules の末尾に i2c-dev を加える
3. 再起動 sudo shutdown -r now
4. lsmodにより i2c_bcm2708 と i2c_dev があることを確認
5. sudo apt-get install i2c-tools
6. sudo i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: — — — — — — — — — — — — —
10: — — — — — — — — — — — — — — — —
20: — — — — — — — — — — — — — — — —
30: — — — — — — — — — — — — — — — —
40: — — — — — — — — — — — — — — — —
50: — — — — — — — — — — — — — — — —
60: — — — — — — — — — — — — — — — —
70: — — — — — — 76 —

BME280をつないだときは0x76を用いていることがわかる


1. サンプルコードのダウンロード
wget https://raw.githubusercontent.com/SWITCHSCIENCE/BME280/master/Python27/bme280_sample.py
2. sudo apt-get install python-smbus
3. sudo python bme280_sample.py
temp : 27.33 ℃
pressure : 1012.68 hPa
hum : 46.24 %

最初に行うあれこれ[raspberry pi]

raspberry pi2 model Bにて

[sshでログイン]
①本体LAN接続後、ルータかサーバーにてraspberry piのIPを調べsshでログイン
ssh pi@xxx.xxx.xxx.xxx
pasword:raspberry

[固定IPの割当]
ルータ側にIPを登録してあること!
vi /etc/network/interfaces

auto eth0
allow-hotplug eth0
iface eth0 inet manual

の部分を以下に書き換える

iface eth0 inet static
address xxx.xxx.xxx.xxx
netmask 255.255.255.0
gateway xxx.xxx.xxx.xxx

②ネットワークインターフェースの再起動
sudo ifdown eth0
sudo ifup ether

[無線LANの設定]
①USB無線アダプタを差し込んでlsusbで認識していることを確認。

②sudo iwlist wlan0 scan
で利用可能なアクセスポイントの情報を得る。暗号化方式や規格などを確認。

③sudo vi /etc/wpa_supplicant/wpa_supplicant.confにて以下を付け足す
network={
ssid=”SSID”
psk=”PWD”
proto=WPA2
key_mgmt=WPA-PSK
pairwise=CCMP
group=CCMP
#priority=2
#scan_ssid=1  #ステルスssidの場合1
}

④sudo vi /etc/network/interfacesにて以下を編集。以下は固定IPの場合。
※ネットマスクが適切でなくて繋がらないことがあった
auto wlan0
allow-hotplug wlan0
iface wlan0 inet static
address xxx.xxx.xxx.xxx
netmask 255.255.255.0
gateway xxx.xxx.xxx.xxx
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

⑤インターフェースの再起動
sudo ifdown wlan0
sudo ifup wlan0

⑥dhclient wlan0で動的インターフェースを割当直す

⑥本体を再起動して有線LANを外してpingを試す

[get-apt]
sudo apt-get update

プロキシを通す場合
sudo http_proxy=http://xxx.xxx.xxx.xxx:xxxx apt-get update

[webサーバー]
①apache,php,mysqlのインストール
sudo apt-get install apatche2
sudo apt-get install php5
sudo apt-get install mysql-server
sudo apt-get install php5-mysql php5-curl

②とりあえずserviceコマンドで扱うと楽
service apache2 status
service apache2 start
service apache2 stop

③ブラウザからラズパイのIPで開くと”It works”となる
index.htmlの場所は/var/www

[電源を切る]
sudo shutdown -h now

[バックアップ]
[cygwinにて]
①SDカードを差し込みdfにて認識と容量を確認
②デバイスがsdbであることをls /dev/より確認
②dd if=/dev/sdb of=./rasp.bk.img
※16Gで40〜50分かかった

[macにて]
①SDカードを差し込みdiskutil listで認識と容量を確認
②デバイスがdisk1とかであるかを確認
③sudo dd bs=1m if=/dev/rdisk1 of=~/rasp_bk.img

[タイムゾーン]
sudo dpkg-reconfigure tzdataからAsia Tokyoに設定

[時刻]
1. $ sudo vi /etc/ntp.conf
server~あたりをコメントアウト
pool ntp.nict.jp iburstを追記
2. $ sudo service ntp restart