10/28/2019

PI : Pi Camera Last version with python 3

Old version Use Python2
https://intranet.sci.com/blog.php?u=281&b=1667

PI : Pi Camera Last version with python 3
ที่แตกต่างจาก python2 คือคำสั่ง python จะไม่เหมือนกัน ต้องเขียน Code ใหม่
https://pypi.org/project/slackclient/
เช่น
print
เดิม print ตัวแปร
ใหม่ print (ตัวแปร, " ")

with open ใช้ไม่ได้ Error python io

from slackclient import SlackClient
ต้องเปลี่ยนเป็น
from slack import WebClient

code ส่งข้อความ
เดิม
  1. from slackclient import SlackClient
  2. sc = SlackClient("XXXXXXXXX")
  3. sc.api_call(
  4.    "chat.postMessage",
  5.     channel="CF6GEHBDF",
  6.     text="Hello from Python! camera :tada:"
  7. )

ใหม่
  1. from slack import WebClient
  2. client = WebClient("XXXXXXX")
  3. response = client.chat_postMessage(
  4.    channel='#wifi',
  5.    text="Test")

ใช้เป็น client.chat_postMessage และ client.file_upload เป็นต้น ตามนี้

https://pypi.org/project/slackclient/

วิธีลง ที่เพิ่มขึ้นมาคือ
1. ลง slackclient ด้วยคำสั่ง
  1. pip install slackclient

ไม่ได้จะ Error
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting slackclient
Using cached https://www.piwheels.org/simple/slackcl ... ne-any.whl
slackclient requires Python '>=3.6.0' but the running Python is 2.7.16


ต้อง ลง pip3 สำหรับ python3
1.1. ลง pip3
  1. apt-get install python3-pip

1.2. ลง slackclient
  1. pip3 install slackclient


2. ดู python version ต้องเป็นตัวเดียวกัน
root@raspberrypi:/home/pi/Monitor# python --version
Python 3.7.3
root@raspberrypi:/home/pi/Monitor# python3 --version
Python 3.7.3

ถ้าเป็นแบบนี้จะ run ไม่ได้ หา Module ไม่พบ
root@raspberrypi:/home/pi# python --version
Python 2.7.2
root@raspberrypi:/home/pi# python3 --version
Python 3.7.3


ติดตั้ง python 3.7.0 ตาม Link เพื่อให้เหมือนกัน
https://installvirtual.com/install-python-3-7-on-raspberry-pi/

ทำต่างขั้นสุดท้าย
2.1. แก้ให้โปรแกรม เป็น Default
  1. nano ~/.bashrc

เพิ่ม
alias python='python3'

2.2. run
  1. source ~/.bashrc


ทดลองสร้าง python แล้ว Run คำสั่ง จะสามารถส่ง Slack ได้
(ถ้าไม่ได้ทำข้อ 2 ลองใช้คำสั่ง )
python3 ตามด้วยไฟล์.py ก็ได้เช่นกัน

3. คำสั่งเพิ่มเติม
ดู slackclient version
  1. pip3 list

Update slackclient version
  1. pip3 install slackclient --upgrade


4. เพิ่มเติมใน Motion ไม่ทำงาน ไม่ run คำสั่ง python ที่ไฟล์ motion.conf ถึงจะทำงาน
เดิม ใช้
  1. on_movie_start python /home/pi/slack_post.py

ใหม่ต้องใส่ path ของโปรแกรมด้วย
  1. on_movie_start /usr/bin/python3 /home/pi/slack_post.py

นอกนั้น Set ตามของเดิม
https://intranet.sci.com/blog.php?u=281&b=1667

Code สำเหร็จ
Code สำเร็จ slack_post.py
  1. import glob
  2. import os
  3. import time
  4. import glob
  5.  
  6. from slack import WebClient
  7. client = WebClient("XXXXXXXXX")
  8.  
  9. time.sleep(2)   # Delays for 5 seconds. You can also use a float value.
  10.  
  11. list_of_files = glob.glob('/home/pi/Monitor/*.jpg') # * means all if need specific format then *.csv
  12. latest_file = max(list_of_files, key=os.path.getctime)
  13. #print (latest_file, " ")
  14.  
  15. head, tail = os.path.split(latest_file)
  16. pathName = head+'/'+tail
  17. #with open(latest_file) as file_content:
  18. response = client.files_upload(
  19.    channels="test",
  20.    file=pathName,
  21.    title="Find movement in room IF."
  22.    )
  23.  

No comments:

Post a Comment