今回も最近作り始めたカロリー記録システムの進捗紹介。
前回はM5 Stack Basicからラズパイにデータを送って画面表示するところまで作成した。
thom.hateblo.jp
今回はCSVにデータをOutputするところまで作成。地味ぃ。。
本当にやりたいのはMatplotlibでグラフ表示なんだけど、元データが集まらないとグラフも作りようがないし、適当なダミーで作り始めてもいつまでかかるか分からないので、それはそれで運用が始まらない。
ということでとりあえずは記録することから本運用を始めることにした。
動作中の画面
ネタも地味なら画面も地味。左上のターミナルがサーバーが受信時刻とデータを画面表示してるところで、右下のターミナルが記録されたcsvを表示したところ。
コード
import socket import time import csv import os from datetime import datetime def record_calorie(cal): file_path = '/home/pi/calorie.csv' with open(file_path,'a',newline='') as f: w = csv.writer(f) timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S') w.writerow([timestamp, cal]) print([timestamp, cal]) with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.bind(("", 49152)) while True: s.listen(1) conn, addr = s.accept() try: data = conn.recv(16).decode('utf8') record_calorie(data) time.sleep(1) except socket.error: pass except KeyboardInterrupt: conn.close() s.close() conn.close()
まぁコードも特に大きな工夫はない。前回単純にprintしていたところをrecord_calorieという関数に置き換えてその中でCSV書き込みと画面出力を行っている。
以上。地味回でごめん。。