こんにちは、エンジニアの中西です。
GTGT電子工作部の時間がやってまいりました。
タイトルの「GTGT」とは、仕事と関係の無い、Techなことをする部活動である、GTGT(ギトギト)部に由来するものです。
過去のGTGTな記事はこちら。
今回のブログのテーマは、前回の上原の記事、「GTGT 電子工作部(はじめてのラズパイ その①)」に続いてRapberryPiにします。
今回は前回好評だった、「GTGT 電子工作部(はじめてのラズパイ その①)」の続編となります。
突然ですが、「株価が気になって仕事が手につかない」なんて方、意外と多いんじゃないでしょうか??
株式会社ロックオンも9月に上場し、日々上がったり下がったりする株価が気になって仕方がない者が、社内にも多数いるようです。
うん、チェックしてますね!
こっちでもチェックしてますね!
(※これらの画像は演出です。ちゃんとお仕事しています。)
今回は、このような社内のニーズをテーマとして、自社の株価をすぐに確認できるようにRaspberryPiを利用した、株式会社ロックオンの株価を表示するシステムを構築します。
[材料]
RaspberryPi
LCDディスプレイ
[完成予想]
完成予想はこんな感じ↓
電子工作はソフトウェアと違い、組み立てた後の変更が難しいので、慎重に組み立てないといけません。
必要なパーツは揃っているし、基板も専用品ですが、ハンダ付けの間隔が短いので本当に初めての場合は難しいかも…
開発
株価を取得するプログラムは、RaspberryPiで標準対応のPythonを利用します。
世界的にはそこそこユーザー数はいるのですが、日本ではいまいちマイナーな感じは否めませんね…
では、株価を取得しましょう。
株価取得のためにjsmというパッケージを使用します。
このパッケージはYahoo!ファイナンスから株価をスクレイピングするものになります。
リクエストの回数をきちんと制御して、負荷をコントロールし、Yahoo!や他の利用者に迷惑をかけないように注意しましょう。
jsmのインストールはpipを利用して、以下のコマンドでインストールできます。
依存パッケージは特に無かったと思います。
pip install jsm
次に株価を取得します。
今回構築するシステムでは、最新の株価を取得して表示するだけで十分ですが
jsmのデモンストレーションとして1日分の始値と1ヶ月分の始値を取得します。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import jsm
q = jsm.Quotes()
# 証券コード3690の株価を取得
stock_price = q.get_price(3690)
# get_priceメソッドの戻り値を出力する
print stock_price
# 始値を出力する
print stock_price.open
# 一ヶ月分の始値を出力する
stock_price_month = q.get_historical_prices(3690)
for i in stock_price_month:
print i.open
これでpythonを利用して株価を取得する事ができるようになりました。
次はLCDを組み立てて、LCDに株価を表示させるシステムを構築します。
組み立て方は長くなるのでここでは省略しますが、
以下のwebページで、写真付きの解説が見れるので、参考にしながら組み立ててください。(要ハンダ付け)
Assembly | Adafruit 16×2 Character LCD + Keypad for Raspberry Pi | Adafruit Learning System
久し振りのハンダごてに苦労しつつ、何とか組み立て、使い方のページを参考にしてサンプルプログラムを実行します。
こいつ・・・動くぞ!
と、言う訳で無事にLCDは動作しました。
いよいよ株価を表示させるプログラムを作成します。
#!/usr/bin/python
# -*- coding: utf-8 -*-
import math
import time
import Adafruit_CharLCD as LCD
import jsm
q = jsm.Quotes()
stock_price = q.get_price(3690)
# LCDの初期化処理
lcd = LCD.Adafruit_CharLCDPlate()
# 独自の絵文字を定義する
lcd.create_char(1, [0, 15, 3, 5, 9, 16, 0, 0])
lcd.create_char(2, [0, 16, 9, 5, 3, 15, 0, 0])
# 前日の終値と高値を比較し、
# 高値が上なら背景を緑にし、
# 高値が下なら背景を赤にして表示する。
if stock_price.close > stock_price.high :
lcd.set_color(1.0, 0.0, 0.0)
lcd.clear()
lcd.message(str(stock_price.hith)+' \x02')
time.sleep(3.0)
else:
lcd.set_color(0.0, 1.0, 0.0)
lcd.clear()
lcd.message(str(stock_price.hith)+' \x01')
time.sleep(3.0)
上記のプログラムを作成しroot権限で実行すると…
この通り!
無事に株価をLCDに表示する事ができました!
早速、デスクに配備してみます!
うん、わかりやすい!
今流行のウェアラブルにも挑戦してみました!
うん、とってもウェアラブルですね!
無事に株価をLCDに表示する事ができました!
これでみんな安心して仕事に取り掛かれるはず。
今回はWEBから情報を取得し、表示する事にしましたが、
センサーから情報を取得することができるので、今後、色々な応用が考えられますね。
以上、GTGT電子工作部でした!