環境
人感センサ:se-10
raspberrypi zero wh
windows 10
python3
vscode(wsl)
したいこと(説明)
人感センサーで動きを感知→カメラで撮影→その写真をメッセージ付きでLINE Notifyに通知
ってやつを創りたいです。
プログラムが実行されると人感センサに反応してWebカメラが撮影します。
→その後実行されたカレントディレクトリで「日付.jpg」で保存されます。
外部モジュールでfswebcamを利用しています。連続撮影を防止するためにswの値を切り替え、シャッターを切るタイミングを調整しています。
これをLINE Notifyで自分宛に通知したいです。
回路図(写真)
実際のコード
python
1import RPi.GPIO as GPIO 2from time import sleep 3from datetime import datetime 4import subprocess 5import requests 6 7# line set 8url = "https://notify-api.line.me/api/notify" 9access_token = 'アクセストークン' 10 11 12 13# gpio set 14SENSOR_PORT = 23 15LED_PORT = 4 16 17GPIO.setmode(GPIO.BCM) 18GPIO.setup(SENSOR_PORT, GPIO.IN) 19GPIO.setup(LED_PORT, GPIO.OUT) 20 21def exec1(cmd): 22 r = subprocess.check_output(cmd, shell=True) 23 return r.decode("utf-8").strip() 24 25#last_post set 26last_post = datetime(2000, 1, 1) # random 27def take_photo(): 28 global last_post 29 now = datetime.now() 30 fname = now.strftime('%Y-%m-%d %H:%M:%S') + ".jpg" 31 exec1("fswebcam "+fname) 32 #line notification 33 # wait 10 minutes 34 sec = (now - last_post).seconds 35 if sec < (10*60): return 36 last_post = now 37 message = 'OK' 38 payload = {'message': message} 39 headers = {'Authorization': 'Bearer ' + access_token} 40 files = {'imageFile': open(fname, 'rb')} 41 r = requests.post(url, headers=headers, params=payload, files=files) 42 print(r.text) 43 44 45try: 46 sw = 0 47 while True: 48 v = GPIO.input(SENSOR_PORT) 49 if v == GPIO.HIGH: 50 GPIO.output(LED_PORT, GPIO.HIGH) 51 take_photo() 52 sw = 1 53 else: 54 GPIO.output(LED_PORT, GPIO.LOW) 55 sw = 0 56 sleep(0.1) 57 58except KeyboardInterrupt: 59 pass 60GPIO.cleanup() 61
error文
error
1--- Processing captured image... 2Writing JPEG image to '2020-03-02'. 3Writing JPEG image to '15:04:53.jpg'. 4Traceback (most recent call last): 5 File "camera-pe.py", line 50, in <module> 6 take_photo() 7 File "camera-pe.py", line 39, in take_photo 8 files = {'imageFile': open(fname, 'rb')} 9FileNotFoundError: [Errno 2] No such file or directory: '2020-03-02 15:04:53.jpg
最初に書き込まれたファイルが.jpgじゃないのも変だし。途中から書き込めなくなりそんなファイルはないよとでます。
ましてや、LINE Notifyに通知が行くこともありません。
参考
LINE Notifyとの連携や写真の送信方法は
こちらを参考にしました。
解決してほしいこと
以上のエラー文の解決とLINE Notifyに画像を送信できるようになるようコードレビューをお願いしたいです。
撮影自体は少なからず出来ているのでハード部分は問題ないかと思っています。
経験が浅く至らない点があるかと思いますがアドバイスを下さると光栄です。
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー