🔌 MQTT - do not send UNKNOWN + expose DEVICES_SQL
This commit is contained in:
@@ -85,7 +85,7 @@ These are the most important settings to get at least some output in your Device
|
||||
|
||||
Use the official installation guides at first and use community content as supplementary material. Open an issue if you'd like to add your link to the list 🙏
|
||||
|
||||
- ▶ [Home Lab Network Monitoring - Scotti-BYTE Enterprise Consulting Services](https://www.youtube.com/watch?v=0DryhzrQSJA)
|
||||
- ▶ [Home Lab Network Monitoring - Scotti-BYTE Enterprise Consulting Services](https://www.youtube.com/watch?v=0DryhzrQSJA) (July 2024)
|
||||
- 📄 [How to Install NetAlertX on Your Synology NAS - Marius hosting](https://mariushosting.com/how-to-install-pi-alert-on-your-synology-nas/) (Updated frequently)
|
||||
- 📄 [Using the PiAlert Network Security Scanner on a Raspberry Pi - PiMyLifeUp](https://pimylifeup.com/raspberry-pi-pialert/)
|
||||
- ▶ [How to Setup Pi.Alert on Your Synology NAS - Digital Aloha](https://www.youtube.com/watch?v=M4YhpuRFaUg)
|
||||
|
||||
@@ -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": {
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -325,7 +325,6 @@ def setting_value_to_python_type(set_type, set_value):
|
||||
|
||||
# "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]}
|
||||
|
||||
|
||||
setTypJSN = json.loads(str(set_type).replace('"','\"').replace("'",'"'))
|
||||
|
||||
# Handle different types of settings based on set_type dictionary
|
||||
@@ -356,15 +355,20 @@ def setting_value_to_python_type(set_type, set_value):
|
||||
if dataType == 'string' and elementType in ['input', 'select']:
|
||||
value = str(set_value)
|
||||
|
||||
elif dataType == 'integer' and elementType == 'input':
|
||||
elif dataType == 'integer' and (elementType == 'input' or elementType == 'select'):
|
||||
# handle storing/retrieving boolean values as 1/0
|
||||
|
||||
if set_value.lower() not in ['true', 'false'] and isinstance(set_value, str):
|
||||
value = int(set_value)
|
||||
|
||||
elif isinstance(set_value, bool):
|
||||
value = 1 if set_value else 0
|
||||
|
||||
elif isinstance(set_value, str):
|
||||
|
||||
value = 1 if set_value.lower() == 'true' else 0
|
||||
else:
|
||||
|
||||
value = int(set_value)
|
||||
|
||||
elif dataType == 'boolean' and elementType == 'input':
|
||||
|
||||
Reference in New Issue
Block a user