1.3inch LCD HATにMackerelのグラフを表示する

MH-Z19でCO2濃度をリアルタイム計測してMackerelでアラート通知するにてCO2濃度をMackerelに蓄積できるようになった。

今回は「1.3inch IPS LCD display HAT for Raspberry Pi」を使ってMackerelのグラフを表示することにする。

以前、1.3inch LCD HATにCloudWatchメトリクスのグラフを表示するようにしたのを参考にMackerel版を作成。

事前にMackerelのグラフ画面を開いて「共有」メニューから「グラフの公開」にチェックを入れて、画像URLを発行しておく。

Mackerelは手軽にURL共有ができるのでCloudWatchより楽。

画像URLから画像を取得して、240x240にリサイズして表示するスクリプトを作成。

# coding:utf-8
import spidev as SPI
import ST7789
import time
import sys
import subprocess
import datetime
from pytz import timezone

from PIL import Image,ImageDraw,ImageFont
def metrics_graph():
  try:
    subprocess.check_call("curl -s -o mackerel.png 'https://mackerel.io/embed/public/embed/xxxxx.png?period=1h'", shell=True)
  except Exception as e:
    print e

def main():
  # Raspberry Pi pin configuration:
  RST = 27
  DC = 25
  BL = 24
  bus = 0
  device = 0
  
  # 240x240 display with hardware SPI:
  disp = ST7789.ST7789(SPI.SpiDev(bus, device),RST, DC, BL)
  
  # Initialize library.
  disp.Init()

  font = ImageFont.truetype('/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc', 30)
  
  try:
    while True:
      try:
        metrics_graph()

        ## Clear display.
        disp.clear()
        
        print "***draw graph"
        image = Image.open('./mackerel.png')
        disp.ShowImage(image.resize(size=(240, 240)),0,0)
        time.sleep(60)
      except Exception as e:
        print e
  except KeyboardInterrupt:
    print('exit') 
    sys.exit()

main()

縦横比を無視して無理やり240にリサイズしているので若干見づらいが今の濃度は分かるのでよしとする。

これでMackerelのグラフを1.3inch LCD HATに表示できるようになった。