diff --git a/sbapp/ui/objectdetails.py b/sbapp/ui/objectdetails.py index 3ae6009..a5ab969 100644 --- a/sbapp/ui/objectdetails.py +++ b/sbapp/ui/objectdetails.py @@ -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"]: diff --git a/sbapp/ui/telemetry.py b/sbapp/ui/telemetry.py index 71858b5..f9ab75c 100644 --- a/sbapp/ui/telemetry.py +++ b/sbapp/ui/telemetry.py @@ -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"] @@ -83,6 +107,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 @@ -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"