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に表示できるようになった。


Related #iot

Alexaにゲーミングマシンと周辺環境を起動してもらう

PC起動、TV起動、サウンドバー起動がまとめてできるようになった

Alexaにゲーミングマシンと周辺環境を終了してもらう

「Alexa Steamを終了して」ができるようになった

MH-Z19でCO2濃度をリアルタイム計測してMackerelでアラート通知する

換気すべきタイミングにアラートが飛ぶようになった

AlexaにPS4を起動してもらう

「Alexa、PS4をつけて(消して)」

RaspberryPi用の赤外線送受信リモコンを作る

夏休みの電子工作