ฉันมีสคริปต์ที่ใช้กับ UPS Hat สำหรับ Raspberry Pi 4b ฉันใช้เซิร์ฟเวอร์ Ubuntu 21.04 64 บิต เมื่อฉันเรียกใช้สคริปต์ด้วยตนเองจาก /home/user/ups.sh มันใช้งานได้ดี อย่างไรก็ตาม หลังจากทำตามคำแนะนำและสร้างไฟล์ rc.local แล้ว ฉันไม่สามารถทำให้สคริปต์เริ่มทำงานโดยอัตโนมัติเมื่อบู๊ตได้ ฉันได้วางสคริปต์ลงในไดเร็กทอรี /user/bin/ และทำ chmod +x กับมัน
#!/bin/bash
#GPIO17 (อินพุต) ใช้เพื่ออ่านสถานะพลังงานปัจจุบัน
#0 - ปกติ (หรือเปิดพลังงานแบตเตอรี่ด้วยตนเอง)
#1 - ไฟดับ เปลี่ยนเป็นแบตเตอรี่
เสียงสะท้อน 17 > /sys/class/gpio/export;
สะท้อนใน > /sys/class/gpio/gpio17/direction;
#GPIO27 (อินพุต) ใช้เพื่อระบุว่า UPS ออนไลน์อยู่
เสียงสะท้อน 27 > /sys/class/gpio/export;
สะท้อนใน > /sys/class/gpio/gpio27/direction;
#GPIO18 เคยแจ้ง UPS ว่า Pi ยังทำงานอยู่ หลังจากปิดพินนี้จะกลับสู่สถานะ Hi-Z
เสียงสะท้อน 18 > /sys/class/gpio/export;
echo out > /sys/class/gpio/gpio18/direction;
เสียงสะท้อน 0 > /sys/class/gpio/gpio18/value;
power_timer=0;
inval_power="0";
ups_online1="0";
ups_online2="0";
ups_online_timer="0";
ในขณะที่จริง
ทำ
# อ่านค่าพิน GPIO27
#โดยปกติแล้ว UPS จะสลับพินนี้ทุกๆ 0.5 วินาที
ups_online1=$(แมว /sys/class/gpio/gpio27/value);
นอน 0.1;
ups_online2=$(แมว /sys/class/gpio/gpio27/value);
ups_online_timer=$((ups_online_timer+1));
#สลับกัน?
ถ้า (( "$ups_online1" != "$ups_online2" )); แล้ว
ups_online_timer=0;
ไฟ
#รีเซ็ตตัวจับเวลาทั้งหมดหากอัพออฟไลน์นานกว่า 3 วินาที (ตรวจไม่พบการสลับ)
ถ้า (("$ups_online_timer" > 30));
แล้ว
echo "$ups_online_timer";
ups_online_timer=30;
power_timer=0;
inval_power=0;
#echo "UPS ออฟไลน์ ออก";
#ออก;
ไฟ
# อ่านค่าพิน GPIO17
inval_power=$(แมว /sys/class/gpio/gpio17/value);
#เสียงสะท้อน $inval_power;
ถ้า (( "$inval_power" == 1 )); แล้ว
power_timer=$((power_timer+1));
อื่น
power_timer=0;
ไฟ
#หากไฟฟ้าไม่ฟื้นคืนภายใน 60 วินาที
ถ้า (( "$power_timer" == 600 )); แล้ว
#เสียงสะท้อน $power_timer;
echo "กำลังปิด..."
นอน 2;
ปิด systemctl; #ปิด
ทางออก;
ไฟ
เสร็จแล้ว
นี่คือสิ่งที่ฉันมีในไฟล์ rc.local
#!/bin/sh -e
#
#rc.local
#
ทุบตี /usr/bin/ups.sh &
ทางออก 0
ฉันค้นหา google มาหลายวันแล้วและลองใช้ไฟล์ cron และ systemd แล้วและดูเหมือนจะไม่มีอะไรทำงาน หวังว่าจะมีผู้ใจดีที่นั่นให้คำตอบ ขอขอบคุณ.