bitFlyer の API と MAX7219 7 セグメント LED を使用して、ビットコインの価格をリアルタイムで表示するサンプル。
このサンプルでは、「Raspberry Pi で 7 セグメント LED を使用する」の手順 1 から手順 3 までが完了していることを前提とする。
python-socketio をインストール
bitFlyer とリアルタイム通信するために、ここでは Socket.IO の Python 実装である python-socketio を使用する。
1
| pip install "python-socketio[client]"
|
スクリプト
bitcoin_ticker.py:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
import socketio from luma.led_matrix.device import max7219 from luma.core.interface.serial import spi, noop from luma.core.virtual import sevensegment
CHANNEL = "lightning_ticker_BTC_JPY"
serial = spi(port=0, device=0, gpio=noop()) device = max7219(serial, cascaded=1) seg = sevensegment(device)
sio = socketio.Client()
digits = seg.device.width
@sio.event def connect(): sio.emit("subscribe", CHANNEL)
@sio.on(CHANNEL) def on_subscribe(data): ltp = str(data["ltp"]) padding = " " * (digits - len(ltp)) seg.text = padding + ltp
seg.device.contrast(0)
sio.connect("https://io.lightstream.bitflyer.com", transports=["websocket"]) sio.wait()
|
チャンネルには、lightning_ticker_BTC_JPY
の他に、lightning_ticker_FX_BTC_JPY
や lightning_ticker_ETH_BTC
など、マーケットの一覧で取得できるものを指定できる。
スクリプトの実行
1 2
| $ chmod u+x bitcoin_ticker.py $ ./bitcoin_ticker.py
|
Ctrl-C でスクリプトを終了する。