
ラズベリーパイ – 温度計とホームウェブコントロール
このドキュメントでは、Raspberry Piに温度センサーを取り付けるための手順を説明します, 温度を保存するデータベースと、温度を定期的に取得するスクリプトの作成. 現在の温度と温度履歴のグラフを取得できるWebサイトを作成します. カールをカールするには, サーモスタットのオン/オフなどのタスクを実行するボタンをWebサイトに配置します!
まず、eBayで1ユーロで手に入るDS18B20ようなデジタル温度センサーを、水槽用の潜水艇でも手に入れることです, また、4.7kの抵抗も必要になります. 湿度センサーも入手して、両方のグラフを取得することもできます=).
私たちが行うことは、モジュールが温度計を使用できるようにすることです, MySQLをインストールして、温度グラフの履歴をデータベースに保存します, Pythonでスクリプトを作成して、データベースにすべての情報を埋めます 2 数分で終了し、Apacheをインストールして、温度と履歴のグラフをリアルタイムで確認できるWebサイトを作成します. また、Raspberryでリレーを使用する方法を説明した前のドキュメントにリンクすると, 同じWebサイト上にボタンを作成して、ライトをオンまたはオフにすることができます. まず、モジュールを有効にします:
[ソースコード]sudo modプローブ W1-GPIO
須藤 ModProbe W1-Therm[/ソースコード]
ラズベリーを捨てる頃には、取っておくべきだよ:
[ソースコード]sudo vim /etc/modules
w1-gpio
w1-サーム[/ソースコード]
そして、次のコマンドを試してみて、各センサーの温度を確認します:
[ソースコード]cat /sys/bus/w1/devices/ID_SENSOR/w1_slave[/ソースコード]
MySQLのインストール, 要件とDBの作成,
すでに機能している温度計を放置した後, 次に、MySQLをインストールし、データベースを作成して私の場合の温度を保存するためのすべての要件をインストールします 2 温度センサ (環境と水族館). MySQL Server のインストールでは、root パスワードの設定を求められます:
[ソースコード]sudo apt-get python-pipをインストールする
apt-get python-mysqldbをインストールする
sudo pipインストールリクエスト
sudo pip PyMySQLをインストールする
Sudo apt-get install MySQL-Server MySQL-Client PHP5-MySQL[/ソースコード]
MySQLに移動し、「Temperatures」というデータベースを作成します, 'temps というテーブル’ で 3 'Temp1' フィールド, 'シーズン2’ と 'created_at':
[ソースコード]mysql -u ルート -p
mysqlの> CREATE DATABASE の温度;
mysqlの> USE温度;
CREATE TABLE テンポラティブ (
temp1 フロート, temp2 フロート, created_at タイムスタンプのデフォルトCURRENT_TIMESTAMP
);[/ソースコード]
温度を測る鬼,
Pythonでスクリプトを作成し続けて、温度を読み取り、それらを以前のデータベースに保存します, これを行うには、次のスクリプトを使用して、「sensorids」の対応するセンサーIDを変更します, 私たちはそれを「temperatura_demonio.py」と呼ぶことができます:
[ソースコード]インポートリクエスト
ハッシュライブラリのインポート
インポート時間
sensorids = [「28-00000523E071」, 「28-0000052391f2」]
平均温度 = []
範囲内のセンサー用(レン(センサーリッド)):
温度 = []
範囲内のpolltimeの場合(0,3):
テキスト = ”;
text.split(「n」)[0].見付ける(「はい」) == -1:
tfile = オープン("/sys/bus/w1/devices/"+ センサー[センサー] +"/w1_slave")
テキスト = tfile.read()
tfile.close()
時間.スリープ(1)
2行目 = text.split(「n」)[1]
温度データ = secondline.split(" ")[9]
温度 = フロート(温度データ[2:])
temperatures.append(温度 / 1000)
avgtemperatures.append(和(温度) / 浮く(レン(温度)))
水瓶座=平均気温[0]
周囲温度 = 平均温度[1]
MySQLdbのインポート
db = MySQLdb.connect("localhost" (ローカルホスト),「ルート」,「CONTRASENA_DE_ROOT」,「温度」)
カーソル = db.cursor()
cursor.execute("""INSERT INTO temps (温度 1、温度 2) 価値観 (%s,%s) """,(水瓶座,環境))
db.コミット()[/ソースコード]
スクリプトを数回実行して、DBにいくつかのレコードを作成します。
[ソースコード]Pythonのtemperatura_demonio.py[/ソースコード]
そして、データを持つデータベースが:
[ソースコード]mysql -u ルート -p
温度を使用;
選ぶ * 臨時雇用者から;[/ソースコード]
すべてが正しい場合, Pythonスクリプトを2分ごとに実行するようにプログラムします, cronに次の行を「crontab-e」で追加します’
[ソースコード]*/2 * * * * /usr/bin/python /home/pi/temperatura_demonio.py[/ソースコード]
Web サーバーのインストール,
DBで温度をキャプチャしている悪魔がすでにいると, 次に、Apacheを使用してWebサイトを配置し、JavaScriptグラフィックスを使用してクールなポータルを配置します. 開始:
[ソースコード]sudo apt-get apache2 php5 libapache2-mod-php5をインストールする
WGET HTTP://iada.nl/en/system/files/tempmon_2_0.zip[/ソースコード]
ZIPを「/var/www/temp/」に解凍します。’ そして、'index.phpで編集します’ すべての正しい接続データ, また、いくつかの基本的な変更を加えます, この例では、いくつかのドイツ語の単語が.
[ソースコード]$mysqli = 新しいmysqli(「ホスト」, 「ユーザー」, 「パスワード」, 「データベース」);
ジェムラートステ24u –> ストッキング
センサービネン –> 水瓶座
センサーブイテン –> 環境[/ソースコード]
そして、これは、Apacheサービスを再起動するとWebがどのように見えるかになります! 紐, いいえ?, HTTPサイトにアクセスします://IP_RASPBERRY/温度
ウェブサイトにボタンを追加する,
アクションを実行するためのボタンをWebサイトに追加したい場合, この例では、リレーの反対側に接続されているサーモスタットをオンにするボタンを配置します (termostato_enciende.sh) & もう一つはオフにする (termostato_apaga.sh); さらに、オンにする他の2つのボタン & 廊下の照明を消す (pasillo_enciende.sh & pasillo_apaga.sh). 'index.php' ファイルの末尾, ボディスーツの終わりの前に、私たちは追加しました:
[ソースコード]
<H1の>暖房</H1の>
<フォーム id="リレー" action="remote_relay.php" メソッド="GET">
<入力タイプ = "ボタン"" id="サーモスタットsubmitOn" style="ボーダー:1pxソリッド #000; フォントサイズ:40ピクセル;" 値 ="オン" onClick="TermostatorelayOn()"/>
<入力タイプ = "ボタン"" id="サーモスタット提出オフ" style="ボーダー:1pxソリッド #000; フォントサイズ:40ピクセル;" 値 ="オフ" onClick="サーモスタトリレーオフ()"/>
<H1の>通路</H1の>
<入力タイプ = "ボタン"" id="PasillosubmitOn" style="ボーダー:1pxソリッド #000; フォントサイズ:40ピクセル;" 値 ="オン" onClick="パシロリレーオン()"/>
<入力タイプ = "ボタン"" id="HallwaysubmitOff"(玄関先提出オフ)" style="ボーダー:1pxソリッド #000; フォントサイズ:40ピクセル;" 値 ="オフ" onClick="廊下リレーオフ()"/>
</形>
<?PHP$state = $_GET[「合計」]; もし ($state == "サーモスタトゥーン"){ エグゼクティブ(「/home/pi/termostato_enciende.sh」); } もし ($state == "テルモスタトフ"){ エグゼクティブ("/home/pi/termostato_apaga.sh"); } もし ($state == "パシロン"){ エグゼクティブ("/home/pi/pasillo_enciende.sh"); } もし ($状態 == "パシロフ"){ エグゼクティブ("/home/pi/pasillo_apaga.sh"); } ?>[/ソースコード]
そして、「script.js’ 次の変更の追加:
[ソースコード]window.onload = 関数(){
buttonOn = document.getElementById(「サーモスタトサブミデーション」);
buttonOn.onClick = サーモスタトリレーオン;
buttonOff = document.getElementById(「サーモスタットサブミットオフ」);
buttonOff.onClick = サーモスタトリレーオフ;
buttonOff = document.getElementById(「HallwaysubmitOff」);
buttonOff.onClick = パシロリレーオフ;
buttonOff = document.getElementById(「HallwaysubmitOff」);
buttonOff.onClick = パシロリレーオフ;
}
関数 TermostatorelayOn(){
hidden = document.getElementById(「合計」);
hidden.value="サーモスタトゥーン";
フォーム = document.getElementById(「リレー」);
form.method="GET";
form.action="index.php";
フォーム.submit();
}
関数 TermostatorelayOff(){
hidden = document.getElementById(「合計」);
hidden.value="サーモスタトオフ";
フォーム = document.getElementById(「リレー」);
form.method="GET";
form.action="index.php";
フォーム.submit();
}
機能廊下リレーオン(){
hidden = document.getElementById(「合計」);
hidden.value="ホール";
フォーム = document.getElementById(「リレー」);
form.method="GET";
form.action="index.php";
フォーム.submit();
}
機能廊下リレーオフ(){
hidden = document.getElementById(「合計」);
hidden.value="廊下を離れて";
フォーム = document.getElementById(「リレー」);
form.method="GET";
form.action="index.php";
フォーム.submit();
}[/ソースコード]
そして、これはiPadからのWebサイトの結果であり、一方ではこれら2つのセンサーの現在の温度が表示されます, さらに追加できることを忘れないでください, または湿度センサーを使用してください, 等… また、下部には、リレーをオフまたはオンにしたり、電気回路を開閉したりできるようにするためのボタンと同じくらい簡単なボタンを置くことができます! または、私たちが考えることができるものは何でも, 行く… 外部から接続するには (インターネット) 私たちの家のこのウェブサイトへ, DynDNSやNO-IPなどの無料サービスを使用して、安全なアクセスのためにVPNを構成するだけでなく、所有しているパブリックIPを常に知ることができます. そのため、どこからでも家に帰る前にサーモスタットをオンにすることができます, または私たちが持っている他のニーズ, カメラ付きアラームのように…