ค้นหาเว็บไซต์

ฉันได้เปลี่ยนการแจ้งเตือนอีเมลของเซิร์ฟเวอร์ทั้งหมดเป็นการแจ้งเตือนแบบพุช — ตอนนี้ฉันอ่านมันจริงๆ แล้ว


ระบบพลังงานออฟ-กริดของฉันมักมีวิธีเตือนฉันมากมายเมื่อมีสิ่งที่ต้องให้ความสนใจหรือเมื่อฉันกำลังจะไฟหมด ปัญหาคือ ท่ามกลางตัวควบคุมการชาร์จ 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 นั้นเหมาะสมที่สุด แท้จริงแล้ว มันประสบความสำเร็จมากจนฉันจะพิจารณาโฮสต์เองสำหรับบริการนี้ในอนาคตสำหรับส่วนอื่น ๆ ของเครือข่ายบ้านของฉัน

บทความที่เกี่ยวข้อง