Raspberry Pi2で外部から水槽のLEDを点灯する
2015/04/16
外部からネット越しに金魚水槽のLEDを点灯させたい
WebIOPiというライブラリがあるみたいだけど、
家のルーターにあんまり穴を開けたくない&Raspberry Pi2では動かない(動いたという声も)みたいなので別の方法を考える
要はcronで叩いてる点灯シェルが外部から叩ければいい
MQTTブローカーのSangoというサービスを使ってキュー発信と待ち受けな感じで作ってみる
まずはSubscribe(待受)側 ※自宅のRaspberry Pi2
参考サイトから丸コピ
sango_subscribe.rb
#!/usr/bin/env ruby
# -*- coding: utf-8 -*-
require 'rubygems'
require 'mqtt'
MQTTHOST = "lite.mqtt.shiguredo.jp"
USERNAME = "*****@github"
PASSWORD = "*******"
# MQTTに接続するためのクライアントを作成します
client = MQTT::Client.new(
MQTTHOST,
:username => USERNAME,
:password => PASSWORD
)
# 接続します
client.connect do |c|
# Subscribeします
TOPIC = "*****@github/led"
c.get(TOPIC) do |topic, message|
puts("!!!!!!!!!!!!!!!!!!!!!!")
# `/usr/local/bin/led-on`
end
end
権限を与えて実行しておく
chmod +x sango_subscribe.rb ruby ./sango_subscribe.rb
この時点でSangoのダッシュボードを見るとコネクションが増えてる筈
続いてpublish(送信)側 ※さくらVPS
ウチのさくらVPSはRuby入れてないのでGitHubで公開されていたPHPライブラリで実装してみる
git clone https://github.com/bluerhinos/phpMQTT cd phpMQTT/ vi publish_sango.php
中に入ってたexamplesから丸コピ
<?php
require("./phpMQTT.php");
$mqtt = new phpMQTT("tcp://lite.mqtt.shiguredo.jp", 1883, "テキトーなクライアントID"); //Change client name to something unique
if ($mqtt->connect(null,null,'ユーザー名', 'パスワード')) {
$mqtt->publish("*****@github/led","Hello World! at ".date("r"),0);
$mqtt->close();
}
?>
権限を与えて実行してみる
chmod +x publish_sango.php php ./publish_sango.php
さくらVPSのターミナルからpublish_sango.phpを叩いた後、自宅のRaspberry Pi2のターミナルを覗いてみると
ruby ./sango_subscribe.rb !!!!!!!!!!!!! ←叩く度に表示される !!!!!!!!!!!!!
後は点灯用のシェルを叩けばOK!
sango_subscribe.rbのコメントアウトを外し、再度さくらVPSからpublish
Traceback (most recent call last):
File "/usr/local/bin/led-on", line 7, in <module>
GPIO.setup(23, GPIO.OUT)
RuntimeError: No access to /dev/mem. Try running as root!
あ・・・w
GPIOのON/OFFでroot権限がいるんだった
点灯シェルをsudoで実行するように修正し、点灯シェル実行時はsudoのパスワードを求めない設定にする
# 接続します
client.connect do |c|
# Subscribeします
TOPIC = "*****@github/led"
c.get(TOPIC) do |topic, message|
`sudo /usr/local/bin/led-on`
end
end
sudo visudo ユーザー名 ALL=(ALL) NOPASSWD: /usr/local/bin/led-on
で、再度自宅のラズパイでsango_subscribe.rbを実行した後、さくらVPSのpublish_sango.phpを実行すると・・・
ついたー!!
まだまだ煮詰めなきゃいけない部分は沢山あるけど今日はここまで
この時点でPython Ruby PHPの超ごった煮システムになってるけど気にしないでおくw
関連記事
-
-
寿恵廣錦を購入しました
また水槽が増えた 寝室に60cm水槽を1つ立ち上げたので何を入れようか考えていた …
-
-
ピンポンパール投入しました
久しぶりの更新です。 金魚水槽のページで配信している水槽ですが、大きめの琉金がお …
-
-
RaspberryPi2を使ったリモートのエサやりボタン復活しました
春がきた 春になり水温が上がってきたのでプラ舟ページのエサやりボタンを復活させま …
-
-
Raspberry Pi ZERO + L-03D + IIJmioを使ってネットに接続する
野外のソーラーパネル&ラズパイからネットに繋ぎたい ソーラーパネルで給 …
-
-
みんなのラズパイコンテストにて受賞しました
ラズパイマガジンと日経Linux、日経ソフトウエア様の みんなのラズパイコンテス …
-
-
Raspberry Pi2で室温、水温を計測してグラフ表示する その2
前回でRaspberry PiからさくらVPSへ計測したデータを飛ばして登録でき …
-
-
Sangoのメッセージ数について聞いてみた
メッセージ数が足りない! 金魚水槽のページやトップページからライトを点灯するのに …
-
-
Raspberry Pi2で外部から水槽のLEDを点灯する その3
前回で自宅のラズパイ側の準備が整ったので今回はWeb上から電灯のON/OFFをす …
-
-
プラ舟のカメラ復活しました
カメラの首振りができなくなっていた プラ船のカメラが横方向に動かなくなっていたの …
-
-
金魚を水槽に戻しました
病気のため水槽をリセットし、隔離していた金魚を戻しました ついでに照明のLEDも …



Comment
[…] Raspberry Pi2で外部から水槽のLEDを点灯する Raspberry Pi2で外部から水槽のLEDを点灯する その3 […]