Armadilloフォーラム

ブラウザで入力した値をArmadillo IoTで取り込みたい

sam

2016年5月24日 17時49分

お世話になっております。

開発者ブログではArmadillo IoTで取得したデータをHerokuのサーバに上げてブラウザに
表示するサンプルがあげられていますが、その逆のパターンでブラウザで入力された値をHerokuを
経由し、Armadillo IoTで取得してRS232Cに出力する場合はどのような方法で行えば良いのでしょうか?
よろしくお願いします。

コメント

at_yashi

2016年5月24日 18時38分

heroku上に Database をもったアプリを置いて、
ブラウザーでアクセスするエンドポイントは、書き込み
Armadillo-IoTでアクセスするエンドポイントは、読み込み可能にします。

で、Armadillo-IoT上で、↓と同じことをするアプリを書けば、シリアルにデーターが出せます。

curl http://app.heroku.com/?id=1 > /dev/ttyUSB0

idを指定しなくても、読みたいものが読み出せればなんでもOKです。

at_ohsawa

2016年5月24日 18時59分

もし、リアルタイムにpushして欲しい場合は、
Armadillo-IoTスタートアップガイド[http://armadillo.atmark-techno.com/armadillo-iot-g2/downloads ページ内]
で紹介しているサンプルアプリケーションの 「ON/OFFボタン」の実装を参考にしてみてください。

サンプルアプリケーションのソースコードは、
アットマークテクノ公式 GitHub [https://github.com/atmark-techno]で公開しています

一見githubのソースコードツリーにはサーバーサイドの実装しか無いように見えますが、
クライアントアプリケーションはHerokuからユーザーがダウンロードする事を想定して
public/client/sample.rb に入っています。

サンプルアプリケーションでは、Armadillo側で動くクライアント(sample.rb) でソケットを作り、
HerokuのPusherサービスに対してセッションを張って、HerokuからのPushを待つように実装しています。

sample.rbの下記の箇所が、それにあたります。

pusher_options = {:secret => config['pusher_secret']}
socket = PusherClient::Socket.new(config['pusher_key'],
                                  pusher_options)
socket.connect(true)
socket.subscribe(uid)
 
socket[uid].bind('button') do |data|
  d = JSON.parse(data)
  command = sprintf("value=%s;%s", d["value"], OPTS[:command])
  system(command)
end

sam

2016年5月31日 18時51分

返信が遅くなり申し訳ありません。
リアルタイムではなく、Armadillo側から定期的にサーバにアクセスした際にデータを取得することは可能でしょうか?
at_yashiが書いてくださった方法になるのでしょうか?