สารบัญ:
- ขั้นตอนที่ 1: ติดตั้ง Linux Motion บน Raspberry
- ขั้นตอนที่ 2: ตั้งค่า Google Photos API สำหรับ Python
- ขั้นตอนที่ 3: ทดสอบ
- ขั้นตอนที่ 4: ตัวเลือกเสริม: กำหนดค่าการเข้าถึงเว็บเป็น Real Time Streaming Camera
- ขั้นตอนที่ 5: เคล็ดลับ
วีดีโอ: การรวม Google Photos ของ Raspberry Pi Linux Motion: 5 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:04
แนวคิดคือการอัปโหลดรูปภาพและวิดีโอที่สร้างด้วยกล้องเปิดใช้งานการเคลื่อนไหวที่เชื่อมต่อกับ Raspberry Pi เพื่ออัปโหลดไฟล์ไปยังระบบคลาวด์ ซอฟต์แวร์ 'Motion' รองรับการอัปโหลดไปยัง Google Drive ผ่าน PyDrive ในบทความนี้ 'Motion' ใช้สำหรับอัปโหลดไปยัง Google Photos
ฮาร์ดแวร์:
ราสเบอร์รี่ Pi 3B+
เว็บแคม USB Logitech C920
ไม่ได้กำหนดการเลือกฮาร์ดแวร์ ฉันแค่เลือกสิ่งที่อยู่ในมือ
ข้อกำหนดเบื้องต้น:
เพื่อความสะดวก Raspberry pi ควรอยู่ในเครือข่ายท้องถิ่นของคุณ - เพื่อควบคุมโดยไม่ต้องใช้จอภาพ/แป้นพิมพ์ และอัปโหลด/ดาวน์โหลดไฟล์ สำหรับสิ่งนี้ คุณควรมีตัวแทน ssh บนพีซีของคุณ (เช่น สีโป๊ว)
ขอบคุณมากที่ ssandbac สำหรับบทช่วยสอนที่ยอดเยี่ยม หากคุณต้องการข้อมูลเพิ่มเติมเกี่ยวกับวิธีตั้งค่าสภาพแวดล้อม โปรดอ่านบทความนี้ ฉันยืมการติดตั้งการเคลื่อนไหวและกำหนดค่าขั้นตอนจากมัน และเพิ่มการเปลี่ยนแปลงบางอย่าง โดยเฉพาะอย่างยิ่ง แทนที่จะส่งอีเมลไฟล์และการแจ้งเตือน ตัวอย่างนี้ใช้การอัปโหลดไปยังอัลบั้มที่แชร์ใน Google รูปภาพ และรับการแจ้งเตือนประเภท "รูปภาพที่เพิ่ม" ในแถบการแจ้งเตือน
นี่คือขั้นตอน:
ขั้นตอนที่ 1: ติดตั้ง Linux Motion บน Raspberry
โดยเฉพาะอย่างยิ่งในตัวอย่างนี้ใช้การเคลื่อนไหว v4.0
1.1 อัพเดท pi
pi@raspberrypi:~ $ sudo apt-get update
pi@raspberrypi:~ $ sudo apt-get upgrade
1.2 ดาวน์โหลดภาพเคลื่อนไหว
pi@raspberrypi:~ $ sudo apt-get ติดตั้งการเคลื่อนไหว
1.3 ตอนนี้แก้ไขไฟล์นี้โดยมีการเปลี่ยนแปลงดังต่อไปนี้
pi@raspberrypi:~ $ sudo nano /etc/motion/motion.conf
# เริ่มในโหมด daemon (พื้นหลัง) และปล่อยเทอร์มินัล (ค่าเริ่มต้น: ปิด)
ภูตบน
# ใช้ไฟล์เพื่อบันทึกข้อความบันทึก หากไม่ได้กำหนด stderr และ syslog จะถูกใช้ (ค่าเริ่มต้น: ไม่ได้กำหนดไว้)
logfile /var/log/motion/motion.log
# ความกว้างของภาพ (พิกเซล) ช่วงที่ถูกต้อง: ขึ้นอยู่กับกล้อง ค่าเริ่มต้น: 352
ความกว้าง 1920
# ความสูงของภาพ (พิกเซล) ช่วงที่ถูกต้อง: ขึ้นอยู่กับกล้อง ค่าเริ่มต้น: 288
ความสูง 1080
# จำนวนเฟรมสูงสุดที่จะจับภาพต่อวินาที
อัตราเฟรม 30
# ระบุจำนวนภาพที่ถ่ายไว้ล่วงหน้า (บัฟเฟอร์) ก่อนการเคลื่อนไหว
พรี_แคปเจอร์ 5
# ไม่พบจำนวนเฟรมที่จะจับภาพหลังจากการเคลื่อนไหวอีกต่อไป
post_capture 5
# ส่งออกรูปภาพ 'ปกติ' เมื่อตรวจพบการเคลื่อนไหว (ค่าเริ่มต้น: เปิด)
output_pictures ปิด
# คุณภาพ (เป็นเปอร์เซ็นต์) ที่จะใช้โดยการบีบอัด jpeg
คุณภาพ 100
# ใช้ ffmpeg เพื่อเข้ารหัสภาพยนตร์แบบเรียลไทม์
ffmpeg_output_movies ปิด
# หรือช่วง 1 - 100 โดยที่ 1 หมายถึงคุณภาพแย่ที่สุดและ 100 คือดีที่สุด
ffmpeg_variable_bitrate 100
# เมื่อสร้างวิดีโอควรทำซ้ำเฟรมตามลำดับ
ffmpeg_duplicate_frames false
# Bool เพื่อเปิดหรือปิดใช้งาน extpipe (ค่าเริ่มต้น: ปิด)
use_extpipe บน
extpipe ffmpeg -y -f rawvideo -pix_fmt yuv420p -video_size %wx%h -framerate %fps -i pipe:0 -vcodec libx264 -preset ultrafast -f mp4 %f.mp4
target_dir /var/lib/motion
# คำสั่งที่จะดำเนินการเมื่อไฟล์ภาพยนตร์
; on_movie_end sudo python3 /var/lib/motion/photos.py %f.mp4 &
ทิ้งอันสุดท้ายด้วยเครื่องหมายอัฒภาคก่อน (แสดงความคิดเห็น) เพื่อยกเลิกการแสดงความคิดเห็นหลังจากแน่ใจว่าการบันทึกวิดีโอและการอัปโหลดใช้งานได้
1.4 แล้วเปลี่ยน
pi@raspberrypi:~ $ sudo nano /etc/default/motion
pi@raspberrypi:~ $ start_motion_daemon=yes
ขั้นตอนที่ 2: ตั้งค่า Google Photos API สำหรับ Python
2.1 แนะนำให้สร้างบัญชีใหม่เพื่อการนี้เพื่อแบ่งปันอัลบั้มกับบัญชีหลักของคุณ เพื่อรับการแจ้งเตือนเมื่อมีการเพิ่มไฟล์ใหม่ บวกกับพื้นที่จัดเก็บมากขึ้น เปิดใช้งาน Google Photos API สำหรับบัญชีที่คุณจะใช้ในการอัปโหลด
คุณควรมีไฟล์ credentials.json หลังจากนี้
2.2 การตั้งค่าสภาพแวดล้อม Python
โดยทั่วไป จำเป็นต้องมีการตั้งค่าสภาพแวดล้อมในราสเบอร์รี่เท่านั้น แต่ต้องมีการอนุญาต oauth ซึ่งสะดวกกว่าที่จะทำสำเร็จบนพีซี หากต้องการทำสิ่งนี้กับราสเบอร์รี่ คุณต้องเชื่อมต่อจอภาพ/แป้นพิมพ์กับมัน หรือตั้งค่า UI เดสก์ท็อประยะไกล ฉันเพิ่งติดตั้งสภาพแวดล้อมเดียวกันบนราสเบอร์รี่และพีซีทั้งคู่ ดังนั้นขั้นตอน 2.2…2.2.3 จึงถูกสร้างขึ้นบนพีซี 2.2.1, 2.2.2, 2.2.5, 2.2.6 บน Rpi
2.2.1 ติดตั้ง Python 3
2.2.2 ติดตั้งแพ็คเกจ google api ตามคู่มือ* (ดู 5.1)
บนพีซี
ติดตั้ง pip3 -- อัปเกรด google-api-python-client google-auth-httplib2 google-auth-oauthlib
ออนราสเบอร์รี่
pi@raspberrypi:~ $ sudo pip3 install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
2.2.3 ตรวจสอบการอัปโหลดสคริปต์ไปยัง google photos.. มันถูกวางไว้บน GitHub ของฉัน ใส่ลงในไดเร็กทอรีเดียวกันกับ credentials.json
2.2.4 ถ่ายภาพและทดสอบการอัปโหลด
python3 photos.py image.jpg
ติดตั้งการพึ่งพาที่ขาดหายไปหากมีแล้วลองอีกครั้ง ดังนั้น คุณควรได้รับ token.pickle ในไดเรกทอรีของสคริปต์และอัลบั้มที่แชร์ใหม่ซึ่งสร้างขึ้นในอินเทอร์เฟซเว็บ Google Photos ของคุณด้วย image-j.webp
2.2.5 แบ่งปันอัลบั้มกับบัญชีเกี่ยวกับสิ่งที่คุณต้องการรับการแจ้งเตือนเมื่อมีสื่อใหม่ที่เพิ่มเข้ามา เพิ่มบัญชีนี้ในโทรศัพท์ของคุณ
2.2.6 ใส่ photos.py และ token.pickle ใน /var/lib/motion บนราสเบอร์รี่ ผู้ใช้ 'pi' ไม่สามารถเขียนถึง 'motion's dir's ดังนั้นให้อัปโหลดไปที่ /home/pi ก่อน
scp photos.py token.pickle pi@IP:/home/pi
จากนั้นเข้าสู่ระบบราสเบอร์รี่และย้ายไฟล์ภายใต้ sudo
ssh pi@IP
pi@raspberrypi:~ $ sudo mv photos.py token.pickle /var/lib/motion
2.2.7 ตรวจสอบว่าการอัปโหลดทำงานบนราสเบอร์รี่อย่างไร ถ่ายรูปด้วย fswebcam แล้วลองอัปโหลด
pi@raspberrypi:~ $ sudo fswebcam /var/lib/motion/image.jpg
pi@raspberrypi:~ $ sudo python3 /var/lib/motion/photos.py /var/lib/motion/image.jpg
มีจิตวิญญาณของ image-j.webp
ขั้นตอนที่ 3: ทดสอบ
3.1 บริการสตาร์ทโมชั่น
pi@raspberrypi:~ $ sudo service เริ่มเคลื่อนไหว
คุณสามารถเปลี่ยนคำสั่งเป็น "หยุด" หรือ "เริ่มต้นใหม่"
3.2 เปิดใช้งานบันทึกการเคลื่อนไหว
pi@raspberrypi:~ $ tail -f /var/log/motion/motion.log
3.2 ดูเอาต์พุตของกล้องบนอุปกรณ์อื่นที่เชื่อมต่อกับเครือข่ายท้องถิ่นเดียวกัน เข้าสู่เบราว์เซอร์:
IP:8081
3.3 การดูบันทึกรอจนกว่าจะตรวจพบการเคลื่อนไหวและไฟล์ NAME.mp4 ถูกเขียนใน /var/lib/motion จากนั้นเปิดสคริปต์การอัปโหลดด้วยตนเอง
pi@raspberrypi:~ $ sudo python3 /var/lib/motion/photos.py /var/lib/motion/NAME.mp4
ตรวจสอบร่องรอยของหลาม รอจนกระทั่ง event_end ปรากฏขึ้นใน motion.log จากนั้นไปที่อัลบั้ม "helloworld" ใน Google Photos ของคุณและตรวจสอบว่ามีการอัปโหลดวิดีโอหรือไม่
3.4 หากการอัปโหลดสำเร็จให้ยกเลิกความคิดเห็นใน /etc/motion.conf บรรทัด:
pi@raspberrypi:~ $ sudo nano /etc/motion.conf
# คำสั่งที่จะดำเนินการเมื่อไฟล์ภาพยนตร์พร้อม
on_movie_end sudo python3 /var/lib/motion/photos.py %f.mp4 &
pi@raspberrypi:~ $ sync
pi@raspberrypi:~ $ sudo service เริ่มการเคลื่อนไหวใหม่
3.5 การดูบันทึกการเคลื่อนไหวและในอัลบั้ม ให้ตรวจสอบว่าวิดีโออัปโหลดโดยอัตโนมัติหรือไม่
3.6 เลือกแบ่งปันอัลบั้มกับบัญชีหลักของคุณเพื่อรับการแจ้งเตือนเมื่อมีการเพิ่มวิดีโอหรือรูปภาพใหม่
ขั้นตอนที่ 4: ตัวเลือกเสริม: กำหนดค่าการเข้าถึงเว็บเป็น Real Time Streaming Camera
ขั้นตอนนี้อิงตามบทช่วยสอน Parreno ของ Michel ฉันเพิ่งเลือก FreeDNS แทน NoIP ตามที่แนะนำที่นี่
4.1 กำหนดค่าการเข้าถึงเซิร์ฟเวอร์การเคลื่อนไหวสตรีมมิ่งวิดีโอที่ได้รับอนุญาต:
pi@raspberrypi:~ $ sudo nano /etc/motion/motion.conf
# ตั้งค่าวิธีการรับรองความถูกต้อง (ค่าเริ่มต้น: 0)
# 0 = ปิดการใช้งาน
# 1 = การรับรองความถูกต้องพื้นฐาน
# 2 = MD5 ไดเจสต์ (การรับรองความถูกต้องที่ปลอดภัยยิ่งขึ้น)
stream_auth_method 2
# การรับรองความถูกต้องสำหรับสตรีม ชื่อผู้ใช้ไวยากรณ์:รหัสผ่าน
# ค่าเริ่มต้น: ไม่ได้กำหนด (ปิดการใช้งาน)
webcontrol_authentication username:รหัสผ่าน
# อัตราเฟรมสูงสุดสำหรับสตรีมสตรีม (ค่าเริ่มต้น: 1)
stream_maxrate 30
# จำกัด การเชื่อมต่อสตรีมไปยัง localhost เท่านั้น (ค่าเริ่มต้น: เปิด)
stream_localhost ปิด
หากคุณจะไม่ใช้อินเทอร์เฟซการควบคุมเว็บจากเครือข่ายภายนอก ให้ปิดการใช้งานไว้ (ตามค่าเริ่มต้น)
# จำกัด การควบคุมการเชื่อมต่อไปยัง localhost เท่านั้น (ค่าเริ่มต้น: เปิด)
webcontrol_localhost บน
นอกจากนี้ เนื่องจากราสเบอร์รี่ออนไลน์ ฉันแนะนำให้เปลี่ยนรหัสผ่านเริ่มต้นของราสเบอร์รี่
pi@raspberrypi:~ $ passwd
แม้ว่าพอร์ต ssh 22 จะไม่ถูกเปลี่ยนเส้นทางไปยังราสเบอร์รี่
4.2 ไปที่ไซต์ FreeDNS
4.3 ลงทะเบียน
4.4 เพิ่มโดเมนย่อย (สำหรับสมาชิก -> โดเมนย่อย)
4.5 เลือกไคลเอนต์ DNS ที่จะติดตั้งบน Raspberry (สำหรับสมาชิก -> Dynamic DNS -> ทรัพยากร Synamic DNS -> ไคลเอนต์ DNS แบบไดนามิก)
ฉันเลือก wget_script update.sh จาก Adam Dean (ที่ด้านล่างของหน้า)
มีตัวยึดตำแหน่ง _YOURAPIKEYHERE_ และ _YOURDOMAINHERE_ ไปที่ (สำหรับสมาชิก -> Dynamic DNS)
และในหน้าด้านล่าง คุณจะพบตัวอย่างสคริปต์ที่มี APIKEY และ DOMAIN ของคุณ (อันที่เพิ่มเข้ามาใน 4.4) ฉันรับค่าเหล่านี้จาก Wget Script และแทนที่ _YOURAPIKEYHERE_ และ _YOURDOMAINHERE_ ใน update.sh
4.6 จากนั้นเรียกใช้ update.sh บนราสเบอร์รี่ อาจต้องใช้ dnsutils สำหรับ nslookup ติดตั้งแล้ว:
pi@raspberrypi:~ $ sudo apt-get dnsutils
4.7 จากนั้นกำหนดค่าเราเตอร์ของคุณเพื่อเปลี่ยนเส้นทางคำขอของโลกภายนอกไปยังพอร์ต 8081 ไปยังip.ของราสเบอร์รี่
4.8 สำรอง IP สำหรับ MAC ของราสเบอร์รี่ของคุณในการตั้งค่า DHCP ดังนั้น Rpi จะมี IP เดียวกันเสมอ
4.9 จากนั้นเข้าสู่เบราว์เซอร์บนอุปกรณ์ที่ไม่ได้เชื่อมต่อกับเครือข่ายท้องถิ่น:
โดเมนของคุณ:8081
ป้อนข้อมูลรับรองที่คุณกำหนดไว้ใน motion.conf
ทดสอบว่าวิดีโอทำงานอย่างไร
4.10 เพื่ออัปเดต DDNS ตั้งค่างาน cron โดยอัตโนมัติ ดู quick_cron_example บน (สำหรับสมาชิก -> Dynamic DNS)
ขั้นตอนที่ 5: เคล็ดลับ
5.1 ระมัดระวังในการติดตั้งแพ็คเกจหลามบนราสเบอร์รี่ ฉันใช้เวลาหนึ่งวันในการแก้จุดบกพร่องนี้ – ปัญหาคือจากคอนโซล สคริปต์ทำงานได้ดี แต่การถูกเรียกจากการโทรกลับของเหตุการณ์การเคลื่อนไหวกลับไม่เป็นเช่นนั้น สิ่งที่ทำให้แย่ลงคือไม่มีร่องรอยจากสคริปต์ในกรณีหลัง
เหตุผลก็คือตามคำแนะนำที่ฉันติดตั้งแพ็คเกจสำหรับผู้ใช้ 'pi' (ซึ่งโดยค่าเริ่มต้นจะอยู่ในไดเร็กทอรี /home/pi และจำกัดสำหรับผู้ใช้รายอื่น) แต่การเรียกใช้สคริปต์ในฐานะบริการย่อยของ 'motion' แพ็คเกจจะต้องเป็น มีให้สำหรับผู้ใช้ 'การเคลื่อนไหว' เช่นกัน ในที่สุดฉันก็แก้ไขการติดตั้งแพ็คเกจเป็น
sudo pip3 …
นี่ไม่ใช่วิธีที่เหมาะสมที่ยังใช้ได้ การติดตั้งโดยไม่ใช้ sudo เป็น pip3 --system ทำให้ฉันเกิดข้อผิดพลาดด้วยเหตุผลบางประการ
ตามลำดับสคริปต์เรียกว่ายังภายใต้ sudo (ดู motion.conf)
ในระหว่างการแก้ไขปัญหานี้ ฉันได้ทำการเปลี่ยนแปลงที่ไม่จำเป็นมากมายและไม่แน่ใจว่าสิ่งใดจำเป็น และตอนนี้ก็ขี้เกียจเกินกว่าจะย้อนกลับทีละส่วนและดูว่าจะหยุดทำงานเมื่อใด โดยเฉพาะอย่างยิ่งได้รับสิทธิ์ผู้ดูแลการเคลื่อนไหว:
pi@raspberrypi:~ $ กลุ่มเคลื่อนไหว
การเคลื่อนไหว: การเคลื่อนไหว adm sudo ผู้ใช้วิดีโอเสียง netdev pi
pi@raspberrypi:~ $ sudo cat /etc/sudoers.d/010_pi-nopasswd
pi ALL=(ALL) NOPASSWD: ALL
การเคลื่อนไหว ALL=(ALL) NOPASSWD: ALL
ยังได้เปลี่ยนเจ้าของไฟล์และการอนุญาตที่คล้ายกับการอัปโหลดไปยัง Google ไดรฟ์ อาจช่วยคุณได้ในกรณีที่คุณมีปัญหาคล้ายกัน
5.2 Google Photos API อนุญาตให้เพิ่มไฟล์ในอัลบั้มที่แชร์เท่านั้น ทุกคนที่มีลิงก์สามารถเข้าถึงได้ อย่าแชร์ด้วยลิงก์และลบภาพยนตร์เก่าหรือย้ายไปที่ถังขยะหรือจากอัลบั้ม ในกรณีหลังพวกเขายังคงอยู่ในบัญชี
5.3 Google photos Assistant ตรวจจับใบหน้า ซึ่งมีประโยชน์มากหากคุณภาพของกล้องดี เป็นโบนัสทำให้สื่อประเภทแฟนซีของการรวบรวมและ gifs เป็นต้น
5.4 ฉันพยายามใช้โมเด็ม USB 4G LTE USB สำหรับการเข้าถึงอินเทอร์เน็ต และนี่คือผลลัพธ์ของฉัน 5.4.1 Huawei E3372h-153 ใช้งานได้กับราสเบอร์รี่โดยไม่มีปัญหา และซอฟต์แวร์พิเศษ 5.4.2 ยังเปิดใช้งานฮอตสปอตด้วย ดังนั้น Rasperry จึงแชร์การเชื่อมต่ออินเทอร์เน็ตผ่าน wifi มี https://howtoraspberrypi.com/create-a-wi-fi-hotspot-in-less-than-10-minutes-with-pi-raspberry/ คำแนะนำง่ายๆ ในการทำโดยใช้ RaspAP 5.4.3 Dynamic DNS ไม่ทำงานในเครือข่าย 4G ของแครี่ของฉัน มีคำอธิบายว่าทำไม
5.5 หลังจากใช้ระบบนี้มาสองสามสัปดาห์แล้ว แม้ว่าวิดีโอจะสะดวกกว่าในการดูและอัปโหลด แต่ Google Photos ก็ทำงานได้ดีกับรูปภาพ เช่น ช่วยให้สามารถจัดกลุ่มสิ่งของ/ใบหน้าเพื่อวิเคราะห์ภาพเท่านั้น จากนั้นจึงค้นหาใบหน้า/สิ่งของจากภาพในวิดีโอได้เท่านั้น แต่ไม่ตรงกันข้าม ดังนั้นฉันจะทดสอบรูปภาพที่อัปโหลดแทนที่จะเป็นวิดีโอ
แนะนำ:
การรวม Array แบบเรียกซ้ำใน Java: 9 ขั้นตอน
Recursively Summing an Array ใน Java: Recursion เป็นขั้นตอนที่มีประโยชน์และประหยัดเวลาซึ่งสามารถแก้ปัญหาได้อย่างรวดเร็วด้วยโค้ดเพียงเล็กน้อย การเรียกซ้ำเกี่ยวข้องกับวิธีการที่คุณสร้างขึ้นเพื่อเรียกตัวเองว่าปัญหาเดิมสั้นลง สำหรับตัวอย่างนี้ เราจะสรุปอาร์เรย์ของ
Wifi ควบคุม 12v Led Strip โดยใช้ Raspberry Pi พร้อม Tasker, การรวม Ifttt: 15 ขั้นตอน (พร้อมรูปภาพ)
Wifi ที่ควบคุม 12v Led Strip โดยใช้ Raspberry Pi พร้อม Tasker, Ifttt Integration: ในโครงการนี้ ฉันจะแสดงวิธีควบคุมแถบ LED แบบอะนาล็อก 12v อย่างง่ายผ่าน wifi โดยใช้ raspberry pi สำหรับโครงการนี้ คุณจะต้อง: 1x Raspberry Pi (I) กำลังใช้ Raspberry Pi 1 Model B+) 1x RGB 12v Le
การรวม Arduino และ Apple HomeKit - ควบคุมบ้านของคุณจาก Siri! IoT มาแล้ว: 6 ขั้นตอน
การรวม Arduino และ Apple HomeKit - ควบคุมบ้านของคุณจาก Siri! IoT อยู่ที่นี่: คำแนะนำนี้จะช่วยให้คุณเพิ่มบอร์ด Arduino ลงใน HomeKit ของ Apple บนอุปกรณ์ iOS ได้อย่างรวดเร็วและง่ายดาย มันเปิดโอกาสทุกประเภทรวมถึงสคริปต์ที่ทำงานบนเซิร์ฟเวอร์ รวมกับ Apples HomeKit "ฉาก" มันทำให้
การรวม Arduino Uno และ ESP8266 อย่างง่าย: 6 ขั้นตอน
การรวม Arduino Uno และ ESP8266 อย่างง่าย: เป้าหมายของเราคือการสร้างไลบรารีคำสั่ง Esp8266 AT (ตามไลบรารี ITEAD) ซึ่งจะทำงานได้ดีกับซอฟต์แวร์ซีเรียลบนอุปกรณ์ ESP8266 ส่วนใหญ่ โดยมีเฟิร์มแวร์ที่ตอบสนองต่อคำสั่ง AT (ซึ่งโดยปกติ ค่าเริ่มต้นของผู้ผลิต)
การรวม MQTT: 4 ขั้นตอน
การรวม MQTT: โพสต์ Facebook ของเรา: https://www.facebook.com/IoTGuruLive/videos/359772791497906