ฉันได้เปลี่ยนการแจ้งเตือนอีเมลของเซิร์ฟเวอร์ทั้งหมดเป็นการแจ้งเตือนแบบพุช — ตอนนี้ฉันอ่านมันจริงๆ แล้ว
ระบบพลังงานออฟ-กริดของฉันมักมีวิธีเตือนฉันมากมายเมื่อมีสิ่งที่ต้องให้ความสนใจหรือเมื่อฉันกำลังจะไฟหมด ปัญหาคือ ท่ามกลางตัวควบคุมการชาร์จ MPPT และมอนิเตอร์แบตเตอรีจากหลายบริษัท ฉันได้รับการแจ้งเตือนจากทุกทิศทาง
นั่นหมายความว่าฉันพลาดการแจ้งเตือนอยู่ตลอด ไม่ว่าจะเป็นเพราะอีเมลหายไปพร้อมกับจดหมายข่าวและสแปมทั้งหมด หรือเพราะ Bluetooth ใช้ไม่ได้ถ้าไม่ได้อยู่ที่บ้าน ฉันไม่อยากสร้างแดชบอร์ดอีก และแน่นอนไม่อยากได้รับอีเมลเพิ่มอีกแล้ว
ฉันต้องการการแจ้งเตือนพลังงานที่ทำงานเหมือนกับการแจ้งเตือนจริง ดังนั้นฉันจึงเชื่อมต่อเซิร์ฟเวอร์การดำเนินงานที่บ้านของฉันกับ ntfy เขียนสคริปต์บางส่วนเพื่อจัดการกับมัน และเริ่มรับการแจ้งเตือนทันที ส่งตรงไปยังโทรศัพท์ของฉันด้วย ntfy
ฉันหยุดส่งการแจ้งเตือนไปยังสถานที่ที่ฉันตั้งใจจะไม่สนใจอยู่แล้ว
การแจ้งเตือนทำงานตามที่คาดหวัง แต่สุดท้ายมันกลับไปอยู่ในที่ผิด
ระบบพลังงานและอุปกรณ์ตรวจสอบไม่ได้เป็นสาเหตุที่ทำให้ผมล้มเหลวในการตอบสนองต่อการแจ้งเตือนอย่างรวดเร็ว อุปกรณ์ Victron ของผมมีวิธีมากมายให้ผมเห็นสิ่งที่เกิดขึ้น รวมถึงสถานะแบตเตอรี่ ช่องสัญญาณที่ใช้งาน และระดับการชาร์จ ปัญหาคือ การแจ้งเตือนเหล่านั้นถูกส่งไปทางอีเมล และมันช้าเกินไป
อีเมลเหมาะสำหรับเรื่องที่ฉันสามารถจัดการทีหลังได้ แต่มันแย่มากสำหรับสิ่งที่ต้องการความสนใจทันที หากไฟฟ้าในกริดดับ หรือฉันใช้โหลดมากเกินไปกับชุดแบตเตอรี่ การแจ้งเตือนสำหรับเหตุการณ์แบบนั้นไม่ควรอยู่ในกล่องจดหมายของฉัน มันต้องไปถึงฉันทันที และดังบนโทรศัพท์ของฉันในรูปแบบการแจ้งเตือนแบบพุช
ทำไมไม่ใช้แดชบอร์ดแทนล่ะ? ฉันชอบแดชบอร์ด แต่แดชบอร์ดอย่าง Grafana จะมีประโยชน์แค่ตอนที่คุณจำได้ที่จะเข้าไปดู จุดประสงค์ทั้งหมดของการใช้การแจ้งเตือนก็คือฉันไม่ควรจำเป็นต้องเข้าไปดู นั่นจึงเป็นเหตุผลที่การย้ายเหตุการณ์พลังงานสำคัญทั้งหมดไปที่ ntfy นั้นสมเหตุสมผลมากขึ้น นอกจากนี้ เนื่องจากเซิร์ฟเวอร์ปฏิบัติการบ้านของฉันจัดการการแจ้งเตือนทางอีเมลผ่านเซิร์ฟเวอร์อีเมล Postfix ในพื้นที่อยู่แล้ว มันจึงไม่ลำบากมากที่จะเขียนสคริปต์เหล่านี้และส่งผ่าน ntfy อยู่แล้ว
ntfy เป็นวิธีที่ง่ายที่สุดในการทำให้เซิร์ฟเวอร์ของฉันตะโกนอย่างถูกต้อง
อะไรก็ตามที่สามารถส่งคำขอ HTTP ได้ สามารถส่งการแจ้งเตือนได้
Ntfy (ออกเสียงว่า: “notify”) เหมาะสมอย่างยิ่งสำหรับงานสร้างระบบการแจ้งเตือนที่ดีกว่า เพราะมันสามารถทำงานร่วมกับสิ่งที่ฉันตั้งค่าไว้แล้วได้ แนวคิดเบื้องหลัง ntfy ก็เรียบง่ายมากจนสามารถใช้งานเป็นสแต็กการแจ้งเตือนสำหรับโปรเจกต์ทุกประเภทได้อย่างง่ายดาย:
- สมาร์ทโฟนของฉันสมัครรับหัวข้อที่ฉันเลือก ในกรณีนี้คือ "homeops-power-array-7429"
- เซิร์ฟเวอร์ของฉันส่งข้อความไปยังหัวข้อนั้นผ่านคำขอ HTTP POST ของ curl
- ถ้าข้อความและหัวข้อเหมือนกัน โทรศัพท์ของฉันจะได้รับการแจ้งเตือนแบบพุช
- การแจ้งเตือนยังสามารถส่งไปยังแอปเว็บได้หากฉันใช้เบราว์เซอร์ Chrome ของฉัน
เวอร์ชันพื้นฐานที่สุดของข้อความฝั่งเซิร์ฟเวอร์คือดังนี้:
curl -d "Power monitor online" https://ntfy.sh/homeops-power-array-7429บรรทัดเดียวกันนั้นส่งข้อความหลัง -d ไปยังหัวข้อ ntfy ซึ่งอยู่ท้าย URL หัวข้อนั้นทำหน้าที่เหมือนที่อยู่ในการส่งการแจ้งเตือน
สำหรับการแจ้งเตือนที่อ่านได้ง่าย ผมใช้คำสั่งที่ยาวกว่านี้ เช่นนี้:
curl \
-H "Title: Power monitor online" \
-H "Priority: default" \
-H "Tags: electric_plug,white_check_mark" \
-d "Grid input is active. Battery bank is floating at ninety-six percent." \
https://ntfy.sh/homeops-power-array-7429สวิตช์ -H กำหนดหัวเรื่อง และ ntfy ใช้สิ่งเหล่านี้สำหรับสิ่งพิเศษ เช่น ชื่อการแจ้งเตือน ลำดับความสำคัญ และแท็กภาพขนาดเล็กเพื่อทำให้อีเวนต์บางอย่างโดดเด่น สวิตช์ -d กำหนดว่าข้อความคือเนื้อหาของข้อความ
เนื่องจากอุปกรณ์ตรวจสอบพลังงานของ Victron ของฉันมอบค่าพลังงานให้ฉันผ่านคอนโซล RS232 แล้ว ntfy เพียงแค่เปลี่ยนค่าที่มีประโยชน์เหล่านั้นให้เป็นค่าการแจ้งเตือนที่ฉันจะเห็นจริง ๆ
การเลือกชื่อหัวข้อที่ซับซ้อนเป็นสิ่งสำคัญ เนื่องจากใครก็สามารถสมัครรับหัวข้อได้ การทำให้ชื่อหัวข้อเดายากขึ้นโดยการเพิ่มตัวเลขและตัวอักษรสุ่มเป็นสิ่งที่แนะนำ หากไม่ทำเช่นนั้น คุณอาจพบว่าผู้อื่นกำลังดูหรือส่งการแจ้งเตือนของคุณ
ฉันทำให้การแจ้งเตือนดูเหมือนกับเหตุการณ์ ไม่ใช่การสแปมสถานะ
การแจ้งเตือนไม่ควรบอกคุณว่า 'ทุกอย่างเป็นปกติ' ทุก ๆ 10 นาที
ระบบแจ้งเตือนอาจพูดมากเกินไปและเร็วเกินไป หากคุณไม่เลือกอย่างระมัดระวัง ใช่ มันน่าดึงดูดที่จะให้เซิร์ฟเวอร์ตรวจสอบกับ cron tab ทุก ๆ 10 นาทีและบอกฉันว่าทุกอย่างเป็นปกติเพื่อพิสูจน์ว่าทุกอย่างทำงานได้ แต่สิ่งนั้นจะน่าเบื่อไปอย่างรวดเร็ว สิ่งที่ฉันต้องการคือให้เซิร์ฟเวอร์ตรวจสอบสถานะอย่างสม่ำเสมอและรบกวนฉันเฉพาะเมื่อมีบางอย่างผิดพลาด
การไหลพื้นฐานสำหรับการสร้างสิ่งนี้ถูกสร้างขึ้นแล้วเป็นส่วนหนึ่งของสแต็กการแจ้งเตือนทางอีเมล สคริปต์ขนาดเล็กจะอ่านค่าปัจจุบันที่มอนิเตอร์เกียร์ให้มาและเก็บไว้เป็นตัวแปรสภาพแวดล้อม ตรวจสอบค่าดังกล่าวกับเกณฑ์ที่ฉันสร้างขึ้น และจากนั้นส่งข้อความ ntfy ที่ถูกต้อง:
if [ "$GRID_CONNECTED" = "No" ]; then
./send-alert.sh \
"Grid power unavailable" \
"high" \
"electric_plug,warning" \
"Grid input is offline. Battery bank is carrying the load at ${CHARGE}%."
fiฉันใช้แนวคิดเดียวกันสำหรับแบตเตอรี่ต่ำ แบตเตอรี่วิกฤติ และการกระชากของโหลดที่เกินความสามารถของอินเวอร์เตอร์คลื่นไซน์ จากนั้นงาน cron จะรันการตรวจสอบตามตารางเวลา:
*/15 * * * * /opt/homeops/power-monitor/power-watch.sh >/dev/null 2>&1นั่นหมายความว่าเซิร์ฟเวอร์จะตรวจสอบค่าการใช้พลังงานทุก 15 นาที ซึ่งถือว่าเป็นเวลามากพอที่ฉันจะดำเนินการได้หากจำเป็นในเหตุการณ์ เช่น:
- ไม่ว่าระบบกริด พลังงานแสงอาทิตย์ หรือพลังงานลม กำลังชาร์จแบตเตอรี่ในขณะนี้
- ว่ากำลังไฟฟ้าจากกริดได้หายไปหรือไม่
- เมื่อสถานะการชาร์จเปลี่ยนจากการชาร์จเป็นฟลอต หรือจากฟลอตเป็นการคายประจุ
- เมื่อแรงดันของชุดแบตเตอรี่ลดลงต่ำกว่าค่าธรณี
- เมื่อภาระเกินขีดจำกัดที่กำหนดของอินเวอร์เตอร์
เมื่อเหตุการณ์เหล่านี้ถูกกำหนดและเขียนสคริปต์แล้ว ฉันก็เปลี่ยนจากการได้รับการแจ้งเตือนทุก 15 นาที เป็นการได้รับการแจ้งเตือนเฉพาะเมื่อมีสิ่งที่คุ้มค่ากับความสนใจเกิดขึ้น หลังจากที่ทดสอบ ดึงพลังงานจากกริดออกจากตัวควบคุมการชาร์จของฉัน และสร้างเงื่อนไขเพื่อสร้างการแจ้งเตือนอย่างตั้งใจ ฉันก็มั่นใจพอที่จะปิดเซิร์ฟเวอร์อีเมล Postfix อย่างถาวรในที่สุด
การแจ้งเตือนแบบพุชมีความทรงพลังเพราะพวกมันมีการคัดเลือก
ฉันยังคงไม่แนะนำให้พวกเขาแทนที่การแจ้งเตือนเซิร์ฟเวอร์ทุกครั้ง
ntfy แก้ปัญหาการแจ้งเตือนหนึ่งอย่าง แต่ก็สามารถสร้างความเหนื่อยหน่ายจากการแจ้งเตือนได้ง่าย การแจ้งเตือนแบบพุชมีประโยชน์ก็ต่อเมื่อพวกมันแจ้งเกี่ยวกับเหตุการณ์สำคัญเท่านั้น หากทุกงาน cron ที่สำเร็จ การอัปเดตแพ็กเกจ การตรวจสอบดิสก์ เหตุการณ์ล็อกอิน และงานที่ล้มเหลวทุกอย่างถูกรวมและส่งไปยังโทรศัพท์ของฉัน ฉันก็จะเริ่มละเลยพวกมัน
ฉันต้องเข้มงวดและตั้งกฎเพื่อกำหนดเหตุการณ์ที่อนุญาตให้ได้รับการแจ้งเตือนแบบพุช เหตุการณ์เหล่านี้ต้องการการดำเนินการทันทีหรืออย่างน้อยที่สุดโดยเร็วที่สุด สำหรับระบบพลังงานนอกเครือข่าย หมายถึง แบตเตอรี่เหลือน้อย พลังงานจากกริดลดลง อุณหภูมิในตู้แบตเตอรีสูงเกินไป และอื่น ๆ
สำหรับเซิร์ฟเวอร์ สิ่งนี้อาจหมายถึงเหตุการณ์ต่างๆ เช่น การสำรองข้อมูลล้มเหลว พื้นที่ดิสก์ต่ำจนต้องขยายปริมาณ หรือบริการที่ฉันพึ่งพาล่ม ทุกอย่างอื่นสามารถบันทึกลงในล็อกเพื่อดูทีหลังได้อย่างง่ายดาย และแน่นอนว่า อีเมลยังสามารถใช้สำหรับรายงานประจำวันได้
นอกจากนี้ยังมีเรื่องความเป็นส่วนตัวเมื่อพูดถึงบริการการแจ้งเตือนแบบพุช เช่น ntfy บริการนี้ถูกสร้างขึ้นบนความเรียบง่าย และนั่นก็หมายถึงการไม่ใช้การเข้ารหัสสำหรับการแจ้งเตือน ทุกสิ่งที่ถูกส่งไปจะเป็นข้อความธรรมดา ดังนั้นจึงไม่ต้องพูดก็รู้ว่าไม่ควรรวมที่อยู่ IP รหัสผ่าน หรือบัญชีใด ๆ ไว้ในนั้น
ฉันยังคงใช้ ntfy เพราะมันแก้ปัญหามนุษย์เกี่ยวกับการติดตามได้
ไม่ว่าเรื่องสคริปต์และระบบการตรวจสอบ การทำให้การแจ้งเตือนเป็นสิ่งที่สังเกตเห็นได้ง่ายคือสิ่งที่ช่วยแก้ปัญหา
การตั้งค่าของผมเก่าเตือนผมได้ดี ปัญหาคือมันเตือนผมในที่ที่ผมมักจะมองข้าม อีเมลช้าและรก SMS แพง และการแจ้งเตือนจากแอปและบลูทูธมักจะพลาดได้ง่ายเมื่อผู้ให้บริการไม่ให้คุณเลือกเกณฑ์การแจ้งเตือนเอง
Ntfy อนุญาตให้ฉันเลือกเหตุการณ์ที่ฉันคิดว่าสำคัญและส่งตรงไปยังแถบการแจ้งเตือนบนโทรศัพท์ของฉัน ซึ่งฉันไม่สามารถละเลยได้ นั่นแก้ปัญหาของมนุษย์ไปได้ แต่ถึงอย่างนั้น ฉันก็จะไม่ส่งทุกเหตุการณ์ของเซิร์ฟเวอร์ด้วยวิธีนี้ และ ntfy แน่นอนว่าจะไม่ใช่ที่สำหรับส่งสิ่งใดๆ ที่คุณไม่อยากให้คนทั่วไปสอดแนม
สำหรับระบบขนาดเล็กที่ไม่ได้เชื่อมต่อกับกริดของฉันแล้ว ntfy นั้นเหมาะสมที่สุด แท้จริงแล้ว มันประสบความสำเร็จมากจนฉันจะพิจารณาโฮสต์เองสำหรับบริการนี้ในอนาคตสำหรับส่วนอื่น ๆ ของเครือข่ายบ้านของฉัน







