16
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

RaspberryPiのCPUクロックや温度をSORACOM Harvestで可視化する

Last updated at Posted at 2017-02-04

#概要
本コンテンツは、JAWS DAYS 2017IoTハンズオン向けに作成したものです。
RaspberryPiに3Gドングルを接続し、SORACOM HarvestでRaspberryPiのCPU温度やクロックの変化を可視化します。RaspberryPi以外にセンサー類を必要としませんので、手軽に試すことができます。
SORACOM ユーザーコンソール 2017-01-29 13-11-27b.png

##SORACOM Harvestとは
SORACOM Harvest(以下、Harvest) とは、IoT デバイスからのデータ収集および可視化サービスです。SORACOM Air が提供するセルラー通信を使って、IoT デバイスのセンサーデータ等を手間なくクラウドにアップロードすることができます。アップロードされたデータは、SORACOMプラットフォーム上に 40 日間に渡って保存されます。お客様は、保存されたデータを SORACOM のユーザーコンソールでグラフ化することができます。(公式サイトより引用)
Harvest
SORACOM Harvest Getting Started
###使い方は簡単、HTTP(またはUDP/TCP)でPOSTするだけ
IoTデバイスからのデータをクラウドにアップロードする場合、通常は暗号化して認証情報をつける必要があります。SORACOM Harvestの場合、SORACOMのエンドポイントにJSON形式のデータをcurlコマンドなどでHTTP POSTするだけと非常にお手軽です。SIM自体が認証キーとなるので認証情報は不要で、暗号化しないためCPUリソースをあまり消費しません。しかもキャリア閉域網内で処理されるため、非常にセキュアです。当然ながら、SORACOM Airで接続していない場合はHarvestを利用することはできません。

#必要な機材

  • PC
  • RaspberryPi 2または3
  • micro USB電源
  • micro SDカード (8GB以上)
  • SORACOM Air SIM
  • 3G USBドングル (本手順ではFS01BUまたはAK-020を使用)

#前提条件

  • SORACOMアカウントをもっていること。アカウント開設手順はこちら
  • RaspberryPiにRaspbianがインストール済みで、PCからSSHでログインまたはHDMI接続のモニタでターミナル操作ができること。手順はこちら。Raspbianは[Release date:2017-01-11]で動作確認しています

#[ToDo 1] RaspberryPiをSORACOM Airでインターネット接続する
RaspberryPiにSORACOM Air SIMの入った3G USBドングルを接続し、インターネットに接続します。手順はSORACOM公式ハンズオン用テキストを参照します。テキスト内の1章と3章のみ使用しますので注意して下さい。
1章 ユーザーコンソールを使用してAir SIMを管理する
3章 Air SIMを使って、インターネットに接続する
connect_air.shを実行してインターネット接続が完了したらその画面はそのままにし、別ウインドウでSSH接続して続きを進めてください。

##3章中の$ curl ifconfig.ioでIPv6アドレスが返ってきたら
以下のコマンドを試してみてください。

$ curl globalip.me
54.250.252.xx (IPアドレスが表示されます)

##アップデートとvimのインストール
SORACOMによるインターネット接続が確立したら、RaspberryPiのターミナル画面で下記を実行します。

$ sudo apt-get update
$ sudo apt-get install -y vim

#[ToDo 2] SORACOMユーザーコンソールでHarvestの設定をする
グループを作成してHarvest機能をONに設定し、SIMをグループに追加します。SORACOM Harvestは有料サービスです。利用していなくても毎日課金されますので、使わなくなったら機能をOFFにしましょう。

  • SORACOMユーザーコンソールにログインする
  • 右上のMENUボタン -> [SIMグループ]の順にクリックする

    SORACOM ユーザーコンソール 2017-02-10 21-38-32.png

  • [+追加]をクリックする

    SORACOM ユーザーコンソール 2017-02-04 21-56-46.png

  • 任意のグループ名を入力し[グループ作成]をクリックする

    SORACOM ユーザーコンソール 2017-02-04 21-57-30.png

  • 作成したグループをクリックする

    SORACOM ユーザーコンソール 2017-02-04 21-58-54.png

  • [SORACOM Harvest 設定]を展開し[ON]に変更する
  • [保存]をクリックする

    SORACOM ユーザーコンソール 2017-02-04 22-00-00.png

  • 注意を読み[OK]をクリックする

    SORACOM ユーザーコンソール 2017-02-04 22-02-46.png

  • 右上のMENUボタン -> [SIM 管理]の順にクリックする

    SORACOM ユーザーコンソール 2017-02-10 21-47-03.png


  • 使用中のSIMを選択し、[操作] -> [所属グループ変更]の順にクリックする

    SORACOM ユーザーコンソール 2017-02-04 22-03-53.png

  • 先ほど作成したグループを選択し[グループ変更]をクリックする

    SORACOM ユーザーコンソール 2017-02-04 22-06-23.png

  • グループが変更されたことを確認する

#[ToDo 3] RaspberryPiのCPU情報を表示させる
RaspberryPiにはじめから入っているvcgencmdというコマンドを使ってCPUの情報を取得します。以下、RaspberryPiにSSH接続して実行して下さい。
##CPUクロックを取得

