mirror of
https://github.com/jokob-sk/NetAlertX.git
synced 2025-12-07 01:26:11 -08:00
MQTT prep-work 2
This commit is contained in:
@@ -608,8 +608,7 @@ def execute_arpscan ():
|
|||||||
# multiple interfaces
|
# multiple interfaces
|
||||||
if type(SCAN_SUBNETS) is list:
|
if type(SCAN_SUBNETS) is list:
|
||||||
print(" arp-scan: Multiple interfaces")
|
print(" arp-scan: Multiple interfaces")
|
||||||
for interface in SCAN_SUBNETS :
|
for interface in SCAN_SUBNETS :
|
||||||
|
|
||||||
arpscan_output += execute_arpscan_on_interface (interface)
|
arpscan_output += execute_arpscan_on_interface (interface)
|
||||||
# one interface only
|
# one interface only
|
||||||
else:
|
else:
|
||||||
@@ -1795,6 +1794,31 @@ def mqtt_start():
|
|||||||
client.username_pw_set(mqttUser, mqttPassword)
|
client.username_pw_set(mqttUser, mqttPassword)
|
||||||
client.connect(mqttBroker, mqttPort)
|
client.connect(mqttBroker, mqttPort)
|
||||||
|
|
||||||
|
|
||||||
|
# send config messages
|
||||||
|
devices = get_all_devices()
|
||||||
|
|
||||||
|
for device in devices:
|
||||||
|
deviceNameDisplay = device["dev_Name"]
|
||||||
|
deviceName = deviceNameDisplay.replace(" ", "").lower()
|
||||||
|
|
||||||
|
if deviceName != '(unknown)':
|
||||||
|
|
||||||
|
print (' MQTT send config for ', deviceName)
|
||||||
|
|
||||||
|
payloadMy= "{\"name\":\""+ deviceNameDisplay +" Last Ip\",\"state_topic\":\"system-sensors/sensor/"+deviceName+"/state\",\"value_template\":\"{{value_json.last_ip}}\",\"unique_id\":\""+deviceName+"_sensor_last_ip\",\"availability_topic\":\"system-sensors/sensor/"+deviceName+"/availability\",\"device\":{\"identifiers\":[\""+deviceName+"_sensor\"],\"name\":\""+deviceNameDisplay+" Sensors\"},\"icon\":\"mdi:lan\"}"
|
||||||
|
|
||||||
|
print (payloadMy)
|
||||||
|
|
||||||
|
client.publish(
|
||||||
|
topic=f"pialert/devices/{deviceName}/last_ip/config",
|
||||||
|
payload=payloadMy,
|
||||||
|
qos=1,
|
||||||
|
retain=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
client.publish(f"system-sensors/sensor/{deviceName}/availability", device["dev_PresentLastScan"], retain=True)
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
|
|
||||||
time.sleep(15)
|
time.sleep(15)
|
||||||
@@ -1803,16 +1827,38 @@ def mqtt_start():
|
|||||||
row = get_device_stats()
|
row = get_device_stats()
|
||||||
|
|
||||||
client.publish("pialert/devices/online/number",
|
client.publish("pialert/devices/online/number",
|
||||||
payload=row[0],
|
payload=row["Online_Devices"],
|
||||||
|
qos=1,
|
||||||
|
retain=True)
|
||||||
|
|
||||||
|
client.publish("pialert/devices/down/number",
|
||||||
|
payload=row["Down_Devices"],
|
||||||
qos=1,
|
qos=1,
|
||||||
retain=True)
|
retain=True)
|
||||||
|
|
||||||
client.publish("pialert/devices/number",
|
client.publish("pialert/devices/number",
|
||||||
payload=row[2],
|
payload=row["All_Devices"],
|
||||||
qos=1,
|
qos=1,
|
||||||
retain=True)
|
retain=True)
|
||||||
|
|
||||||
print ('MQTT published messages')
|
client.publish("pialert/devices/archived/number",
|
||||||
|
payload=row["Archived_Devices"],
|
||||||
|
qos=1,
|
||||||
|
retain=True)
|
||||||
|
|
||||||
|
client.publish("pialert/devices/new/number",
|
||||||
|
payload=row["New_Devices"],
|
||||||
|
qos=1,
|
||||||
|
retain=True)
|
||||||
|
|
||||||
|
client.publish("pialert/devices/unknown/number",
|
||||||
|
payload=row["Unknown_Devices"],
|
||||||
|
qos=1,
|
||||||
|
retain=True)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
print (' MQTT published messages')
|
||||||
|
|
||||||
|
|
||||||
client.loop()
|
client.loop()
|
||||||
@@ -2017,16 +2063,30 @@ def to_text(_json):
|
|||||||
|
|
||||||
return payloadData
|
return payloadData
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
def get_device_stats():
|
def get_device_stats():
|
||||||
|
|
||||||
openDB()
|
openDB()
|
||||||
|
|
||||||
sql.execute("""
|
sql.execute("""
|
||||||
SELECT Online_Devices, Down_Devices, All_Devices, Archived_Devices from Online_History
|
SELECT Online_Devices, Down_Devices, All_Devices, Archived_Devices, (select count(*) from Devices a where dev_NewDevice = 1 ) as New_Devices, (select count(*) from Devices a where dev_Name = '(unknown)' ) as Unknown_Devices from Online_History limit 1
|
||||||
""")
|
""")
|
||||||
|
|
||||||
row = sql.fetchone()
|
row = sql.fetchone()
|
||||||
|
|
||||||
|
closeDB()
|
||||||
|
return row
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
def get_all_devices():
|
||||||
|
|
||||||
|
openDB()
|
||||||
|
|
||||||
|
sql.execute("""
|
||||||
|
select dev_MAC, dev_Name, dev_DeviceType, dev_Vendor, dev_Group, dev_FirstConnection, dev_LastConnection, dev_LastIP, dev_StaticIP, dev_PresentLastScan, dev_LastNotification, dev_NewDevice, dev_Network_Node_MAC_ADDR from Devices
|
||||||
|
""")
|
||||||
|
|
||||||
|
row = sql.fetchall()
|
||||||
|
|
||||||
closeDB()
|
closeDB()
|
||||||
return row
|
return row
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user