Upgrade to Pro — share decks privately, control downloads, hide ads and more …

IoTタグで遊んでみよう

 IoTタグで遊んでみよう

2016/06/18 Kanazawa.rb #46 @ ITBP武蔵

Transcript

  1. 「安心・安全・安定・信頼」できるインターネットサービスを ͜͡͠ΐ͏͔͍ • (株)クルウィットの取締役  兼  北北陸陸⽀支社⻑⾧長   • 博⼠士(情報科学)  

    • ネットワーク関連の委託研究・⾃自社サービス開発など 2 • 井澤  志充  (いざわゆきみつ) @Yukimitsu_Izawa
  2. 「安心・安全・安定・信頼」できるインターネットサービスを Ϟϊʁ • モノ  =  IoTデバイス   • パソコン,  スマホ,

     タブレット,  raspberry  pi,..   • 家電(  TV,  デジタルオーディオプレイヤー,  HDDプレ イヤー,..)   • 家の付帯設備  (鍵,  インターフォン,  電球,..)   • 電⼦子⼯工作(  arduino,  BLEデバイス,..) 4
  3. 「安心・安全・安定・信頼」できるインターネットサービスを *P5σόΠεͷ*0 • 状態取得(Observe)   • 環境情報:  温度度湿度度、気圧、照度度、   •

    モーション情報:  振動、傾斜、移動、   • 位置情報:  存在位置、近接、通過、   • スイッチ状態:  ⽞玄関の施錠状態、ドアの開け閉め、   • 状態変更更(Control)   • 家電のOn/Off   • 照明制御   • シャッター駆動   • 施錠/解錠 5
  4. 「安心・安全・安定・信頼」できるインターネットサービスを Ή͔͠Ή͔͠ • 能登半島の某川に設置された⽔水⾨門の制御をしたことがあ りました。   • ⽔水⾨門扉の開度度,  ⾨門の外側と内側の⽔水位や塩分濃度度を取 得。

      • i-‐‑‒mode(!)端末から確認できるようにするシステムでし た。   • ちょっと書き込むとマジで⾨門扉が開閉する。   • ヘタに開閉すると川周辺流流域の⽥田畑に塩害が発⽣生 7
  5. 「安心・安全・安定・信頼」できるインターネットサービスを 58&-JUF੡඼γϦʔζ • TWE-‐‑‒Lite  (SMD)   • TWE-‐‑‒Lite  DIP  (DIP)

      • アンテナバリエーションいろいろ   • TWE-‐‑‒Lite  2525a  (IoTタグ)   • MonoStick  (USB) 19 http://mono-wireless.com/jp/products/ ΑΓ ࠓճ͸͜ͷ2ͭΛ࢖͍·͢
  6. 「安心・安全・安定・信頼」できるインターネットサービスを 58&-JUFB • All-‐‑‒in-‐‑‒One   • TWE-‐‑‒Lite  +  3軸加速度度センサ  +

     アンテナ  +  電池ホルダ   • 設定もOTA(Over  the  Air)通信で簡単   • ⾊色々な検知モード   • 動き始め,静⽌止,⾃自由落落下   • シングルタップ,ダブルタップ   • シェイク,ターン,スピン   • ねこったー  (参考⽂文献:ハルロック) 21
  7. 「安心・安全・安定・信頼」できるインターネットサービスを ηϯαʔͷઃఆํ๏ • ファームを公式サイトから落落としてくる   • TWE-‐‑‒Lite  R(ライター)  でセンサーファームを書き込む  

    •                              〃            MonoStickにOTA⽤用ファームを書き込 む   • シリアル経由でMoniStickにOTA⽤用の設定をする   • OTA経由でセンサーへ設定をする 23
  8. 「安心・安全・安定・信頼」できるインターネットサービスを ϑΝʔϜͷμ΢ϯϩʔυ • 公式サイトからアプリをダウンロードする。   • https://mono-‐‑‒wireless.com/jp/products/TWE-‐‑‒ Lite-‐‑‒2525A/firmware_̲update.html   •

    ver  1.6.1  (2016/4/28  リリース)   • Samp_̲Monitor_̲LITE2525A_̲1_̲6_̲1.zip   • Samp_̲Monitor_̲EndDevice_̲Input_̲JN5164_̲CNFMS T_̲1_̲6_̲1.bin   • Samp_̲Monitor_̲EndDevice_̲Input_̲JN5164_̲LITE25 25A_̲1_̲6_̲1.bin   • Samp_̲Monitor_̲Parent_̲JN5164_̲1_̲6_̲1.bin 24
  9. 「安心・安全・安定・信頼」できるインターネットサービスを ϑΝʔϜ΢ΣΞ • Samp_̲Monitor_̲EndDevice_̲Input_̲JN5164_̲CNFMST _̲1_̲6_̲1.bin   • 2525aへの設定書き込み⽤用のファーム   •

    Samp_̲Monitor_̲EndDevice_̲Input_̲JN5164_̲LITE252 5A_̲1_̲6_̲1.bin   • 2525aのファーム   • Samp_̲Monitor_̲Parent_̲JN5164_̲1_̲6_̲1.bin   • 親機動作⽤用のファーム 25
  10. 「安心・安全・安定・信頼」できるインターネットサービスを SVCZͰ؂ࢹ • Raspberry  Pi2  に  MonoStickを挿して親機とする   • Rubyプログラムとしては以下の処理理を実施する

      • Serial  portを監視   • ⼊入ってきたデータ(⾏行行単位)をみて、センサーデータ だったらparseする   • parseした内容に応じてTwitterにツイート 40
  11. 「安心・安全・安定・信頼」できるインターネットサービスを αϯϓϧϓϩάϥϜ 41 # coding: utf-8 require 'serialport' require 'twitter'

    require 'optparse' class SensorAlert def initialize(serial_device, msg_q) @msg_q = msg_q @sensor_stats = {} @sp = SerialPort.new(serial_device, 115_200, 8, 1, 0) rescue => e puts e.to_s exit 1 end def line_parser(line) return nil if !line.match(/^::/) || line.match(/^::ts/) if line =~ /^::rc/ line.chomp.split(':').inject({}) { |a, e| a.merge! Hash[*e.split('=')] } end end
  12. 「安心・安全・安定・信頼」できるインターネットサービスを αϯϓϧϓϩάϥϜ 42 def read_serial @sp.gets end def main_loop loop

    do next unless line_hash = line_parser(read_serial) @sensor_stats[line_hash['id']] ^= true @msg_q.push sprintf("センサーID:%sが%sになりました。\n(%s)", line_hash['id'], @sensor_stats[line_hash['id']] ? 'On' : 'Off', Time.now.to_s) end end end
  13. 「安心・安全・安定・信頼」できるインターネットサービスを αϯϓϧϓϩάϥϜ 43 class TwitterUpdate CONSUMER_KEY = 'XXXXXXXXXXXXXXXXX' CONSUMER_SECRET =

    'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' ACCESS_TOKEN_KEY = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' ACCESS_SECRET = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' def initialize(queue) @queue = queue @client = Twitter::REST::Client.new do |config| config.consumer_key = CONSUMER_KEY config.consumer_secret = CONSUMER_SECRET config.access_token = ACCESS_TOKEN_KEY config.access_token_secret = ACCESS_SECRET end end def main_loop loop do @client.update(@queue.pop) end end end
  14. 「安心・安全・安定・信頼」できるインターネットサービスを αϯϓϧϓϩάϥϜ 44 # parsing options params = ARGV.getopts('d:') unless

    params['d'] puts '-d required.' exit 1 end device_name = params['d'] unless FileTest.chardev?(device_name) puts "Error device file #{device_name}" exit 1 end q = Queue.new Thread.new do twitter = TwitterUpdate.new(q) twitter.main_loop end sa = SensorAlert.new(device_name, q) sa.main_loop
  15. 「安心・安全・安定・信頼」できるインターネットサービスを %JTDMBJNFSPG8BSSBOUZ • 本システムはあくまで実験⽬目的です。   • 本システムを⽤用いたことで利利⽤用者が何らかの損害を被っ てもなんら保証がないことをご理理解ください。   •

    デバイスがあるだけでは安全ではありません。   • ホームセキュリティ会社が売っているのは「デバイス」 ではなくて「運⽤用」なんです。   • 発報したら誰かが駆けつけるというところがサービス のキモ。 47
  16. 「安心・安全・安定・信頼」できるインターネットサービスを ࢀߟจݙ • 加速度度センサー内蔵無線タグ  TWE-‐‑‒Lite-‐‑‒2525A   • https://mono-‐‑‒wireless.com/jp/products/TWE-‐‑‒ Lite-‐‑‒2525A/  

    • 加速度度センサTWE-‐‑‒Lite-‐‑‒2525AのOTA(無線)による設 定変更更⼿手順   • http://hanzomemo.blogspot.jp/2015/08/twe-‐‑‒ lite-‐‑‒2525aota.html   • TWE-‐‑‒Lite-‐‑‒2525A.2を動かすまでの⼿手順。   • http://www.lopple.jp/?p=864 48