From 7d9435b259b741b0278e6d4033a4068efc5c96a6 Mon Sep 17 00:00:00 2001 From: Conner Vieira Date: Mon, 28 Oct 2024 15:26:52 -0400 Subject: [PATCH] Improved Reticulum behavior --- assets/support/configdefault.json | 3 +++ assets/support/configoutline.json | 3 +++ dashcam.py | 4 ++++ reticulum.py | 18 +++++++++++------- 4 files changed, 21 insertions(+), 7 deletions(-) diff --git a/assets/support/configdefault.json b/assets/support/configdefault.json index a144983..c452a25 100755 --- a/assets/support/configdefault.json +++ b/assets/support/configdefault.json @@ -223,6 +223,9 @@ "identity_file": "/home/pi/.reticulum/storage/identities/predator", "instance_name": "My Car", "events": { + "start_up": { + "enabled": true + }, "motion_detected": { "enabled": true }, diff --git a/assets/support/configoutline.json b/assets/support/configoutline.json index 3161f29..247b915 100755 --- a/assets/support/configoutline.json +++ b/assets/support/configoutline.json @@ -195,6 +195,9 @@ "identity_file": "str", "instance_name": "str", "events": { + "start_up": { + "enabled": "bool" + }, "motion_detected": { "enabled": "bool" }, diff --git a/dashcam.py b/dashcam.py index 4940338..176f4a6 100755 --- a/dashcam.py +++ b/dashcam.py @@ -1012,6 +1012,10 @@ def start_dashcam_recording(dashcam_devices, directory): # This function starts iteration_counter += 1 # Iterate the counter. This value will be used to create unique file names for each recorded video. print("Started dashcam recording on " + str(dashcam_devices[device]["index"])) # Inform the user that recording was initiation for this camera device. + if (config["dashcam"]["notifications"]["reticulum"]["enabled"] == True and config["dashcam"]["notifications"]["reticulum"]["events"]["start_up"]["enabled"] == True): # Check to see if Predator is configured to send start-up notifications over Reticulum. + for destination in config["dashcam"]["notifications"]["reticulum"]["destinations"]: # Iterate over each configured destination. + reticulum.lxmf_send_message(str(config["dashcam"]["notifications"]["reticulum"]["instance_name"]) + " has been started", destination) # Send a Reticulum LXMF message to this destination. + try: if (config["dashcam"]["parked"]["enabled"] == True): # Check to see if parked mode functionality is enabled. last_moved_time = utils.get_time() # This value holds the Unix timestamp of the last time the vehicle exceeded the parking speed threshold. diff --git a/reticulum.py b/reticulum.py index ecec7c5..842e38c 100755 --- a/reticulum.py +++ b/reticulum.py @@ -47,18 +47,22 @@ new_identity = RNS.Identity() new_identity.to_file(config["dashcam"]["notifications"]["reticulum"]["identity_file"]) +debug_message("Loading Reticulum identity file") +config["dashcam"]["notifications"]["reticulum"]["identity_file"] = "/home/cvieira/.reticulum/storage/identities/predator" +identity = RNS.Identity().from_file(config["dashcam"]["notifications"]["reticulum"]["identity_file"]) + +debug_message("Announcing Reticulum source") +source = lxmf_router.register_delivery_identity(identity, display_name="Predator") +lxmf_router.announce(source.hash) # Announce this instance. +last_announce = time.time() def lxmf_send_message(message, destination): global lxmf_router global config - debug_message("Loading Reticulum identity file") - config["dashcam"]["notifications"]["reticulum"]["identity_file"] = "/home/cvieira/.reticulum/storage/identities/predator" - identity = RNS.Identity().from_file(config["dashcam"]["notifications"]["reticulum"]["identity_file"]) - - debug_message("Announcing Reticulum source") - source = lxmf_router.register_delivery_identity(identity, display_name="Predator") - lxmf_router.announce(source.hash) # Announce this instance. + if (time.time() - last_announce > 30*60): + debug_message("Announcing Reticulum source") + lxmf_router.announce(source.hash) # Announce this instance. debug_message("Identifying Reticulum destination") recipient_hash = bytes.fromhex(destination)