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
関連記事
-
Raspberry Pi2でPlanexのGW-450Dが動かなくなった
Raspberry Pi2上で何も考えずソフト類をアップグレードしたらカーネルの …
-
穂竜水槽を引っ越しました
穂竜さん入院 金魚水槽のページで配信していた45cm水槽の穂竜ですが、 どうやら …
-
穂竜はじめました
先日新しく45cm水槽を立ち上げてまして穂竜という金魚を飼いはじめました。 高頭 …
-
プラ舟のカメラ復活しました
カメラの首振りができなくなっていた プラ船のカメラが横方向に動かなくなっていたの …
-
Raspberry Pi2でリモコンを使って水槽の照明をつける
リモコン操作で照明をつける Web上からRaspberry Pi2で水槽の照明を …
-
RaspberryPi2で動画配信しながら写真も撮りたい
金魚デカくなった? 金魚にエサやってると4月の初頭から飼い始めた琉金が1周り大き …
-
Raspberry Pi2でプラ船のカメラを動かす
カメラの首振り プラ舟内に設置しているカメラにサーボを取り付けて遠隔からカメラの …
-
金魚が病気の為、隔離しました
配信中の金魚水槽ですが、金魚が病気で1匹死んでしまったので隔離しました メイン水 …
-
Raspberry Pi ZEROでGW-450D2(無線LANドングル)を使う
ZERO買っちゃった Pimoroniで入荷しているのを見たのでRaspberr …
-
Raspberry Pi2で水槽のLEDを自動点灯/消灯する
先日Raspberry Pi2を購入し、自宅からのストリーミング配信する為あれこ …
Comment
[…] Raspberry Pi2で外部から水槽のLEDを点灯する Raspberry Pi2で外部から水槽のLEDを点灯する その3 […]