- Added the ability to change the message on the weekly net
This commit is contained in:
Pablo Revilla
2025-03-20 13:27:32 -07:00
parent 45f650c0d8
commit 682fdd8dd2
4 changed files with 36 additions and 52 deletions
+26 -43
View File
@@ -81,52 +81,35 @@ async def process_envelope(topic, env):
)
session.add(seen)
if env.packet.decoded.portnum == PortNum.NODEINFO_APP:
user = decode_payload.decode_payload(
PortNum.NODEINFO_APP, env.packet.decoded.payload
)
if user:
result = await session.execute(select(Node).where(Node.id == user.id))
if user.id and user.id[0] == "!":
try:
node_id = int(user.id[1:], 16)
except ValueError:
node_id = None
pass
else:
node_id = None
try:
user = decode_payload.decode_payload(PortNum.NODEINFO_APP, env.packet.decoded.payload)
if user and user.id:
node_id = int(user.id[1:], 16) if user.id[0] == "!" else None
hw_model = HardwareModel.Name(user.hw_model) if hasattr(HardwareModel, 'Name') else "unknown"
role = Config.DeviceConfig.Role.Name(user.role) if hasattr(Config.DeviceConfig.Role,
'Name') else "unknown"
try:
hw_model = HardwareModel.Name(user.hw_model)
except ValueError:
hw_model = "unknown"
try:
role = Config.DeviceConfig.Role.Name(user.role)
except ValueError:
role = "unknown"
node = (await session.execute(select(Node).where(Node.id == user.id))).scalar_one_or_none()
if node := result.scalar_one_or_none():
node.node_id = node_id
node.long_name = user.long_name
node.short_name = user.short_name
node.hw_model = hw_model
node.role = role
node.channel = env.channel_id
node.last_update =datetime.datetime.now()
else:
node = Node(
id=user.id,
node_id=node_id,
long_name=user.long_name,
short_name=user.short_name,
hw_model=hw_model,
role=role,
channel=env.channel_id,
)
session.add(node)
if node:
node.node_id = node_id
node.long_name = user.long_name
node.short_name = user.short_name
node.hw_model = hw_model
node.role = role
node.channel = env.channel_id
node.last_update = datetime.datetime.now()
else:
node = Node(
id=user.id, node_id=node_id,
long_name=user.long_name, short_name=user.short_name,
hw_model=hw_model, role=role, channel=env.channel_id,
last_update=datetime.datetime.now(),
)
session.add(node)
except Exception as e:
print(f"Error processing NODEINFO_APP: {e}")
if env.packet.decoded.portnum == PortNum.POSITION_APP:
position = decode_payload.decode_payload(
+1 -2
View File
@@ -21,8 +21,7 @@
{% block body %}
<div class="container" > Weekly Mesh check-in. We will keep it open on every Wednesday from 5:00pm for checkins so you do not have to rush.<br>
The message format should be (LONG NAME) - (CITY YOU ARE IN) #BayMeshNet.<br><br>
<div class="container" > {{ site_config["site"]["weekly_net_message"] }} <br><br>
</div>
<div class="container">
{% for packet in packets %}
+1 -1
View File
@@ -1127,7 +1127,7 @@ async def net(request):
print_memory_usage()
# Fetch packets for the given node ID and port number
packets = await store.get_packets(
node_id=0xFFFFFFFF, portnum=PortNum.TEXT_MESSAGE_APP, limit=200
node_id=0xFFFFFFFF, portnum=PortNum.TEXT_MESSAGE_APP, limit=1000
)
# Convert packets to UI packets
+8 -6
View File
@@ -1,25 +1,27 @@
[server]
bind = *
port = 8081
tls_cert =
acme_challenge =
tls_cert =
acme_challenge =
[site]
domain = http://meshview.bayme.sh
domain = https://www.bayme.sh
title = Bay Area Mesh
message =
message = Real time data from around the bay area and beyond.
# Map structure
map_top_left_lat=39
map_top_left_lon=-123
map_bottom_right_lat=36
map_bottom_right_lon=-121
# Note about how your weekly mesh runs. time and tag used for the system to track.
weekly_net_message= Weekly Mesh check-in. We will keep it open on every Wednesday from 5:00pm for checkins. The message format should be (LONG NAME) - (CITY YOU ARE IN) #BayMeshNet.
[mqtt]
server = mqtt.bayme.sh
topics = ["msh/US/bayarea/#", "msh/US/CA/mrymesh/#"]
topics = ["msh/US/bayarea/#", "msh/US/CA/mrymesh/#"]
port = 1883
username = meshdev
password = large4cats
[database]
connection_string = sqlite+aiosqlite:///packets.db
connection_string = sqlite+aiosqlite:///packets.db