先日買ったM5stack UNITV2ですが、画像や顔を判別したときに出力されるjsonから何かしたいなあと思ってました。
いろいろいじってみて特定の人を判別したらslack通知をするシステムができたのでご紹介したいとおもいます。ちなみに顔の学習はGUIで簡単にできます(
公式サイト)
簡単なシステム図です。M5stack UNITV2以外にarduinoが必要になってきます。
arduinoは普通のunoで大丈夫です。
スケッチはこれだけです。arduino IDEでシリアルモニタを開けば
jsonが出力されシリアル通信が確認できます。(ピンを逆に挿してしまうとでません)
#include <SoftwareSerial.h>
SoftwareSerial mySerial(1, 2);
void setup()
{
mySerial.begin(115200);
}
void loop()
{
}
これをWindowsPCでシリアル通信してみます。
USBポートはarduinoIDEで確認してください。
import serial
import csv
import time
ser = serial.Serial('COM8',115200,timeout=None)
i = 0
while i == 0:
smoothing = 500
with open('Arduino.json', 'w') as f:
writer = csv.writer(f)
a = [ser.read(smoothing)]
writer.writerow(a)
f.close()
time.sleep(2)
ちょっとCSVのライブラリになってますがArduino.jsonというファイルで保存できました。
このファイルのなかでmasashiというワードを検索していきます。
import requests, json
import time
import os
import sys
file = open("ArduinoRead.json", "w")
file.write("blabla is nothing.")
file.close();
i = 0
WEB_HOOK_URL = "*******************************"
while i == 0:
def check_string():
with open('ArduinoRead.json') as temp_f:
datafile = temp_f.readlines()
for line in datafile:
if 'masashi' in line:
return True # The string is found
return False # The string does not exist in the file
if check_string():
print('True')
time.sleep(5)
requests.post(WEB_HOOK_URL, data = json.dumps({
'text': "まさし",
'link_names': 1,
}))
else:
print('False')
time.sleep(2)
学習されたmasashiというワードがjsonの中にあればslackでつぶやくというコードになっています。※slackの設定は
こちら。
これを応用すれば設備の故障ランプとかも監視できそうな気がしてみました。
いろいろと応用してみたいと思います。