忍者ブログ

設備のマニアどっとこむ

IoT開発、設備・DIYのブログ!

M5stack UNITV2のjson出力をどうにかした話

先日買った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の設定はこちら

これを応用すれば設備の故障ランプとかも監視できそうな気がしてみました。
いろいろと応用してみたいと思います。








拍手[0回]

PR

コメント

翻訳(Translate)

プロフィール

HN:
佐々木 雅史
性別:
男性
自己紹介:
2021年 ラズパイ、M5stackを用いたIoT開発を専門で受注するアルティメンテを設立。代表を務める。
・2020年ラズパイコンテスト優良賞受賞
・設備系資格多数(電験3種、消防設備士甲4、2級ボイラー技士、危険物乙4、電工2種、技術士補(電気・電子)、エネ電、フォークリフトなど)

AD

カレンダー

10 2024/11 12
S M T W T F S
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