Added MQTT configuration UI

This commit is contained in:
Mark Qvist 2025-01-25 15:46:37 +01:00
parent c4cdd388b7
commit d459780ed7
2 changed files with 126 additions and 0 deletions

View File

@ -767,6 +767,16 @@ class RVDetails(MDRecycleView):
threading.Thread(target=lj, daemon=True).start()
release_function = select
elif name == "Reticulum Transport":
te = "enabled" if s["values"]["transport_enabled"] else "disabled"
formatted_values = f"Reticulum Transport [b]{te}[/b]"
elif name == "LXMF Propagation":
tp = str(s["values"]["total_peers"])
ap = str(s["values"]["active_peers"])
formatted_values = f"Peered with [b]{tp}[/b] LXMF Propagation Nodes, [b]{ap}[/b] available"
else:
formatted_values = f"{name}"
for vn in s["values"]:

View File

@ -44,6 +44,30 @@ class Telemetry():
else:
self.screen.ids.telemetry_collector.text = RNS.hexrep(self.app.sideband.config["telemetry_collector"], delimit=False)
self.screen.ids.telemetry_mqtt_host.bind(focus=self.telemetry_save)
if self.app.sideband.config["telemetry_mqtt_host"] == None:
self.screen.ids.telemetry_mqtt_host.text = ""
else:
self.screen.ids.telemetry_mqtt_host.text = self.app.sideband.config["telemetry_mqtt_host"]
self.screen.ids.telemetry_mqtt_port.bind(focus=self.telemetry_save)
if self.app.sideband.config["telemetry_mqtt_port"] == None:
self.screen.ids.telemetry_mqtt_port.text = ""
else:
self.screen.ids.telemetry_mqtt_port.text = self.app.sideband.config["telemetry_mqtt_port"]
self.screen.ids.telemetry_mqtt_user.bind(focus=self.telemetry_save)
if self.app.sideband.config["telemetry_mqtt_user"] == None:
self.screen.ids.telemetry_mqtt_user.text = ""
else:
self.screen.ids.telemetry_mqtt_user.text = self.app.sideband.config["telemetry_mqtt_user"]
self.screen.ids.telemetry_mqtt_pass.bind(focus=self.telemetry_save)
if self.app.sideband.config["telemetry_mqtt_pass"] == None:
self.screen.ids.telemetry_mqtt_pass.text = ""
else:
self.screen.ids.telemetry_mqtt_pass.text = self.app.sideband.config["telemetry_mqtt_pass"]
self.screen.ids.telemetry_icon_preview.icon_color = self.app.sideband.config["telemetry_fg"]
self.screen.ids.telemetry_icon_preview.md_bg_color = self.app.sideband.config["telemetry_bg"]
self.screen.ids.telemetry_icon_preview.icon = self.app.sideband.config["telemetry_icon"]
@ -84,6 +108,9 @@ class Telemetry():
self.screen.ids.telemetry_allow_requests_from_anyone.active = self.app.sideband.config["telemetry_allow_requests_from_anyone"]
self.screen.ids.telemetry_allow_requests_from_anyone.bind(active=self.telemetry_save)
self.screen.ids.telemetry_to_mqtt.active = self.app.sideband.config["telemetry_to_mqtt"]
self.screen.ids.telemetry_to_mqtt.bind(active=self.telemetry_save)
self.screen.ids.telemetry_scrollview.effect_cls = ScrollEffect
info = "\nSideband allows you to securely share telemetry, such as location and sensor data, with people, custom programs, "
@ -259,6 +286,11 @@ class Telemetry():
self.app.sideband.config["telemetry_allow_requests_from_trusted"] = self.screen.ids.telemetry_allow_requests_from_trusted.active
self.app.sideband.config["telemetry_allow_requests_from_anyone"] = self.screen.ids.telemetry_allow_requests_from_anyone.active
self.app.sideband.config["telemetry_collector_enabled"] = self.screen.ids.telemetry_collector_enabled.active
self.app.sideband.config["telemetry_to_mqtt"] = self.screen.ids.telemetry_to_mqtt.active
self.app.sideband.config["telemetry_mqtt_host"] = self.screen.ids.telemetry_mqtt_host.text
self.app.sideband.config["telemetry_mqtt_port"] = self.screen.ids.telemetry_mqtt_port.text
self.app.sideband.config["telemetry_mqtt_user"] = self.screen.ids.telemetry_mqtt_user.text
self.app.sideband.config["telemetry_mqtt_pass"] = self.screen.ids.telemetry_mqtt_pass.text
self.app.sideband.save_configuration()
if run_telemetry_update:
@ -880,6 +912,90 @@ MDScreen:
on_release: root.delegate.telemetry_bg_color(self)
disabled: False
MDLabel:
text: "MQTT Configuration"
font_style: "H6"
MDLabel:
id: telemetry_info6
markup: True
text: "\\nYou can configure Sideband to send all received telemetry data to an MQTT server by specifying the relevant hostname, port and authentication details.\\n"
size_hint_y: None
text_size: self.width, None
height: self.texture_size[1]
MDBoxLayout:
orientation: "horizontal"
size_hint_y: None
padding: [0,0,dp(24),dp(0)]
height: dp(48)
MDLabel:
text: "Send telemetry to MQTT"
font_style: "H6"
MDSwitch:
id: telemetry_to_mqtt
pos_hint: {"center_y": 0.3}
active: False
MDBoxLayout:
orientation: "vertical"
spacing: dp(24)
size_hint_y: None
padding: [dp(0),dp(0),dp(0),dp(0)]
#height: dp(232)
height: self.minimum_height
MDTextField:
id: telemetry_mqtt_host
hint_text: "Server Hostname"
text: ""
font_size: dp(24)
MDBoxLayout:
orientation: "vertical"
spacing: dp(24)
size_hint_y: None
padding: [dp(0),dp(0),dp(0),dp(0)]
#height: dp(232)
height: self.minimum_height
MDTextField:
id: telemetry_mqtt_port
hint_text: "Server Port"
text: ""
font_size: dp(24)
MDBoxLayout:
orientation: "vertical"
spacing: dp(24)
size_hint_y: None
padding: [dp(0),dp(0),dp(0),dp(0)]
#height: dp(232)
height: self.minimum_height
MDTextField:
id: telemetry_mqtt_user
hint_text: "Username"
text: ""
font_size: dp(24)
MDBoxLayout:
orientation: "vertical"
spacing: dp(24)
size_hint_y: None
padding: [dp(0),dp(0),dp(0),dp(60)]
#height: dp(232)
height: self.minimum_height
MDTextField:
id: telemetry_mqtt_pass
password: True
hint_text: "Password"
text: ""
font_size: dp(24)
MDLabel:
text: "Advanced Configuration"
font_style: "H6"