$ vcgencmd measure_clock arm
frequency(45)=600062000

##CPU温度を取得

$ vcgencmd measure_temp
temp=41.2'C

##CPU電圧を取得

$ vcgencmd measure_volts
volt=1.2000V

#[ToDo 4] CPUクロック/温度のデータをSORACOM HarvestにPOSTする
PythonでCPUクロック/温度のデータをSORACOM Harvestに3秒に1回POSTします。CPUクロックは数値が大きいので10M(10,000,000)で割った値を使用します。

$ vim cpu-harvest.py
cpu-harvest.py
#coding: utf-8

import commands
import time
import json
import requests

try:
	while 1:
		# 開始時刻を記録
		start_time = time.time()
		# Raspbianの制御コマンド(vcgencmd)を実行
		# CPU温度を取得
		temp = commands.getoutput("vcgencmd measure_temp").split('=')
		# CPUクロックを取得
		clock = commands.getoutput("vcgencmd measure_clock arm").split('=')
		# 温度とクロックを表示
		print temp[1] ,
		print clock[1]
		# 数値型に変換(温度とクロックのレンジを合わせるために、クロックは10Mで割る)
		temp_n = float(temp[1][0:-2])
		clock_n = int(clock[1]) / 10000000
		# JSONを整形
		json_data = {"clock/10M": clock_n, "temp": temp_n}
		encode_json_data = json.dumps(json_data)
		# SORACOM Harvestに送信
		print requests.post('http://harvest.soracom.io', data=encode_json_data, headers={'Content-Type': 'application/json'})
		# 終了時刻を記録
		stop_time = time.time()
		# (3 - 送信にかかった時間)秒待ってループ
		wait = start_time - stop_time + 3
		if wait > 0:
			time.sleep(wait)
# キーボード例外を検出
except KeyboardInterrupt:
	# 何も処理をしない
	pass

Pythonコードを実行します。停止する場合は**ctrl + C**。
<Response [201]>が表示されない場合は、「[ToDo 2] SORACOMユーザーコンソールでHarvestの設定をする」で設定が誤っていないか確認して下さい。

$ python cpu-harvest.py
43.3'C 900000000
<Response [201]>
42.8'C 900000000
<Response [201]>
42.2'C 600000000
<Response [201]>

#[ToDo 5] SORACOM Harvestでグラフ表示させる

  • SORACOMユーザーコンソールにログインする
  • 使用中のSIMを選択し、[操作] -> [データを確認]の順にクリックする

    SORACOM ユーザーコンソール 2017-03-30 01-06-17.png

  • 自動更新を[ON]に変更する

    SORACOM ユーザーコンソール 2017-03-30 01-09-47.png

  • しばらく待つとグラフが表示される

    SORACOM ユーザーコンソール 2017-02-04 23-55-01.png

#[ToDo 6] UnixBenchを実行してCPUクロック/温度を変化させる
UnixBenchというGoogleが配布しているベンチマークツールを実行することで、CPUに負荷をかけてクロックや温度を変化させることができます。[ToDo 4]とは別のウインドウで実行(ターミナルを複数立ち上げる)することで、グラフ表示を続けながらCPUに負荷をかけることができます。

##UnixBenchをダウンロードしてコンパイルする

$ wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/byte-unixbench/UnixBench5.1.3.tgz
$ tar zxvf UnixBench5.1.3.tgz
$ cd UnixBench
$ make

##UnixBenchを実行する
-c 4は4コアで実行の意味。

$ ./Run -c 4

   #    #  #    #  #  #    #          #####   ######  #    #   ####   #    #
   #    #  ##   #  #   #  #           #    #  #       ##   #  #    #  #    #
   #    #  # #  #  #    ##            #####   #####   # #  #  #       ######
   #    #  #  # #  #    ##            #    #  #       #  # #  #       #    #
   #    #  #   ##  #   #  #           #    #  #       #   ##  #    #  #    #
    ####   #    #  #  #    #          #####   ######  #    #   ####   #    #

   Version 5.1.3                      Based on the Byte Magazine Unix Benchmark

   Multi-CPU version                  Version 5 revisions by Ian Smith,
                                      Sunnyvale, CA, USA
   January 13, 2011                   johantheghost at yahoo period com

##SORACOM Harvestで変化を見る
SORACOM ユーザーコンソール 2017-01-29 13-11-27.png

#あとかたづけ
##SORACOM Air SIMは使うけどHarvestは使わない
[ToDo 2]を参考に[SORACOM Harvest 設定]をOFFにしてください。
##SORACOM Air自体使わない
###利用中断
SIMを「利用中断中」状態にすると基本料金の課金が1日5円に減額されます。ただし、「利用中断中」状態への変更1回につきSIM 1枚あたり300円の設定変更料金が発生します。
###解約
解約するとそのSIMは一切利用できなくなりますが、料金はかからなくなります。
SORACOM ユーザーコンソール 2017-03-02 23-18-52.png
SORACOM ユーザーコンソール 2017-03-02 23-20-08.png

16
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?