🔌 MQTT - do not send UNKNOWN + expose DEVICES_SQL

This commit is contained in:
jokob-sk
2024-07-09 23:09:42 +10:00
parent 0eff7cc3f1
commit 95d5dbcf68
4 changed files with 36 additions and 7 deletions

View File

@@ -25,7 +25,7 @@
"description": [
{
"language_code": "en_us",
"string": "A plugin to publish a notification via the Apprise gateway."
"string": "A plugin to publish a notification via MQTT to Home Assistant."
}
],
"params": [
@@ -671,6 +671,30 @@
}
]
},
{
"function": "DEVICES_SQL",
"type": {
"dataType": "string",
"elements": [
{ "elementType": "input", "elementOptions": [], "transformers": [] }
]
},
"default_value": "select rowid, * from Devices where dev_Name not in ({s-quote}null{s-quote}, {s-quote}(name not found){s-quote}, {s-quote}(unknown){s-quote})",
"options": [],
"localized": ["name", "description"],
"name": [
{
"language_code": "en_us",
"string": "Device SQL"
}
],
"description": [
{
"language_code": "en_us",
"string": "The SQL condition used to select which Devices are sent via MQTT. Please note that you need to use <code>{s-quote}</code> for single quotes replacement and double-quotes are not supported."
}
]
},
{
"function": "QOS",
"type": {

View File

@@ -13,6 +13,7 @@ import paho.mqtt.client as mqtt
# from paho.mqtt import client as mqtt_client
# from paho.mqtt import CallbackAPIVersion as mqtt_CallbackAPIVersion
import hashlib
import sqlite3
# Register NetAlertX directories
@@ -27,7 +28,7 @@ from plugin_helper import Plugin_Objects
from logger import mylog, append_line_to_file
from helper import timeNowTZ, get_setting_value, bytes_to_string, sanitize_string
from notification import Notification_obj
from database import DB, get_all_devices, get_device_stats
from database import DB, get_device_stats
CUR_PATH = str(pathlib.Path(__file__).parent.resolve())
@@ -340,10 +341,10 @@ def mqtt_start(db):
# Generate device-specific MQTT messages if enabled
if get_setting_value('MQTT_SEND_DEVICES') == True:
# Specific devices
# Specific devices processing
# Get all devices
devices = get_all_devices(db)
devices = db.read(get_setting_value('MQTT_DEVICES_SQL').replace('{s-quote}',"'"))
sec_delay = len(devices) * int(get_setting_value('MQTT_DELAY_SEC'))*5