🔌 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 🙏
|
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)
|
- 📄 [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/)
|
- 📄 [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)
|
- ▶ [How to Setup Pi.Alert on Your Synology NAS - Digital Aloha](https://www.youtube.com/watch?v=M4YhpuRFaUg)
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
"description": [
|
"description": [
|
||||||
{
|
{
|
||||||
"language_code": "en_us",
|
"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": [
|
"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",
|
"function": "QOS",
|
||||||
"type": {
|
"type": {
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import paho.mqtt.client as mqtt
|
|||||||
# from paho.mqtt import client as mqtt_client
|
# from paho.mqtt import client as mqtt_client
|
||||||
# from paho.mqtt import CallbackAPIVersion as mqtt_CallbackAPIVersion
|
# from paho.mqtt import CallbackAPIVersion as mqtt_CallbackAPIVersion
|
||||||
import hashlib
|
import hashlib
|
||||||
|
import sqlite3
|
||||||
|
|
||||||
|
|
||||||
# Register NetAlertX directories
|
# Register NetAlertX directories
|
||||||
@@ -27,7 +28,7 @@ from plugin_helper import Plugin_Objects
|
|||||||
from logger import mylog, append_line_to_file
|
from logger import mylog, append_line_to_file
|
||||||
from helper import timeNowTZ, get_setting_value, bytes_to_string, sanitize_string
|
from helper import timeNowTZ, get_setting_value, bytes_to_string, sanitize_string
|
||||||
from notification import Notification_obj
|
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())
|
CUR_PATH = str(pathlib.Path(__file__).parent.resolve())
|
||||||
@@ -340,10 +341,10 @@ def mqtt_start(db):
|
|||||||
# Generate device-specific MQTT messages if enabled
|
# Generate device-specific MQTT messages if enabled
|
||||||
if get_setting_value('MQTT_SEND_DEVICES') == True:
|
if get_setting_value('MQTT_SEND_DEVICES') == True:
|
||||||
|
|
||||||
# Specific devices
|
# Specific devices processing
|
||||||
|
|
||||||
# Get all devices
|
# 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
|
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": []}]}
|
# "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]}
|
||||||
|
|
||||||
|
|
||||||
setTypJSN = json.loads(str(set_type).replace('"','\"').replace("'",'"'))
|
setTypJSN = json.loads(str(set_type).replace('"','\"').replace("'",'"'))
|
||||||
|
|
||||||
# Handle different types of settings based on set_type dictionary
|
# 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']:
|
if dataType == 'string' and elementType in ['input', 'select']:
|
||||||
value = str(set_value)
|
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
|
# handle storing/retrieving boolean values as 1/0
|
||||||
|
|
||||||
if set_value.lower() not in ['true', 'false'] and isinstance(set_value, str):
|
if set_value.lower() not in ['true', 'false'] and isinstance(set_value, str):
|
||||||
value = int(set_value)
|
value = int(set_value)
|
||||||
|
|
||||||
elif isinstance(set_value, bool):
|
elif isinstance(set_value, bool):
|
||||||
value = 1 if set_value else 0
|
value = 1 if set_value else 0
|
||||||
|
|
||||||
elif isinstance(set_value, str):
|
elif isinstance(set_value, str):
|
||||||
|
|
||||||
value = 1 if set_value.lower() == 'true' else 0
|
value = 1 if set_value.lower() == 'true' else 0
|
||||||
else:
|
else:
|
||||||
|
|
||||||
value = int(set_value)
|
value = int(set_value)
|
||||||
|
|
||||||
elif dataType == 'boolean' and elementType == 'input':
|
elif dataType == 'boolean' and elementType == 'input':
|
||||||
|
|||||||
Reference in New Issue
Block a user