สารบัญ:
- ขั้นตอนที่ 1: การตรวจสอบอุณหภูมิ
- ขั้นตอนที่ 2: การตั้งค่า Cloud4Rpi.io
- ขั้นตอนที่ 3: การตรวจสอบ UPS
- ขั้นตอนที่ 4: การเตรียมการเพื่อ “การผลิต”
- ขั้นตอนที่ 5: การตั้งค่าแผงควบคุม
วีดีโอ: การตรวจสอบบ้าน DIY ด้วย RaspberryPi และ Cloud4Rpi: 5 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:04
วันหยุดสุดสัปดาห์ในฤดูหนาววันหนึ่ง ฉันไปบ้านในชนบทของฉัน และพบว่าที่นั่นอากาศหนาวมาก มีบางอย่างเกิดขึ้นกับไฟฟ้าและเบรกเกอร์ RCD ได้ปิดสวิตช์ และเครื่องทำความร้อนก็ดับลงเช่นกัน ฉันโชคดีที่มาที่นี่ ไม่เช่นนั้นในหลายๆ วันทุกอย่างจะถูกแช่แข็ง ซึ่งไม่ดีต่อท่อและหม้อน้ำ
ฉันมี Raspberry Pi อยู่หลายตัวและเซ็นเซอร์ความร้อน ฉันก็เลยคิดว่า - ทำไมฉันไม่สร้างอุปกรณ์ตรวจสอบง่ายๆ ล่ะ คำแนะนำด้านล่างถือว่าคุณมี Raspberry Pi พร้อม Raspbian และตั้งค่าการเชื่อมต่อเครือข่าย ในกรณีของฉันคือ Raspberry Pi B+ พร้อม Raspbian (2018–06–27-raspbian-stretch-lite)
ขั้นตอนที่ 1: การตรวจสอบอุณหภูมิ
จะเชื่อมต่อเซ็นเซอร์อุณหภูมิ DS18B20 ได้อย่างไร? แค่ google วิธีการทำเช่นนี้ คุณจะเห็นรูปภาพมากมายเช่นนี้:
ในกรณีของฉันฉันมีสายสีดำสีเหลืองและสีแดง สีดำคือกราวด์ ไปที่พินกราวด์ สีแดงคือกำลัง - ไปที่พิน 3.3v และสีเหลืองคือข้อมูล - ควรไปที่พิน GPIO4 โดยมีตัวต้านทาน 4.7 kOm เชื่อมต่อระหว่างข้อมูลและพลังงานหมายเหตุ คุณสามารถเชื่อมต่อเซ็นเซอร์หลายตัวได้ แบบขนาน (เป็นดิจิตอลและมีที่อยู่ต่างกัน) คุณต้องการตัวต้านทานเพียงตัวเดียว หลังจากเชื่อมต่อเซ็นเซอร์ของคุณแล้ว คุณควรเปิดใช้งาน 1Wire ใน raspi-config:
sudo raspi-config
ไปที่ 5 ตัวเลือกการเชื่อมต่อ เปิดใช้งาน P7 1-Wire และรีบูต
จากนั้นคุณสามารถทดสอบว่าคุณสามารถเห็นเซ็นเซอร์ได้หรือไม่:
sudo modprobe w1-gpisudo modprobe w1-thermls /sys/bus/w1/devices/
คุณควรเห็นสิ่งนี้:
pi@vcontrol:~ $ ls /sys/bus/w1/devices/28–00044eae2dff w1_bus_master1
28–00044eae2dff คือเซ็นเซอร์อุณหภูมิของเรา
ฮาร์ดแวร์พร้อม ตอนนี้ฉันต้องตั้งค่าส่วนการตรวจสอบ ฉันต้องการบางอย่างที่จะแสดงข้อมูลให้ฉันทราบและแจ้งให้ฉันทราบหากอุปกรณ์ถูกตัดการเชื่อมต่อชั่วขณะหนึ่งหรือไม่มีกระแสไฟ หรืออุณหภูมิต่ำ เห็นได้ชัดว่านี่ไม่ใช่ราสเบอร์รี่ pi เอง ควรมีเซิร์ฟเวอร์หรือบริการบางอย่างในอินเทอร์เน็ตที่ตรวจสอบอุปกรณ์ของฉัน
ฉันสามารถสร้างเซิร์ฟเวอร์ที่เรียบง่าย รับโฮสติ้ง และตั้งค่าทุกอย่างได้ แต่จริงๆ แล้ว ฉันไม่ต้องการทำ โชคดีที่มีคนคิดเกี่ยวกับเรื่องนี้แล้วและสร้าง cloud4rpi.io ซึ่งเป็นแผงควบคุมระบบคลาวด์สำหรับอุปกรณ์ของคุณ
ขั้นตอนที่ 2: การตั้งค่า Cloud4Rpi.io
Cloud4Rpi ให้บริการที่ช่วยให้อุปกรณ์ของคุณส่งและรับข้อมูลโดยใช้โปรโตคอล MQTT หรือ HTTP พวกเขามีไลบรารีไคลเอนต์สำหรับ Python ดังนั้นฉันจะใช้ Python
ตัวอย่าง Python ที่มาพร้อมกับบริการ Cloud4Rpi มีโค้ดสำหรับเซ็นเซอร์อุณหภูมิ DS18B20 แล้ว
ดังนั้นฉันจึงไปที่ https://cloud4rpi.io สร้างบัญชีและเพิ่มอุปกรณ์ใหม่ที่นั่น หน้าอุปกรณ์มีโทเค็น - สตริงที่ระบุอุปกรณ์และควรระบุในโปรแกรมที่ส่งข้อมูล
ในการเริ่มต้น คุณควรอัปเดตตัวจัดการแพ็คเกจและอัปเกรดแพ็คเกจเสมอ (หมายเหตุ: อาจใช้เวลาหลายชั่วโมงหากคุณไม่ได้อัปเกรดมาระยะหนึ่ง):
sudo apt-get update && sudo apt-get upgrade
จากนั้นติดตั้ง git, Python และตัวจัดการแพ็คเกจ Pip:
sudo apt-get ติดตั้ง git python python-pip
จากนั้น ติดตั้งไลบรารี cloud4rpi Python:
sudo pip ติดตั้ง cloud4rpi
ในที่สุด ฉันก็พร้อมที่จะเขียนโปรแกรมควบคุมแล้ว ฉันเริ่มจากตัวอย่างที่
โคลน git https://github.com/cloud4rpi/cloud4rpi-raspberrypi… cloud4rpicd cloud4rpi
ไฟล์โปรแกรมหลักคือ control.py - ฉันต้องแก้ไขมันตามความต้องการของฉัน ขั้นแรก แก้ไขโปรแกรมและวางโทเค็น:
sudo nano control.py
ค้นหาบรรทัด DEVICE_TOKEN='…'] และระบุโทเค็นอุปกรณ์ที่นั่น หลังจากนั้นฉันสามารถรันโปรแกรมได้ง่ายๆ: มันทำงานและรายงานอุณหภูมิในตัวแปร RoomTemp:
sudo python control.py
ทำงานและรายงานอุณหภูมิในตัวแปร RoomTemp
โปรดทราบว่าจะพบเซ็นเซอร์ ds18b20 onewire ทั้งหมด
ds_sensors = ds18b20. DS18B20.find_all()
และใช้เซ็นเซอร์แรกที่พบ:
RoomTemp': { 'type': 'numeric', 'bind': ds_sensors[0] if ds_sensors else None }
โอเค นั่นเป็นเรื่องง่าย เพราะโปรแกรมตัวอย่างมีทุกอย่างที่จำเป็นสำหรับการทำงานกับเซ็นเซอร์ ds18b20 บน Raspberry Pi ตอนนี้ฉันต้องหาวิธีรายงานสถานะพลังงาน
ขั้นตอนที่ 3: การตรวจสอบ UPS
สิ่งต่อไปที่ฉันต้องการตรวจสอบคือสถานะของ UPS ดังนั้นหากไฟฟ้าดับ ฉันจะรู้ก่อนที่ทุกอย่างจะตัดการเชื่อมต่อ
ฉันมี APC UPS ที่มีตัวควบคุม USB ดังนั้นฉันจึง googled อย่างรวดเร็วและพบว่าฉันต้องการ apcupsd https://www.anites.com/2013/09/monitoring-ups.html… ฉันพยายามติดตั้งผ่าน apt-get หลายครั้ง และมันไม่ทำงานสำหรับฉันด้วยเหตุผลหลายประการ ฉันจะแสดงวิธีการติดตั้งจากแหล่งที่มา
wget https://sourceforge.net/projects/apcupsd/files/ap…tar xvf apcupsd-3.14.14.tar.gz cd apcupsd-3.14.14./configure --enable-usb sudo make sudo make install
จากนั้นฉันแก้ไข apcupsd.conf เพื่อเชื่อมต่อกับ UPS ของฉันผ่าน usb
sudo nano /etc/apcupsd/apcupsd.conf# #UPSCABLE สมาร์ท UPSCABLE usb # #UPSTYPE apcsmart #DEVICE /dev/ttyS0 UPSTYPE usb DEVICE
ตอนนี้ฉันสามารถเสียบสาย USB จาก UPS กับ RaspberryPi แล้วทดสอบว่าพบ UPS หรือไม่
sudo apctest
ไม่ควรให้ข้อความแสดงข้อผิดพลาดแก่คุณ
ตอนนี้ sevice apcupsd ควรเริ่มต้น:
sudo systemctl start apcupsd
หากต้องการสอบถามสถานะ UPS ฉันสามารถใช้คำสั่งสถานะ:
sudo /etc/init.d/apcupsd status
และมันจะแสดงผลดังนี้:
APC: 001, 035, 0855DATE: 2018-10-14 16:55:30 +0300 HOSTNAME: vcontrol VERSION: 3.14.14 (31 May 2016) debian UPSNAME: vcontrol CABLE: USB Cable DRIVER: USB UPS Driver UPSMODE: Stand Alone STARTTIME: 2018-10-14 16:54:28 +0300 MODEL: Back-UPS XS 650CI STATUS: ONLINE LINEV: 238.0 Volts LOADPCT: 0.0 Percent BCHARGE: 100.0 Percent TIMELEFT: 293.3 Minutes MBATTCHG: 5 Percent MINTIMEL: 3 minutes MAXTIME: 0 Seconds SENSE: Medium LOTRANS: 140.0 Volts HITRANS: 300.0 Volts ALARMDEL: 30 Seconds BATTV: 14.2 Volts LASTXFER: No transfers since turnon NUMXFERS: 0 TONBATT: 0 Seconds CUMONBATT: 0 Seconds XOFFBATT 000002 N/A 0 STATFLAG: ไม่มี: 2014-06-10 NOMINV: 230 Volts NOMBATTV: 12.0 Volts NOMPOWER: 390 Watts FIRMWARE: 892. R3. I USB FW:R3 END APC: 2018-10-14 16:55:38 +0300
ฉันต้องการสถานะ - ซึ่งเป็นบรรทัด "สถานะ:"
ไลบรารี Cloud4rpi มีโมดูล 'rpy.py' ที่ส่งคืนพารามิเตอร์ระบบ Raspberry Pi เช่น ชื่อโฮสต์หรืออุณหภูมิ cpu เนื่องจากพารามิเตอร์ทั้งหมดเหล่านี้เป็นผลมาจากการรันคำสั่งบางคำสั่งและการแยกวิเคราะห์เอาต์พุต มันจึงมีฟังก์ชัน 'parse_output' ที่มีประโยชน์ซึ่งทำสิ่งที่ฉันต้องการได้อย่างแท้จริง นี่คือวิธีรับสถานะ UPS ของฉัน:
def ups_status(): result = rpi.parse_output(r'STATUS\s+:\s+(S+)', ['/etc/init.d/apcupsd', 'status']) ถ้าผลลัพธ์: ส่งคืนผลลัพธ์อื่น: ส่งคืน 'ไม่รู้จัก'
ในการส่งสถานะนี้ไปยัง cloud4rpi ฉันต้องประกาศตัวแปร UPSStatus และผูกไว้กับฟังก์ชัน ups_status ของฉัน: ตอนนี้ฉันสามารถเรียกใช้โปรแกรมของฉันได้:
ตัวแปร = { 'RoomTemp': { 'type': 'numeric', 'bind': ds_sensors[0] }, 'UPSStatus': { 'type': 'string', 'bind': ups_status } }
และฉันสามารถเห็นตัวแปรของฉันได้ทันทีที่หน้าอุปกรณ์ cloud4rpi
ขั้นตอนที่ 4: การเตรียมการเพื่อ “การผลิต”
ทุกอย่างใช้งานได้ และตอนนี้ฉันต้องเตรียมอุปกรณ์ให้อยู่ในโหมดอัตโนมัติ
อันดับแรก ฉันจะปรับช่วงเวลา ช่วงการสำรวจความคิดเห็นกำหนดความถี่ที่โปรแกรมตรวจสอบอุณหภูมิและสถานะของ UPS - ตั้งค่าเป็นหนึ่งวินาที
ผลลัพธ์จะถูกส่งไปยังระบบคลาวด์ทุก 5 นาที และข้อมูลการวินิจฉัย - ทุกชั่วโมง
# ค่าคงที่DATA_SENDING_INTERVAL = 300 # วินาที DIAG_SENDING_INTERVAL = 3600 # วินาที POLL_INTERVAL = 1 # วินาที
เมื่อสถานะของ UPS เปลี่ยนไป - ฉันไม่ต้องการให้อุปกรณ์รอเป็นเวลา 5 นาที และฉันจะส่งข้อมูลทันที ดังนั้นฉันจึงแก้ไขลูปหลักเล็กน้อยและมีลักษณะดังนี้:
data_timer = 0diag_timer = 0 prevUPS = 'ONLINE' ในขณะที่ True: newUPS = ups_status() ถ้า (data_timer <= 0) หรือ (newUPS != prevUPS): device.publish_data() data_timer = DATA_SENDING_INTERVAL prevUPS = newUPS ถ้า = 0diag:_timer < device.publish_diag() diag_timer = DIAG_SENDING_INTERVAL สลีป (POLL_INTERVAL) diag_timer -= POLL_INTERVAL data_timer -= POLL_INTERVAL
การทดสอบ: เรียกใช้สคริปต์:
sudo python control.py
และฉันสามารถดูสถานะ UPS ได้ในหน้าอุปกรณ์ของฉัน
ถ้าฉันปิดไฟของ UPS สถานะจะเปลี่ยนไปในไม่กี่วินาที ทุกอย่างก็ทำงาน ตอนนี้ฉันต้องเริ่ม apcupsd และ control.py ของฉันเมื่อเริ่มต้นระบบ บริการ Apcupsd นั้นเก่าและเพื่อเริ่มต้นบน raspbian สมัยใหม่ ฉันควรแก้ไขไฟล์ /etc/init.d/apcupsd โดยเพิ่มบรรทัดเหล่านี้ไว้ที่ด้านบนสุด:
### เริ่มต้น INIT INFO# ระบุ: apcupsd # Required-Start: $all # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: # Short-Description: APC UPS daemon… ### END INIT ข้อมูล#
จากนั้นเปิดใช้งานบริการ:
sudo systemctl เปิดใช้งาน apcupsd
จากนั้นเริ่มบริการ:
sudo systemctl start apcupsd
ตอนนี้ apcupsd จะเริ่มทำงานเมื่อเริ่มต้นระบบ
ในการติดตั้ง control.py เป็นบริการ ฉันใช้สคริปต์ service_install.sh ที่ให้มา:
sudo bash service_install.sh ~/cloud4rpi/control.py
ตอนนี้บริการเริ่มต้นขึ้นและควรจะสามารถรีบูตได้
ขั้นตอนที่ 5: การตั้งค่าแผงควบคุม
Cloud4rpi ให้ฉันตั้งค่าแผงควบคุมสำหรับอุปกรณ์ของฉัน คุณสามารถเพิ่ม “วิดเจ็ต” และผูกเข้ากับตัวแปรอุปกรณ์ได้
อุปกรณ์ของฉันมีตัวแปรแบบอ่านอย่างเดียวสองตัว - RoomTemp และ UPSStatus:
ตัวแปร = { 'RoomTemp': { 'type': 'numeric', 'bind': ds_sensors[0] }, 'UPSStatus': { 'type': 'string', 'bind': ups_status } }
ฉันเพิ่มวิดเจ็ต 3 รายการ - ตัวเลขสำหรับ RoomTemp ข้อความสำหรับ UPSStatus และแผนภูมิสำหรับ RoomTemp
ฉันสามารถตั้งค่าการแจ้งเตือนได้ ดังนั้นฉันจึงได้รับอีเมลเมื่ออุณหภูมิอยู่นอกช่วงที่กำหนด UPS ออฟไลน์หรือตัวอุปกรณ์ไม่ส่งข้อมูลเมื่อควร ตอนนี้ฉันมั่นใจได้เลยว่าบ้านในชนบทของฉันโอเค และสามารถแจ้งเตือนได้ เวลามีอะไรผิดพลาดก็เลยโทรไปถามเพื่อนบ้านดูว่าเกิดอะไรขึ้น นี่คือรหัสจริงของ control.py
แนะนำ:
วิธีการตั้งค่า OSMC ด้วย Hyperion บน Raspberry Pi ด้วย WS2812b Led Strip: 8 ขั้นตอน
วิธีการตั้งค่า OSMC ด้วย Hyperion บน Raspberry Pi ด้วย WS2812b Led Strip: บางครั้งฉันพูดภาษาอังกฤษได้ดีมาก บางครั้งก็ไม่มี… สิ่งแรกเลย นี่เป็นการสอนครั้งแรกของฉันและภาษาอังกฤษไม่ใช่ภาษาแม่ของฉัน ดังนั้นโปรดอย่ากดดันฉันมากเกินไป นี่จะไม่เกี่ยวกับวิธีการสร้างเฟรมที่ง่าย มันเกี่ยวกับการติดตั้ง
Blinds Control ด้วย ESP8266, Google Home และ Openhab Integration และ Webcontrol: 5 ขั้นตอน (พร้อมรูปภาพ)
การควบคุมมู่ลี่ด้วย ESP8266, Google Home และ Openhab Integration และ Webcontrol: ในคำแนะนำนี้ ฉันจะแสดงให้คุณเห็นว่าฉันเพิ่มระบบอัตโนมัติให้กับมู่ลี่ของฉันอย่างไร ฉันต้องการเพิ่มและลบระบบอัตโนมัติได้ ดังนั้นการติดตั้งทั้งหมดจึงเป็นแบบหนีบ ส่วนหลักคือ: สเต็ปเปอร์มอเตอร์ ตัวขับสเต็ปควบคุม bij ESP-01 เกียร์และการติดตั้ง
DIY IBeacon และ Beacon Scanner ด้วย Raspberry Pi และ HM13: 3 ขั้นตอน
DIY IBeacon และ Beacon Scanner ด้วย Raspberry Pi และ HM13: Story A beacon จะส่งสัญญาณอย่างต่อเนื่องเพื่อให้อุปกรณ์บลูทู ธ อื่น ๆ รู้ว่ามีอยู่ และฉันอยากได้บีคอนบลูทูธเพื่อติดตามกุญแจมาตลอด เพราะฉันลืมเอามันมาเหมือน 10 ครั้งในปีที่แล้ว และฉันก็เกิดขึ้น
ปั๊มเครื่องชงกาแฟอัจฉริยะควบคุมโดย Raspberry Pi & HC-SR04 Ultrasonic Sensor และ Cloud4RPi: 6 ขั้นตอน
ปั๊มเครื่องชงกาแฟอัจฉริยะควบคุมโดย Raspberry Pi & HC-SR04 Ultrasonic Sensor และ Cloud4RPi: ตามทฤษฎีแล้ว ทุกครั้งที่คุณไปที่เครื่องชงกาแฟสำหรับถ้วยกาแฟตอนเช้า มีโอกาสเพียงหนึ่งในยี่สิบที่คุณจะต้องเติมน้ำ ถัง. อย่างไรก็ตาม ในทางปฏิบัติ ดูเหมือนว่าเครื่องจักรจะหาวิธีที่จะทำให้คุณทำงานบ้านนี้ได้เสมอ NS
การตรวจสอบบ้าน Raspberry Pi ด้วย Dropbox: 7 ขั้นตอน
การตรวจสอบบ้าน Raspberry Pi ด้วย Dropbox: บทช่วยสอนนี้จะแสดงวิธีสร้างระบบตรวจสอบบ้านที่เรียบง่ายและขยายได้โดยใช้ Raspberry Pi, เว็บแคม, ส่วนประกอบทางไฟฟ้าบางส่วน และบัญชี Dropbox ของคุณ ระบบที่เสร็จแล้วจะอนุญาตให้คุณร้องขอและดูรูปภาพจากระยะไกลจาก