นี่เป็นโปรแกรมขนาดเล็กที่สามารถสมัครรับข้อมูล MQTT มากกว่าหนึ่งหัวข้อและเผยแพร่เป็นการแจ้งเตือนเดสก์ท็อปผ่าน D-BUS โปรแกรมมีวัตถุประสงค์เพื่อทำงานในพื้นหลังของเซสชันเดสก์ท็อปและสร้างการแจ้งเตือนเดสก์ท็อปจากข้อความ MQTT
ตัวเลือกเดียวที่ถูกต้องไม่มีคือการติดตั้งจากแหล่งที่มา ก่อนอื่นติดตั้งไป
ถัดไปติดตั้งไปพึ่งพา:
$ go get github.com/godbus/dbus
$ go get github.com/eclipse/paho.mqtt.golang
ถัดไปติดตั้งแอพ MQTT-DBUS-NOTEFIFY:
$ go install github.com/akeil/mqtt-dbus-notify
ไฟล์การกำหนดค่าคาดว่าจะอยู่ที่ $HOME/.config/mqtt-dbus-notify.json การกำหนดค่าตัวอย่างมีลักษณะเช่นนี้:
{
"host" : " localhost " ,
"port" : 1883 ,
"username" : " " ,
"password" : " " ,
"secure" : false ,
"timeout" : 5 ,
"icon" : " dialog-information " ,
"subscriptions" : [
{
"topic" : " calendar/alert " ,
"icon" : " appointment-soon " ,
"title" : " Appointment " ,
"body" : " {{.}} "
},
{
"topic" : " test/notify " ,
}
]
} นอกเหนือจาก subscriptions แล้วยังเป็นค่าเริ่มต้น หากนายหน้า MQTT ทำงานบนคอมพิวเตอร์เครื่องเดียวกันในพอร์ตเริ่มต้น ( 1883 ) และไม่มีการตรวจสอบสิทธิ์ไม่จำเป็นต้องมีการกำหนดค่า
ตัวเลือก secure ใช้การเชื่อมต่อที่เข้ารหัส TLS โดยปกติจะผ่านพอร์ต 8883
ในการสร้างการแจ้งเตือนต้องมีการกำหนดค่า การสมัครสมาชิก อย่างน้อยหนึ่งรายการ การสมัครสมาชิกจะต้องระบุอย่างน้อยหนึ่ง topic Wildcards หัวข้อสามารถใช้งานได้
การสมัครสมาชิกยังสามารถระบุ icon ที่กำหนดเองได้ หากไม่มีการระบุไอคอนเริ่มต้น (ดูด้านล่าง)
โดยค่าเริ่มต้นเนื้อหาของข้อความ MQTT จะใช้เป็นชื่อสำหรับการแจ้งเตือน หากข้อความประกอบด้วยหลายบรรทัดบรรทัดแรกจะใช้เป็นชื่อและเส้นที่เหลือเป็นร่างกาย
การสมัครสมาชิกสามารถมี title และ body ที่กำหนดเอง เหล่านี้เป็นเทมเพลต GO ใช้ {{.}} เพื่ออ้างถึง Payload ข้อความ MQTT
ภายในเทมเพลตชื่อและร่างกายฟังก์ชั่น Topic สามารถใช้เพื่อส่งคืนส่วนหนึ่งของหัวข้อ MQTT ตัวอย่างเช่น:
...
"topic" : " weather/berlin/temperature "
"title" : " {{.Topic 2}} in {{.Topic 1}} "
...สิ่งนี้จะแสดง "อุณหภูมิในเบอร์ลิน" เป็นชื่อการแจ้งเตือน
ไอคอนสามารถระบุได้โดยใช้ชื่อไอคอนมาตรฐานเช่น "การนัดหมาย-ซอน" ดูโครงสร้างไดเรกทอรีด้านล่าง /usr/share/icons/ เพื่อดูว่ามีไอคอนใดบ้าง
อีกทางเลือกหนึ่งพา ธ ไปยังไฟล์ภาพสามารถใช้เป็น icon ได้ แบบนี้:
{
"topic" : " my/topic " ,
"icon" : " /home/yourname/myicon.png "
}โปรแกรมจำเป็นต้องทำงานภายในบริบทของเซสชันเดสก์ท็อป มิฉะนั้นจะไม่สามารถเผยแพร่การแจ้งเตือนได้
วิธีง่ายๆในการทำเช่นนี้คือการสร้างไฟล์ mqtt-dbus-notify.desktop และวางไว้ใน $HOME/.config/autostart
[Desktop Entry]
Name =MQTT-DBus-Notify
Comment =Desktop notifications from MQTT messages
NoDisplay =false
Exec =$GOHOME/bin/mqtt-dbus-notify
Type =Application
Categories =Accessoires ; สภาพแวดล้อมเดสก์ท็อปส่วนใหญ่ (ทั้งหมด?) ควรสนับสนุนสิ่งนี้และเรียกใช้คำสั่งที่ระบุไว้ภายใต้ Exec เมื่อคุณเข้าสู่ DE