Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

IoTセンサを用いた不具合検知システムの提案

はじめに

 はじめてQiitaに投稿します。つたない文章で申し訳ないのですが読んでくれたら幸いです。知識不足が大きいので読んでいておかしい部分があると思いますが、その時は申し訳ありません。

提案

 IoTセンサを用いた不具合検知システムの提案です。この提案の背景として、せっかく設置したIoT機器とか機械が動作不良で動かなかったり、動いたとしても途中で止まったりするという問題に関心を持ったからです。具体的な提案内容としてraspberry pi zeroと温度センサを用いて物理的に異常検知とその原因特定を行うというものです。pythonを用いて不具合検知をプログラムで作ろうという趣旨です。どのように不具合や異常を判断するかというと、閾値を設けます。あらかじめ設定した閾値を超えるものは異常だと判断するプログラムを作ります。
 この場合は温度センサを用いるので異常な温度値をあらかじめ閾値として決めておく必要がある。今回の提案の評価ではプログラムがきちんと作動するかの動作チェックの面が強いので閾値は適当に決めるものとする。また、温度センサに限らず他のセンサでも活用できると考えています。

使用する物

  • raspberry pi zero
  • 温度センサ(adt7410)

 今回の実装で使うこれらの道具は私が参考にしているサイトの影響が強いです。この道具じゃないとダメというわけではないです。私が参考にしているサイトを下記に載せます。

http://make.bcde.jp/

実装

今回実装したプログラムを下記に示す。

aaaaa.py
i2c = smbus.SMBus(1)
address = 0x48
now = datetime.datetime.now()
while True:
    block = i2c.read_i2c_block_data(address, 0x00, 12)
    temp = (block[0] << 8 | block[1]) >> 3
    if(temp >= 4096):
        temp -= 8192
    aiueo = (temp / 16.0)
    if(10<aiueo):
        print("Temperature:%6.2f" % aiueo),
        print(now),
        print("danger too hot")

    elif(17>aiueo):
        print("Temperature:%6.2f" % aiueo),
        print(now),
        print("danger too cold")

    else:
        print("Temperature:%6.2f" % aiueo),
        print(now)

    time.sleep(3)

評価

今回実装したプログラムはちゃんと動いたので成功したと言えます。閾値を超えたならちゃんと警告がでるようにできています。その出力結果を下記の図に示す。
hot.png

cold.png

今回の出力に当たって閾値を意図的に変更して無理やりにこの警告文を出しているので異常検知の性能として期待できないといえます。
 今後の課題としてどうやって閾値を決めるのかが問題です。なぜなら、閾値が決まらなければ異常検知を判断できないのでこのアルゴリズムや考え方次第でこの異常検知のプログラムの性能が決まると言っても良いからです。

cdsl
東京工科大学コンピュータサイエンス学部クラウド・分散システム研究室
https://www.tak-cslab.org/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away