#meshing-around BBS/utility BOT

1 messages · Page 3 of 1

gentle kestrel
#

I got a lot of new log data for node telemetry, I saw the new error packet rates and such put them in but I was seeing 0 values on some things. Not sure if the data is missing or I am not grabbing the proper packet yet

I also put a trap in for Telemetry packets overall.

#

My dev node could have low errors and such I suppose

#

I didn’t expect 0

#

Also a new data/ folder showed up and I set all pickle/data files into this location to keep things tidy

#

If you have a high score you want to migrate into “v 1.5” just move it from project root to data/ after a pull

median fractal
#

No worries, intended to help more as i am building out my mesh network here in south spain. I am high in the mountains covering miles.

Another idea i had was to bundle the bbs nodes over a mqtt like a real bbs system worked in the old days. But that needs some braindumps hehe

gentle kestrel
#

Awesome! Sounds like a fun project! Glad the bot is useful for it!

Yea I have a todo for adding a new interface type of MQTT and Just a Text connector for serial and raw tcp connects which will open the door to a lot of that

median fractal
#

meshtastic/bbs/<server_id>/<channel>/<message_type>

#

Needs a proper design but it is doable

gentle kestrel
#

One hang up I have is a refactor to an interface class to tidy things up a lot but that’s over time kinda no rush.

I asked TC2 about a common link concept haven’t heard back yet

median fractal
#

Right

gentle kestrel
#

One other issue, and really the biggest is all the data flowing in needs a nodedb or otherwise to land in

median fractal
#

That could be a cloud node

gentle kestrel
#

The work with a radioless meshtasticD is interesting I want to visit

#

Have that be the virtual node table and it makes the meshbot work easy

dusky abyss
#

that's how i've been testing your code and my python client wip ❤️

#

i have several of them running, connected to various active meshes around the usa

gentle kestrel
#

Awesome; I’m really excited to try this but I know it will put me in a rabbit hole so I’m waiting to finish a core for multiplayer before I go there. Really excited to hear it’s working model

dusky abyss
#

also have wireguard rigged up here, so i can connect back to them with the android client from wherever

gray igloo
#

I have tailscale 😅

dusky abyss
#

you could probably do the same then ❤️

timber anvil
#

ye having a vpn back home/where your node lives is v nicee

dusky abyss
#

mdns is a pain tho, easier to just remember your node ips

gray igloo
gentle kestrel
#

I bet this page hasn’t been linked to for a while

gentle kestrel
#

ArtSci data source

#

They don’t allow data past 10miles without a login and repeater book uses a API key the terms are …

gentle kestrel
#

What you make of them

gentle kestrel
#

A chunker rewrite just happened

gentle kestrel
#

Also hacked out a lot of repeated code blocks

stone lance
median fractal
#

Just found out that running a heltec v3 with passthrough in virtualbox to a debian vm, is not ideal, switching to a pi4 soon

#

Any other people in here with a flipper zero? i know the flipper does not have support for lora or in other words the SX1272 chipset. But if anyone found a addon board that is available let me know!

stone lance
#

They're not designed for the flipper, but quick to adapt if you know the pin order you want

lost bear
#

I'm curious what the use case is for Flipper with Meshtastic. It's not much smaller than a node and would be a nightmare to try and compose messages of any real lengths with only dpad

stone lance
stone lance
lost bear
gentle kestrel
gentle kestrel
#

One issue I have seen is running a ble and WiFi simultaneously: on review the pi didn’t seem to be able to function (wasn’t the code I don’t think)

#

And the code will only allow 1 ble device same issues

gentle kestrel
gentle kestrel
#

Have you also seen #1247642561011515562

median fractal
#

Thanks for the tip! and indeed some visibility would be awesome, now lurking around with 2 devices

median fractal
gentle kestrel
#

I been chasing telemetry issues all day / the issue was my venv got borked and I was using a local meshtastic v 2.3 something so no code was working … oh man

#

What a waste of time

#

Anyway .. things are all updated and back on track

#

Hope to have lab stable soon

median fractal
#

chasing ghosts mate 🙂

gentle kestrel
#

Yea it was a mess, I have all the new telemetry I could find going into the logs now that seems fine

#

I am only getting the telemetry for the bot node

#

The reporting has the regex match done

#

It’s a matter of now collecting all the values and putting them somewhere

#

I stuffed them into a string on the host page for now

median fractal
#

thats allright, we can always adjust

buoyant meadow
#

Can I run this from a pi4?

gentle kestrel
#

The lab branch has a lot of new code in it but under heavy development

#

Just enhanced

buoyant meadow
#

Sweet, I assume it’s my install failed then. Get a config error and launch won’t work I’ll keep messing around!

gentle kestrel
#

Copy config.template to config.ini @buoyant meadow

gentle kestrel
#

Tidy up install instructions

buoyant meadow
#

AH yay its running gonna go mess with it now

gentle kestrel
#

Do a fresh pull of branch lab I think it’s stable possibly at the moment not a lot of debug going on @buoyant meadow

#

Has all the newest fun

buoyant meadow
#

Will do, I gotta get my tdeck to send to my node for some reason it stopped

lost bear
# gentle kestrel Yea! The only intensive compute is optional LLM

I am sure this is a longshot, but I'm guessing there is no way to offload the LLM portion to a different device on the network. Like a computer with good CPU/GPU to process commands but run the core of bot on Pi for stability and less power need when running off something other than grid power.

gentle kestrel
#

I am not sure if it’s easy to 1) modify host today

#
  1. needs a new prompt
#

I just fed it the exciting prompt and it spit out 50 messages the new chunkier works well hahaha

gentle kestrel
#

Ok the latest lab branch has some things to try. I don’t know at this moment if you can use my langchain-model with a remote server. Check out LLM.py and there is a value at the top to goof with local server // this is unthrottled access it can be verbose @lost bear

gentle kestrel
#

Ok lab got a quick test from QA and I’m going to try and change freeze make sure it’s stable and finish uno

median fractal
gentle kestrel
#

Did you mean to copy the LLM to a new py

median fractal
#

lets keep both, and have a remote and local option

#

yeah my bad, coffee needed, just got up here

gentle kestrel
#

Feel free to just patch over the patch and keep the same pr I don’t really use individual commit meta/comments

#

You may have noticed I commit like a 🥔

#

I have hot key for push

median fractal
#

i saw that, i envy your free time to work on such projects 🙂

gentle kestrel
#

It’s been a lot of fun; I have quite the pipeline of ideas still

#

I was just drafting up a pax2 monitor today

#

OpenCV enhanced pax telemetry

#

got some framework in for GPIO # REMOTE_HARDWARE_APP
if packet_type == 'REMOTE_HARDWARE_APP':

#

It’s a moonshot to get 🕹️ in the mainline UI but I think this project could give a nice blynk like utility for a explosion of STEM use

#

Still I can text “GPIO #4 0101011100” or something handy

stone lance
gentle kestrel
#

The quickest is having macros set but the GUI GitHub is wonderful for reviewing things

stone lance
#

Oh, gui GitHub!

gentle kestrel
#

yea it’s really a lifesaver

stone lance
#

My RPi always seems to lose WiFi after 7 days and need resetting. Meshbot still works, tho 🤖

gentle kestrel
#

woot, your dhcp isn’t being renewed?

#

Try a static on it

gentle kestrel
#

There is also a GitHub app, you can write code in it

stone lance
median fractal
#

Is your wifi setup not releasing it's clients after 7 days ? static like @gentle kestrel , could help otherwise have a look at the AP

gray igloo
#

i have something similar here :)

#

blasting on 869.525MHz all the time no pauses

#

long moderate somewhat works

stone lance
#

new service runs without terminal

#

how do I watch the world scrolling by?

#

or restart the service, for that matter

median fractal
#

you can do a tail -f on the log file

#

from directory logs you will find the meshbot(date).log run that with tail -f LOGfile

stone lance
#

thanks

#

I got the service restarted

median fractal
#

awesome

gentle kestrel
#

Or use the cool new reporting tools!

stone lance
gentle kestrel
#

I did close the pr for the change to the LLM.py @median fractal

I have a “help” thread in over at ollama to see if there is a quick answer to using client with a model prompt

#

If so .. it’s obvious to restructure the code to pointing to only the client makes it single file easy

#

The documentation seems sparse so far (without delving into the Python)

#

Specifically I would like to feed langchain into “ollama Client”

#

or if there is another efficient way to model prompt

#

It’s a requirement - one thing I haven’t tested is dumping all of langchain only using ollama client and building a model prompt in Python only (a fancy way to say it’s a huge ‘f’ string) sent to client

This might work perfectly as it’s really ideal

gentle kestrel
#

It works perfectly it seems

#

I’m running out the door but I will refactor this yes

gentle kestrel
#

@device2755 your push makes more sense now

median fractal
#

Good to hear 🙂

buoyant meadow
#

It works! Took a whole day (mainly was away at work)

gentle kestrel
#

Awesome!

#

I just got full refactor in for LLM1,5
Tightened up the model prompt
Added config.ini hostName @lost bear

#

It’s on lab:branch

#

You can now use any device and remote access your own LLM, likely others

buoyant meadow
#

Nice

#

Is askai only on lab?

gentle kestrel
#

It’s also in main

buoyant meadow
#

Im just dumb and did not scroll my config

#

I am so privileged to do everything with a UI that I fail at SSH haha

gentle kestrel
#

I been goofin with RAG again feel like it’s sooo close

#

ollamaClient.generate(model=llmModel, prompt=modelPrompt, context=ragContext) throws an error about json

If you put data/rag/blah.txt

#

ragContext looks nice big old number array

#

But it’s expecting json ..

#

So client is all json and older lang chain links are the array? (I think)

#

(Goes hunting for details on rag and json)

gentle kestrel
#

Nothing yet, if any ideas I’m stuck for the moment

median fractal
#

I can have a look tomorrow

#

was busy today for my son, promised him a nasa control panel, made the first commits today, still working on the buttons and the casing to put it all in

gray igloo
#

Nasa control 🤣

median fractal
#

didn't you want to have one when you where 5 years old 😉

gray igloo
gentle kestrel
#

Awesome project! I had kids once and loved making stuff like this so much fun.

median fractal
#

indeed, he is happy to help with soldering, and learning about computers, so win win

gentle kestrel
#

Very fun; I’m jealous!

median fractal
#

Awesome!

gentle kestrel
#

I rolled lab into main

#

If you don’t need old logs and want reporting chuck the old logs

#

Old logs won’t help any accuracy or charts

#

Lab will be less stable and I hope main is low issues, holla if you find any

jade briar
#

Awesome job you guys have done on this.
I'm running main branch on pi4b, 4g ram
It won't run ollama so not playing with that.
I had issues with ./launch.sh, it doesn't pick up mesh or pong and fails (or html selection)
Got round it by commenting out the bits I didn't want.
Maybe I'm missing something there re how to launch?

stone lance
#

LAtest version should be running as a service if you use the ./install.sh

gentle kestrel
jade briar
#

I'll have a look tonight and let you know
I'm zulu +12 (nz)

gentle kestrel
#

Nice! I added a comment to launch.sh about being for venv to make it more friendly

jade briar
near drift
#

^ seems useful to pin to the channel 😉

gentle kestrel
#

Should be the first post, I don’t know forum threads pin?

gentle kestrel
#

Is that what you’re running?

#

Should deprecate the old pingbot entirely

#

So launch just launches the mesh bot

#

I assume? The command line auto complete is putting ./launch.sh mesh_bot.py which won’t trap $1 if

#

(Might need changed to not do that)

#

I don’t know I understand the fault yet

near drift
#

I've got a bot running, (launched by running mesh.py directly)

uv run mesh_bot.py
2024-10-12 14:22:58,556 |    DEBUG | System: Initializing Interface1
2024-10-12 14:23:00,197 |     INFO | System: Autoresponder Started for Device1 Painkiller MQTT Relay,PKMR.
...
2024-10-12 14:23:00,197 |    DEBUG | System: Store and Forward Enabled using limit: 3
2024-10-12 14:23:20,707 |    DEBUG | Telemetry:1 numPacketsRx:0 numPacketsRxErr:0 numPacketsTx:0 numPacketsTxErr:0 ChUtil%:1.8 AirTx%:0.5 totalNodes:9 Online:0 Uptime:13m Volt:4.2 Firmware:2.5.6.d55c08d
2024-10-12 14:23:26,183 |     INFO | Device:1 Channel: 1 Received DM: cmd From: KP Base
2024-10-12 14:23:26,183 |    DEBUG | System: Bot detected Commands:[{'cmd': 'cmd', 'index': 0}] From: KP Base
2024-10-12 14:23:27,384 |     INFO | Device:1 Sending DM: Bot CMD?: ping, sitrep, motd, whoami, sun, hfcond, solar, moon, whereami, wx, wxc, rlist, wxa, tide, bbslist, bbshelp, joke, wiki:, games, messages To: KP Base

It definitely says it's responding to a DM with cmd in it, but I'm not getting a DMed response back on KP Base. node is a heltec v3 running 2.5.6 flashed an hour ago.
Node only has a custom PSK channel, and the following set

respond_by_dm_only = False
# defaultChannel is the meshtastic default public channel, e.g. LongFast
defaultChannel = 1
# ignoreDefaultChannel, the bot will ignore the default channel set above
ignoreDefaultChannel = False

Not sure where to start troubleshooting.

#

I've been able to manually DM back and forth between the nodes

gentle kestrel
near drift
#

about 30 feet through a roof. ping like "traceroute" or a different kind of ping

gentle kestrel
#

Instead of CMD send ping

#

The Cmd packet is larger wondering if a smaller ping response works

#

Larger as in more text to send

near drift
#

ping gets logged, but no response comes through

2024-10-12 14:47:29,706 |     INFO | Device:1 Channel: 1 Received DM: ping From: KP Base
2024-10-12 14:47:29,706 |    DEBUG | System: Bot detected Commands:[{'cmd': 'ping', 'index': 0}]
2024-10-12 14:47:30,907 |     INFO | Device:1 Sending DM: 🏓PONG, SNR:6.0 RSSI:-32 To: KP Base
#

hrm. I have LOCAL_ONLY set on this bot node for rebroadcastmode. That shouldn't matter, but lemme set that back to default

gentle kestrel
#

Also try a channel see if DM PSK is going strange

#

It appears all is well, and if no errors it passed off to meshtastic radio fine

near drift
#
2024-10-12 14:49:46,375 |     INFO | Device:1 Channel:1 Received: Ping From: KP Base
2024-10-12 14:49:46,375 |    ERROR | System: AntiSpam protection, sending DM to: KP Base
2024-10-12 14:49:46,375 |    DEBUG | System: Bot detected Commands:[{'cmd': 'ping', 'index': 0}]
2024-10-12 14:49:47,576 |     INFO | Device:1 Sending DM: 🏓PONG, SNR:5.75 RSSI:-31 To: KP Base
gentle kestrel
#

Your public was set as 1

#

So use channel 0

#

(If you want to spam needs hard set in code to disable anti spam)

#

There is a handy Boolean

near drift
#

0 is the custom PSK channel
I actually removed the default AQ== channel completely
and have this in my config:

[general]
# if False will respond on all channels but the default channel
respond_by_dm_only = False
# defaultChannel is the meshtastic default public channel, e.g. LongFast
defaultChannel = 1
# ignoreDefaultChannel, the bot will ignore the default channel set above
ignoreDefaultChannel = False
#

I interpreted defaultChannel as "tell me which ch-index is the AQ== channel"

gentle kestrel
#

Set default channel to like 7 if you don’t have one

#

Basically removing it from play

near drift
#
2024-10-12 14:54:22,728 |     INFO | Device:1 Channel:7 Received: ping From: KP Base
2024-10-12 14:54:22,729 |    ERROR | System: AntiSpam protection, sending DM to: KP Base
2024-10-12 14:54:22,729 |    DEBUG | System: Bot detected Commands:[{'cmd': 'ping', 'index': 0}]
2024-10-12 14:54:23,929 |     INFO | Device:1 Sending DM: 🏓PONG, SNR:6.25 RSSI:-31 To: KP Base

weird

#

I definitely don't have a channel 7

gentle kestrel
#

Yea that’s a bug, is your primary channel 1 ?

near drift
#

Channels:
Index 0: PRIMARY psk=secret { "psk": "redacted", "name": "Painkiller", "uplinkEnabled": true, "downlinkEnabled": true, "moduleSettings": { "positionPrecision": 32, "isClientMuted": false }, "channelNum": 0, "id": 0 }

Primary channel URL:

#

maybe I'll do a export-config and full erase...

gentle kestrel
#

Oh.. is this MQTT inbound?

near drift
#

no, radio inbound

#

the mqtt is just a "I want INA voltages from telemetry from the roof node" thing

gentle kestrel
#

Yea I’m just trying to figure out how to replicate it so I can find the issue is there only channel 0?

near drift
#

correct, only channel 0

#

roof node (ping sender) has
0: AQ==
1: custom PSK
bot node has
0: custom PSK

#

at one point recently, bot node had
0: custom PSK
1: AQ==

#

but hasn't for about an hour

gentle kestrel
#

So I think firmware uses ch0/primary for DM (psk or not) in this case if your responding on DM your bot will always use AQ==

near drift
#

doesn't the new PKI stuff ignore channel encryption?

gentle kestrel
#

It’s a overlay

#

Like a VPN tunnel

#

It uses AQ== highway

#

(The primary channels config)

#

I could add logic for “channel only no dm” to force it possibly

near drift
#

so
roof node sends 'ping' over custom PSK channel (not DM)
bot node responds on AQ==, even though that's not configured?

gentle kestrel
#

I think that is what may be happening first glance

near drift
#

that feels like it should be impossible

gentle kestrel
#

So you can test this .. use the curses client as a chat terminal and test coms

near drift
#

not saying your wrong, I just can't mentally trace how the bot node would try to respond via DM on top of a channel key that isn't configured

gentle kestrel
#

it’s a hardcodes thing .. I am quoting a comment I saw in the pdxlocations code for the limits on DM

#

I tried to get around it once and found it was still true back on 2.3

#

I assume it’s the same today for the limit

#

But still .. I’m confused by your logs @near drift

#

Interested to hear how curses client works out

#

Same underlying API

#

Can you get messages two way and if so which channel on which device. Don’t set your public channel on the bot to that channel

near drift
#

"Don’t set your public channel on the bot to that channel" ?

gentle kestrel
#

If you can chat in curses client take note of the channel for the device I assume you want public =0

near drift
#

I was trying to not have the bot node on public/AQ== at all

gentle kestrel
#

Ahh ok

near drift
gentle kestrel
#

Can you DM?

near drift
#

sec, testing that now

#

DMs work bidirectionally

gentle kestrel
#

Ok that’s all good!

near drift
#

🎉

#

so the actual radio/channel layers are g2g it seems

gentle kestrel
#

For sure, I don’t do a lot different for interactions with the radio but .. I never actually thought about or tested a “no public channel” I don’t think and assume something is failing

near drift
#

I can throw the AQ== into index 1 and try that

gentle kestrel
#

Or any key yea I would be curious

#

Those logs showing you got traffic on 7 tell me I have an issue

near drift
#

ok, AQ== is now index 1, I assume set defaultChannel=1 again, rather than 7?

#

^ that works as a DM

#

custom channel ping, DMed response works as well

#

so I angered the code by not having a default channel at all 😄

gentle kestrel
#

Ok confirms my suspicion, I never accounted for this situation. I’m on a walk will be back at keyboard soon and figure it out!

near drift
#

enjoy your walk!

near drift
#

this will be pretty bad if packet.get('channel') is set by the sender somehow

#

added some debug logging

git diff mesh_bot.py
diff --git a/mesh_bot.py b/mesh_bot.py
index 7abe80d..e985d8f 100755
--- a/mesh_bot.py
+++ b/mesh_bot.py
@@ -906,7 +906,11 @@ def onReceive(packet, interface):

             # check if the packet has a channel flag use it
             if packet.get('channel'):
+                logger.debug(f"Channel from packet: {packet.get('channel')}")
                 channel_number = packet.get('channel', 0)
+                logger.debug(f"Channel_number: {channel_number}")
+            else:
+                logger.debug("packet had no channel")

             # check if the packet has a publicKey flag use it
             if packet.get('publicKey'):

results:

INFO | System: Autoresponder Started for Device1 Painkiller MQTT Relay,PKMR. NodeID: 862415632, !33676b10
...
2024-10-12 15:52:26,527 |     INFO | packet had no channel
2024-10-12 15:52:26,531 |     INFO | Channel from packet: 1
2024-10-12 15:52:26,531 |     INFO | Channel_number: 1
2024-10-12 15:52:26,535 |     INFO | Channel from packet: 1
2024-10-12 15:52:26,535 |     INFO | Channel_number: 1
2024-10-12 15:52:26,543 |     INFO | Channel from packet: 1
2024-10-12 15:52:26,544 |     INFO | Channel_number: 1
#!!! Pretty sure this is my 'ping'
2024-10-12 15:52:36,599 |     INFO | packet had no channel
2024-10-12 15:52:36,599 |    DEBUG | packet had no channel
2024-10-12 15:52:36,599 |     INFO | Device:1 Channel:1 Received: Ping From: KP Base
2024-10-12 15:52:36,600 |    ERROR | System: AntiSpam protection, sending DM to: KP Base
2024-10-12 15:52:36,600 |    DEBUG | System: Bot detected Commands:[{'cmd': 'ping', 'index': 0}]
2024-10-12 15:52:37,800 |     INFO | Device:1 Sending DM: 🏓PONG, SNR:6.0 RSSI:-31 To: KP Base
2024-10-12 15:52:38,982 |     INFO | packet had no channel
2024-10-12 15:52:46,905 |     INFO | packet had no channel
^C2024-10-12 15:53:06,855 |    DEBUG | System: Closing Autoresponder
gentle kestrel
#

Try a new pull

#

I had a error for sure

#

You can set the public channel to something off index now

#

I was using -1

near drift
#

should I remove the AQ== channel, or set the config to something wacky (or both)

gentle kestrel
#

Set it up like you want it

#

Ideally works fine now 😎

near drift
#

neat, in-channel response, and DMs work

#

youdabest, @gentle kestrel

#
2024-10-12 16:00:04,084 |    DEBUG | System: Store and Forward Enabled using limit: 3
2024-10-12 16:00:12,424 |     INFO | Device:1 Channel:0 ReceivedChannel: Ping From: KP Base
2024-10-12 16:00:12,424 |    DEBUG | System: Bot detected Commands:[{'cmd': 'ping', 'index': 0}] From: KP Base
2024-10-12 16:00:13,624 |     INFO | Device:1 Channel:0 SendingChannel: 🏓PONG SNR:6.0 RSSI:-31
2024-10-12 16:00:24,795 |    DEBUG | Telemetry:1 numPacketsRx:295 numPacketsRxErr:0 numPacketsTx:230 numPacketsTxErr:0 ChUtil%:5.0 AirTx%:2.3 totalNodes:33 Online:26 Uptime:2h Volt:4.2 Firmware:2.5.6.d55c08d
2024-10-12 16:00:41,740 |     INFO | Device:1 Channel: 0 Received DM: Ping From: KP Base
2024-10-12 16:00:41,740 |    DEBUG | System: Bot detected Commands:[{'cmd': 'ping', 'index': 0}] From: KP Base
2024-10-12 16:00:42,941 |     INFO | Device:1 Sending DM: 🏓PONG SNR:6.0 RSSI:-31 To: KP Base
#

thanks so much!

gentle kestrel
#

Yes thank you for finding the issue!

near drift
#

I will endeavor to do more non-standard stuff to find edge cases 😄

near drift
#

or at least isn't "how PKI on top of channels works"

#

we proved that a DM goes back over the channel it's received on, I think

gentle kestrel
#

Also Fixed a few game bugs

near drift
#

I don’t think so, it was receiving on 0, but that “if no channel in packet, set it to default” bit, when I didn’t even have a 1, but had configed default=1

gentle kestrel
#

Cut LHeard size with short names

near drift
gentle kestrel
#

My code had a very large issue I was forcing the channel incorrectly when none existed aka ch 0

near drift
#

Is that another “we’re not real explicit if 0 means 0 or unknown sometimes” issue?

gentle kestrel
#

I had a fault in that if the packet didn’t have a channel (which is the case for zero) I set the channel to the default channel int value

#

This is totally incorrect

#

So it was destroying the packet flow // the reason this wasn’t found before is everyone to date has been running a public channel I suppose

#

So there is always a valid entry for it and this wasn’t cropping up the firmware was handling it

#

There was the reference

#

And so I had replicated its functionality by forcing channel absent to default channel

#

But I did it incorrectly for sure

#

Assigned it in handling BBS mail

#

My fix / patch was removing its poor area in code block and just assigning zero just like pdxloc did in that same example

gentle kestrel
jade briar
#

Yes it spun up good on my pi this time
Good work

jade briar
#

I've got it spun up on my nas now in a vm running Linus server
My issue with the launch.sh earlier may have been because I rebooted after the install
If I don't reboot launch runs fine
It's like it looses the $1 string after reboot?
Ring any bells?

gentle kestrel
#

Hard to say without looking at the output but glad it’s working. now!

unborn flint
#

I have a friend outside of mesh range. We have had some fun chatting through mqtt. I was hoping he could access the bot, but he cannot. Am I missing a setting or is the bot over mqtt a no-go? The bot hears over mqtt, but the response isn’t shared over mqtt.

And by the way, thanks for making this, I learned a bit setting it up and am having fun playing with it

gentle kestrel
unborn flint
#

The node has 4 channels. 0 is private primary. 1 is LongFast default. 2 is another private channel. 3 is admin. All have mqtt up and down enabled.

Bot: respond by dm is false default channel =0 and ignore default is false.

Putting my captain obvious hat on: if I made the radio less, then I’d have to find a solution for rf only members of mesh. Which might not be a big deal.

gentle kestrel
#

What is done is the bot is radioless and the node has MQTT uplink and downlink

#

I am guessing the node isn’t passing serial traffic into MQTT? I need to try this setup

unborn flint
#

That is the part that confused me. The bot node is set up the way my pocket node is. When I send message on pocket, they go through mqtt. But when the bot sends a message, it doesn’t go through mqtt. Since it’s almost Halloween, I’m going with the node is a sentient being that doesn’t like interfacing with a bot? 😂

gentle kestrel
#

I don’t know actually I have never uplinked or downlinked a node really I will test this out and see if something is obvious.

I do think a lot of people do the fake radioless node because of a limit / I don’t know if its meshbot code or firmware

unborn flint
#

Well, fwiw, I turned on serial echo and my friend can see the bot.🤷‍♂️

gentle kestrel
#

Interesting thanks for sharing

#

That seems like a possible solid resolution. @unborn flint did you enable the serial or just have to enable the echo?

unborn flint
#

Serial was enabled, I just enabled the echo. Although I just checked and DM isn’t working. That might be a setting in the config.ini though.

unborn flint
#

DM works on RF, not mqtt. Getting closer. I’m going to install that latest pull and see if setting default to -1 changes anything.

gentle kestrel
#

That project and mesh-bot use the same concepts for connectivity etc

#

I need to change some major items in my lab to get MQTT working so .. gonna take a day

unborn flint
#

I installed latest pull. Set default channel to -1. Set transmit enable to false on both devices. DM didn’t work. It did work on channels, except in chunked messages I only receive first chunk.

I’ll check out pdxlocations in the next day or two and see what light that sheds.

gentle kestrel
#

I haven’t been testing MqTT (yet) forgive me. But I have been goofing around with a RAG model and I think I have something which can scale .. it’s apparently working in very dev code

#

If you have any feedback on better ideas I’m all ears I’m not ground breaking but I really am flying blind for the most part when it comes to the best way to query via the client with lots of text

#

I haven’t gone as far as kwix yet but possibly it’s close possibly anyway if you wanna 👀 it’s on lab

#

chromadb is needed as a include

#

I dumped langchain possibly for good

#

Means any model which needs langchain templates would be EOL for this project

#

I am also thinking of default model shift to llama3.2 it’s fresher less bias

#

Well.. who am I kidding but it’s fresher

#

tbd Gemma plays very well with top 3 Google results

unborn flint
# gentle kestrel Means any model which needs langchain templates would be EOL for this project

Quite alright on the mqtt. The rest is way over my head.

I did run that curse-xxx script. Unfortunately, I realized that when I upgraded firmware to 2.5, I chose the wrong file and flashed the wrong firmware. Apparently it was close enough to basically work, but it was a little wonky. I fixed that mistake. Still no joy on the DM to bot through mqtt. Let me know if there is specific data that would help you.

My background is psychology and helping people who have mental challenges. Reading your post helps me empathize with those people much better. I feel quite mentally challenged trying to figure out what you just said.

Thanks for all your efforts!

#

I did just read this in the general channel:

yes, 2.5+ supports public-key cryptography which is used for DMs. prior to that, it's not just channel 0 that's used either -- it's whatever channel your node most recently saw a nodeinfo from the recipient node on, which if you share multiple channels with that node could be any of those

Since both nodes share 4 channels, I wonder if that is causing an issue. Since that node will be dedicated just to the bot, I’ll experiment with just using one channel and see if that changes anything.

gentle kestrel
#

Oh nice, if the curses client can do it I should be able to / if neither can that’s good to know as well

#

So the serial echo isn’t seeing DM is what it boils down to?

#

What’s in test I think

#

Still not totally sure

gentle kestrel
#

You could take a book for example put it in the bot and have AI query in meshtastic

#

If your home PC is a pi5 or better quality you can play along with ollama it works on most all systems

#

If your using it via docker today it needs some know how, however

#

Otherwise it’s mostly scripted in Linux for use

#

And if your a windows user and got this far you should be able to roll the rest

#

(Share your scripts we can add them)

unborn flint
#

My computer was a windows machine. It got very slow. So I installed Ubuntu. I’ve been having a blast playing with that. Brings me back to sitting in the computer lab and playing with the Apple 2e’s. I haven’t had a chance to play with ollama yet, but I’m looking forward to it.

near drift
#

well, at least my radio-chip less node didn't

#

^ that's a lie. I had to restart it but now I have keys, and now I can curses-client DM with a real node via MQTT relay to RF

gentle kestrel
#

Yea that seems like a tried and tru way to go really if MQTT is wanted

#

It gives a lot of flexibility

#

I’m curious about the echo trick and DM it’s a fun idea

gentle kestrel
near drift
#

Yessir!

#

Er sorta. I haven’t moved a bot to that Linux node

#

But the Linux node can interact with the bot connected to an RF node

#

So… I don’t think I’ve tested what you were asking

gentle kestrel
#

If it’s all working it’s all good!

gentle kestrel
#

The chromadb something uses a older version of protobuf somewhere - ooof
I ignored it and things are fine but not ideal

#

Not sure if this will just be a hidden feature or what

unborn flint
#

@gentle kestrel, when you say radioless node. I want to be sure I understand, is that a physical node with the rf chip removed or a virtual node?

gentle kestrel
#

A copy of #meshtasticd it’s the firmware like a node but it’s just a service running on your Linux box allows for having a software only node

#

I don’t know if the noradio method is documented however @unborn flint I have been slacking off on goofing there wasn’t a ARM deb last I looked

#

The bot attaches to the software node (meshtasticd) and its setup to route traffic wherever you want like a normal node is what I understand operations to be

#

The only difference being there is no RF so those commands just null

#

Allowing the MQTT routing manipulations as anyone sees fit

#

Why this method will echo fully over MQTT and having it set on the node only is interesting questions

unborn flint
#

Ok. Thanks. I’ll have to research that for education and maybe use. I rolled all my nodes back to 2.4.5, except the one for the bot and everything is working better.

There aren’t many nodes around me and friends and family rely on mqtt to fill in the large gaping holes in the mesh. 2.5 mucked up the works on that.

#

I was toying with the idea of also having a NWS-SAME-EAS- alerter running on same machine. And it looks like native-Linux might work for that.

My machine is amd64. So I have to be careful when I do the copy and paste installs. My computer looks at me like I’m a bit addled when I try to do that.

gentle kestrel
#

Nice! It sounds like your issues were possibly related to PKI DM? @unborn flint so it sounds like the serial Echo might actually be “the way to go” (it’s easy) and I will for sure test this more eventually

near drift
#

if the issues were MQTT related, I assumed they were more to do with the okToMQTT flag that showed up around 2.5

near drift
#

setup:
All of these nodes only have a custom PSK channel, no AQ== channel
1 RF Node (05a9)
1 meshtasticd linux node connected to MQTT
1 RF Node doing MQTT relay (uplink/downlink) for the channel (mqtt relay)
bot connected to meshtasticd node

I can DM from RF node to meshtasticd node using curses client on both ends
I can DM from RF node to bot-meshtasticd and get ping responses

So RF node <> mqtt relay node <> meshtasticd <> mesh_bot.py works on both private channels and DMs!

#

Which I think is what you were asking "does it work" last night

#

When I swap out the RF Node above to one that has the default LongFast channel and the private channel, the bot sees the DM and sends a response, but the RF node doesn't get the response

near drift
gentle kestrel
#

Is the added public channel longfast index 1

near drift
#

huh, it worked now.

#

working log

2024-10-15 13:03:45,080 |     INFO | Device:1 Channel: 0 Received DM: ping From: KP Base
2024-10-15 13:03:45,081 |    DEBUG | System: Bot detected Commands:[{'cmd': 'ping', 'index': 0}] From: KP Base
2024-10-15 13:03:46,281 |     INFO | Device:1 Sending DM: 🏓PONG SNR:5.75 RSSI:-28 To: KP Base
2024-10-15 13:03:55,498 |     INFO | Device:1 Channel:0 Ignoring Message:  From: KP Base
2024-10-15 13:03:58,803 |     INFO | Device:1 Channel:0 ReceivedChannel: ping From: KP Base
2024-10-15 13:03:58,804 |    DEBUG | System: Bot detected Commands:[{'cmd': 'ping', 'index': 0}] From: KP Base
2024-10-15 13:04:00,004 |     INFO | Device:1 Channel:0 SendingChannel: 🏓PONG SNR:7.5 RSSI:-29

a DM and then a priv channel

#

previously wasn't working log:

2024-10-15 12:39:36,116 |     INFO | Device:1 Channel:0 ReceivedChannel: Ping From: KP Base
2024-10-15 12:39:36,116 |    DEBUG | System: Bot detected Commands:[{'cmd': 'ping', 'index': 0}] From: KP Base
2024-10-15 12:39:37,316 |     INFO | Device:1 Channel:0 SendingChannel: 🏓PONG SNR:7.0 RSSI:-28
2024-10-15 12:40:00,354 |     INFO | Device:1 Channel: 0 Received DM: Ping From: KP Base
2024-10-15 12:40:00,354 |    DEBUG | System: Bot detected Commands:[{'cmd': 'ping', 'index': 0}] From: KP Base
2024-10-15 12:40:01,555 |     INFO | Device:1 Sending DM: 🏓PONG SNR:6.5 RSSI:-28 To: KP Base

I'm gonna just chalk that up to "shit's weird sometimes"

#

looks like there might be a chunking issue though:

near drift
gentle kestrel
near drift
#

weird, this is longfast

gentle kestrel
#

The rf got lost

#

Move devices further apart in test or client mute to help

near drift
#

I wonder if it gets lost in the mqtt -> RF portion

#

hrm, I'll double check, I think only one of these RF nodes isn't client_mute

gentle kestrel
#

No it seems to be when the psk packet is there I assume long data

#

It’s a common issue overall I battle all the time

#

The whole addition of the chunker is the limits which can be exceed with failure otherwise

#

Loss of packets is common

#

But very interesting it’s always this one .. not for example Lemonstand which has similar data in 4 packets

#

Whois also has a loss of the gps details for me a lot

gentle kestrel
#

See if the issue remains

near drift
#

sure

gentle kestrel
#

I am forcing the index to 0 and if there is reason to overwrite it now it will - if a failure still happens…

near drift
#

didn't expect to see kubernetes got pulled in as a dep 😉

near drift
gentle kestrel
#

Good news!! @unborn flint 👀 this may also correct the issue you saw 🤞

#

Thanks @near drift !

near drift
#

now to track down all my s/CLIENT/CLIENT_MUTE Nodes

gentle kestrel
#

If your a fan of Golfsim ⛳️ the worlds best Meshtastic Golf Simulator game. It finally got its scorecard system fixed up (in lab currently)

broken sorrel
#

did you manage to connect a rak via serial rx/tx?

gentle kestrel
broken sorrel
#

I figured lol

gentle kestrel
#

That said .. it should work fully and more so now that the MQTT DM issue was just resolved

gentle kestrel
# broken sorrel I figured lol

Yea have you set up any systems with serial proto yet? Now that LLM can be remote I’m thinking of rearchitecting the bot into a light weight device again

#

I set up ble and it works so well thru the wall I just haven’t done much else on the serial lines at the moment

#

And since MQTT stuff is getting fixed up

#

I would really like to have the bot working fully on RF with MQTT collections for big data evaluations

broken sorrel
#

I haven't messed with that

#

I'm trying to work through the lowest possible power usage linux board for bbs hosting

gentle kestrel
#

Is the current draw of powering the node via pi usb excessive to the current when using serial only @broken sorrel

#

My hang up has been no micropython

broken sorrel
#

no - the issue was trying to get usb host mode to work on these rando chinese boards

gentle kestrel
#

Ahhh

#

That is a good reason to validate this serial proto works

broken sorrel
#

I'd love to get gpio serial to work, but... well

#

it's black magic

gentle kestrel
#

On a pi? You should be able to rasp conf enable the port and boop

gentle kestrel
broken sorrel
#

did that so much that the wires got twisted lol

gentle kestrel
#

Hehe - I just soldered a header to a rak and aim to validate this but in the process of getting serial I had to find some hook up wire as well and now I’m cleaning my entire workbench

gentle kestrel
#

Well on a rak using serial and setting GPIO 15/16 didn’t get me any data yet @broken sorrel

broken sorrel
#

yeah

#

sames

#

and it's pissing me offf

#

there's this #contributor-lounge message

#

but I haven't tried the other pins yet

gentle kestrel
broken sorrel
#

try simple mode to a uart console

gentle kestrel
#

Using screen
No luck yet @broken sorrel but when I connect it clears the message waiting LED so .. something is working somewhere

broken sorrel
#

it's black effing magic

#

I'm not convinced it's ever worked for anyone

#

nah, I'm exaggerating.

#

But it's a total mystery

gentle kestrel
#

Outside of clearing the blue LED by connecting a bunch with zero data on screen I got nothing as well so far

#

I tried with a level converter and just GPIO

gentle kestrel
#

Been squishing a lot of bugs, fixed a weather alert issue just now. Rolled lab into main for a release tag as the change list was getting big

half kindle
#

youve got me wanting to write a dope wars clone in Go for my bbs now 😄

gentle kestrel
#

From calculators to the old dial ins I remember it fondly, I’m procrastinating with uno got side tracked with other stuff.

I was thinking a https://gitlab.synchro.net/main/sbbs/-/tree/dailybuild_linux-x64 plugin would also likely work as there is a IRC plugin should be a natural port for mesh

I am accustom to yeeting and beatings and yesterday’s ban of me for 24 hours is likely to justify an outright ban from this discord so .. my time is limited here likely

dusky abyss
#

dope wars with actual gps integration would be rad

#

could get extra spicy, like...i could drive to the lowlands to sell some cola, but it's literally risky af, so i'll sell it in burbs

#

measure price by hops away from the dopebot 🙃

gentle kestrel
#

Heh, that wouldn’t be too hard I did have to rethink some plans with the change to low accuracy defaults so that got shelved for the moment my grms radio gps is accurate but apparently it’s insecure as it shares PII

The advantage to a dope war location game is if multiple are playing you can meet up at sites to possibly exchange XP points for better odds in game play?

If the cops get suspicious say I’m playing drug wars the game on meshtastic where we buy and sell drugs but it’s not real .. just don’t accidentally click on your roof node to expunge the evidence of the game play it would be difficult to explain without 😜

#

I’m gonna ponder this RAG situation for a bit more; try and get some graphs in for data reporting try and get uno done

#

I accidentally used my kids names in the simulator for nodes names - I don’t see my kids due to the progressive nature of family court it impacted me a little much to play uno with them ( in simulation) we did a lot before the big D (not Dallas)

#

I’m one janky function away from getting it working fully I think, it’s figured in my head so just need to paper it out

#

They fun ideas, for sure on the list anyway 🙂

stone lance
#

Your bbs has certainly been the most interesting, esp. with the games

stone lance
#

The low accuracy is only on iOS. Might be able to generate a channel link which allows full accuracy?

gentle kestrel
# stone lance Most of the bans on here have been for continuing an argument after a 24 hour ba...

That’s the rub right it’s subjective if I say January X or October Y it will trigger/conjure everyone’s favorite word misinformation

I believe I was banned for rule 3 saying ok block me after I was told by a leading member “I won’t interact with you” so like most fights who started it? And since I’m just a potato the classic way is remove the problems in America half the county hates the other half so much they will do everything to eliminate it

#

It’s tiresome, and speaking up or going direct to try and resolve issues people just ignore you I was banned 45 min later by another admin

#

The reasons are goofy, but thanks for listening or talking it out.

gentle kestrel
dusky abyss
#

a passive collection style game might be fun

#

like, earn xp based on packets seen that aren't your own nodeinfo or telemetry

#

maybe turn on neighbor info and earn xp from that data

#

when another node is seen that also has a "character" created, you can battle or something

gentle kestrel
dusky abyss
#

2 weeks ago! haha nice

gentle kestrel
#

It’s in a very dev state no implementation yet

#

ideally needs a “poki” capture the flag geocache ..dopewars component added still to do before major gameplay work starts

Having virtual waypoints

#

And a who got there list

jade briar
#

Well done on the last update.
The auto ping is very useful and I like the store and forward.

gentle kestrel
#

Thanks glad it’s working well!

gentle kestrel
#

Got a few other fixes in, uno might be a mess to abandon there is a lot of info needed when you got 25 cards in your hand it’s a mess

stone lance
#

I mean, that's like real life, tho

gentle kestrel
#

I haven’t tested it fully yet but tossed out a lab branch with bbs synchro idea see if it works - anyone has input / testing be cool

gentle kestrel
#

The concept is a broadcast message would be detected (the command bbslink) which should synch the table

#

So if you had a channel dedicated to your own bbs linking

#

The idea is multiple bots in the same mesh share the bulletin board messages

modest ermine
#

I'll catch up later, just saying 'hi' and 'hey I'd love to do some door games over Mesh'

gentle kestrel
#

Sweet! a few single player with HS tables working well, few multiplayer ones in draft 🙂

modest ermine
#

something to be able to plumb into old school bbs door games would be nicer, just use the pki bits of the mesh as user auth and function as default store and forward nodes, is my preference

dusky abyss
#

trade wars would be rad

#

ansi dependent stuff could be tricky. unless you used the python api to make your own client or something

#

fork syncterm or netrunner with meshtastic proxy support 😛

gentle kestrel
#

You got dope wars and lemonade stand! 🍋💊

#

the catch is indeed the client and the text able to move across it

#

I dinked with Telnet as a interface to old games but - they all depend on the console having rows and columns and they all use a lot of text which isn’t good in meshtastic

#

Uno is likely a no go, having 12 cards for example is too damn much text

#

May dump it and focus on tic-tac-toe

modest ermine
#

looks like meshtastic --tunnel and an instance of MBSE could work

gentle kestrel
#

Fire sure can! - it’s performance isn’t top notch, also requires the users to be using the CLI to make it happen

modest ermine
#

might not be long-fast friendly though

gentle kestrel
#

It works but .. the client needs to be a terminal user is the bummer

modest ermine
#

true, but doing a touch interface for a old school bbs just sending the commands and reparsing should be easy

gentle kestrel
#

Yea for sure - there is a commercial fork with chess and checkers

#

I’m not personally interested in maintains a Apple app, so haven’t delved there myself

modest ermine
#

also it could solve a lot of the persistency of messaging issues

gentle kestrel
lunar glen
#

Maybe stupid question, but how do you end command? 🫣

#

Or is by design that last command is active untill new one?

gentle kestrel
#

And in development of bbslink, all other commands are just returning data not is captive and it’s over just like a command shell would be

#

Games are restricted to direct, DM by default to keep from making a mess in a mesh

#

Oh .. I forgot about the ping iteration!!

#

You can ping stop

lunar glen
#

Thanks!

gentle kestrel
#

Put a fix in for anyone sending “testing 123” which would have made 50 Test pings return

gray igloo
#

Haha

median fractal
#

Morning guy's been a while, how is it going with the project ?

gentle kestrel
jade briar
#

Hi
I've noticed the auto responder stops working after a couple of goes
Says it initiating but nothing after that
Need to restart the app
Running Ubuntu server in vm on nas connected to heltec v3 via wifi
I tend to do big ping 50s to test overall mesh coverage

#

And I see a note in the jokes module about emoj in jokes
I delete them from the table, not a fan, hard to decipher on small screen

gentle kestrel
#

Roger on the emoji yea it’s hit and miss might be worth pulling

jade briar
gentle kestrel
#

You do need good WiFi for the little esp - they are not amazing devices

#

As for the ping 50 .. it’s subjective to network success of packet delivery etc .. I didn’t understand the issue but did some testing and couldn’t figure out the bug?

#

Things look ok on WiFi and such tested with api2.5.4 firmware2.5.10 hv3

gentle kestrel
#

If WiFi loss happens with multi ping .. is power to the node and pi supply ample?

jade briar
gentle kestrel
#

Put an AP near the node? @jade briar

lunar glen
#

Why is mesh_bot parsing whole message for key/command worda?

#

For example, you cant ask askai question that contains word “history” 😂

gentle kestrel
lunar glen
#

I was asking a question that had history word near end of sentence, and I started message with askai, and it returned me a commands history

gentle kestrel
#

I will look into it!

lunar glen
#

Ok, I’m wrong

#

Didn’t start with askai…

#

Just in conversation with askai, I sent message but I forgot to prefix with askai…

gentle kestrel
#

Ahh ok yes, it’s also problematic or obvious issue in DM, since you may be chatting directly you don’t need Askai there

#

The foundation of the bot is not in the LLM, if it was I would call tools but for right now it’s how it is

lunar glen
#

Maybe have option that first (and only first) word must be a command word or if not recognized to either ignore message or reply with just list of commands?

#

But othervise bot works great! 👍👍

gentle kestrel
#

Thanks!

Yes it’s there for normal commands but for LLM module it’s tricky as LLM can be used via DM without a prompt at all; programmatically I can’t tell if your dialog is intended for the LLM or a bot command since it’s trapping on words as a core logic

To achieve the next level I would need to switch all trap logic to a LLM with PythonTool calls

The disadvantage is you now depend on ollama for the bot to work.

(If any ideas how to get around this limit but I don’t have a conceptual idea of how it would work as-is)

lunar glen
#

Well, can’t you just take first word, do a case switch, and if none matches give whole message to LLM, or ignore it. But if it matches, just give rest of message (without first word) to command/function

#

That way even is you are using askai command, LLM won’t get askai word…

gentle kestrel
#

First word case match comes before the LLM pass off is the problem

#

So by the time the Logic for LLM is invoked it’s already processed all of the original bot logic

#

I will see what I can do to improve this user experience @lunar glen

stone lance
#

I was pretty sure the LLM invocation came very early in the decision tree

#

But I guess once you're in flow, it's not obvious if it's still in LLM mode

#

I haven't looked at the code lately, but does it have an LLM mode?

gentle kestrel
#

My initial thought was to ignore any commands after index.zed

#

Just haven’t hit commit yet pondering ideas which might be better

#

Likely also pulling uno 😦 it’s just not awesome in text only

#

Missing a part of a hand .. ooof

gentle kestrel
jade briar
gentle kestrel
#

NOAA tides is either preventing scraping from the web or is having some delay issues // the parsing of tide data is offline for me and likely needs a rework not using html table

if tide’s is or isn’t working for you?

jade briar
#

Outside the US so it has never worked for me

gentle kestrel
#

I “upgraded” using the proper API not web scraping seems they were on to it

#

Not sure why I didn’t use it before tbh

#

Cycled a release as there was a few fixes

jade briar
#

Ok I'll update and test

jade briar
#

I get
Error fetching data
Not surprised though being in nz
Also I dm and it now responds back on the long fast ch not the dm ch
Wasn't doing that before

gentle kestrel
#

What’s your long fast channel ID and do you have set in config.ini the proper public/LongFast?

#

A pile of bugs around default channel for MQTT use and such was resolved

#

for the error fetching data on tide @jade briar if there is no NOAA tide station within 150km there will be no data - is there a NZ tidal API? … (goes hunting for one)

#

The NZ government provides the tide data on a CSV .. interesting

jade briar
#

I have private ch0, RouterTelem ch1
And LongFast ch2
Config.ini
Yup got wrong ch for long fast. Damn

narrow stream
#

I was asking for making standards for the godot library/interface for meshtastic

gentle kestrel
#

They play by default at 1hop or less I think it is (I forget haha) you can set whatever

#

Direct message

#

The command “games” lists them as well

#

I’m pondering a multiplayer game still tbd

#

Got uno working mostly but in play testing it was gross when two people have a bad run of cards

narrow stream
#

yeah that can be a long game

digital tartan
#

though they did set the game to the highest score threshold lol, I've definitely had some long hands...playing over mesh would be nigh unbearable

gentle kestrel
#

Haha yea I was mostly testing multiplayer in group chat

narrow stream
#

its turn based so each player only needs the state of the game when it's their turn

#

also the builtin ack system can be more consistently implimented with regular message acks built into your protocol

#

like instead of relying on ack and requesting it which is slower, just have the other person send an ack message that comes with the next move appended onto it or a request to retransmit

#

these games have rules which can be defined way easier than text communication does and we can use that to our advantage

gentle kestrel
#

Im crossing my fingers we get more markup possibilities in the mobile clients which will make for a better user experience possibly

#

I have also goofed with battle ship, but just didn’t like its presentation in a chat window

narrow stream
#

That’s why I think a game engine implementation of some sort is needed

gentle kestrel
narrow stream
#

Well I’m about halfway done I think

#

With my binding

#

Not ready for making a game yet

gentle kestrel
#

Nice!

gentle kestrel
#

@sick nymph I was thinking of a enhancement where the bot would broadcast to mesh any changes to a file on disk and use its contents as a message to broadcast so any alerts (let’s say OTA EAS from rtl-dongle) would be sent out meshtastic

sick nymph
#

Ooo. And the EAS alerter parses the EAS messages really well

gentle kestrel
#

You can set a file to monitor (using alert.txt) in project path

#

If the file stamp changes it will broadcast the contents of the file to mesh

sick nymph
#

Oooo

#

I'll deffo take a look when I get home

gentle kestrel
#

Cool, it’s in the latest pull, I tested with a simple echo hello > alert.txt

median fractal
#

That is a very cool extra feature!

sick nymph
#

I got home later than expected last night so I didn't get to start playing around, but I'm gonna today after work (or maybe while working, we'll see how the day goes 😅).

My big project will be figuring out how to get either the message from the RGCV's alerter to the alert.txt file or just pull it directly from the SDR.

Code is deffo a weak area for me so might as well play around with it

gentle kestrel
#

Also The direwolf software TNC has the ability to receive EAS SAME

sick nymph
#

Oh nice that one even includes a sample eas audio file. I've been needing to get a dummy load anyway. 👀

gentle kestrel
#

Few software tools listed on that Wiki

sick nymph
#

Awesome!

gentle kestrel
sick nymph
#

I'm playing around with the first SAME message decoder and the sample alert. I can pipe it to multimon-ng via sox and get it to dump the SAME message into a txt. I can also get the dsame.py script to decode it to a readable message adn dump it into a txt. Now to just link the two lol

gentle kestrel
#

Awesome!

sick nymph
#

Hell, I can even get it to output text on screen but as soon as i > alert.txt it hangs... hmmm

#

also this is much more fun than work 😅

gentle kestrel
#

Haha if your learning it’s work related isn’t it

sick nymph
#

Right? Our code scanning team is short sooooo

#

(Disregard the 1500 or so control assessment procedure tests I need to validate)

#

It's amusing,
sox -t ogg WXR-RWT.ogg -esigned-integer -b16 -r 22050 -t raw - | multimon-ng -a EAS -v 1 -t raw - | python dsame.py --text
outputs the EAS alert text to the screen but as soon as i
sox -t ogg WXR-RWT.ogg -esigned-integer -b16 -r 22050 -t raw - | multimon-ng -a EAS -v 1 -t raw - | python dsame.py --text > alert.txt
nothing, just an empty text file... I'm obviously missing something dumb

gentle kestrel
#

Try breaking the command out see which one is getting stuck .. might need two commands vs a large pipe

sick nymph
#

It's happy all the way up until > alert.txt

#

if I do
sox -t ogg WXR-RWT.ogg -esigned-integer -b16 -r 22050 -t raw - | multimon-ng -a EAS -v 1 -t raw - > test.txt
cat test.txt | python dsame.py --text - > alert.txt
also happy

gentle kestrel
#

My first assumption is one of the outputs has non stdout data

#

Or Python just can’t handle whatever extra is passed

sick nymph
#

It would have to be the dsame.py's output I would think. If I don't > alert.txt it'll print it to the screen

gentle kestrel
#

Yea interesting, btw nice test method!

I’m not booted my self yet but will tinker with it a bit this afternoon pst

sick nymph
#

Oh wait, it does output as soon as i ctrl-c

gentle kestrel
#

Is it hanging on some input requirement?

sick nymph
#

hmmm, lemmie test something

#

I didn't even notice I was ctrl-c-ing the cat test.txt | python dsame.py --text - > alert.txt when i was trying that.

so when I run sox -t ogg WXR-RWT.ogg -esigned-integer -b16 -r 22050 -t raw - | multimon-ng -a EAS -v 1 -t raw - | python dsame.py --text
it prints the output to screen, but the script doesn't end, you gotta ctrl-c out

#

time to see if I'm missing something in the docs

gentle kestrel
#

I would assume (without looking at any code) it might be a loop to continually print to screen

sick nymph
#

I'm not a code guy, but yeah that tracks

gentle kestrel
#

Could be a option to process and not loop otherwise it would be a very simple patch, also not sure if #1255754522303922217 message will process better (it’s a different idea same output)

sick nymph
#

Yeah, might try that one. The first one seemed more lightweight

gentle kestrel
#

It will work as you want I’m quite sure lemme see if I can find a quick spot to stop the loop

digital tartan
#

what if you pipe to tee alert.txt instead?

#

then it should output to screen and fil

gentle kestrel
#

I do think you need to break up the pipe, and for other reasons - in production this will need to run all the time

#

You need the loop

#

By breaking it up, the processing of the alert data you want is output, if it ran all the time you would get a multiple line file you don’t want

#

So you could say “something’s missing”

#

Specifically a handler for consuming the EAS and giving it to the mesh-bot

#

I could likely add in the ability to diff check the alert.txt and output the diff into meshtastic but this adds file write as I would need a temp file for diff

If anything goes bad it could print a 2mb text file to mesh haha

#

I almost feel like it would be easier to just make a fork of dsame3 for meshing-around’s use case is the likely best plan here

gentle kestrel
#

If you use a analog scanner or radio eas2text seems best and for sdr dsame

But if eas2text works out of box and is cool you can rtl to mmon

sick nymph
#

yup, gonna play around with it

#

but yeah, definitely need it to be something that just runs continuously since like, who knows when an alert is gonna come through (except ~ 11am on weds lol)

gentle kestrel
#

Yea, the waiting game for that message is a killer - flip over to pocsag and use some nurse needed in room 103 messages for messages haha

sick nymph
#

I have an idea but it's definitely illegal so yeah not that one

sick nymph
#

Completely unrelated but I have a dummy load coming from amazon later today

gentle kestrel
#

No one gonna hear a half a watt but you

sick nymph
#

🤫

digital tartan
#

not like the FCC really cares as long as you stay in-band

gentle kestrel
#

That’s a good point roll the vfo up to 222.100

#

Who would ever use that

#

Could tx at 50w and I bet your the only one still hihi

sick nymph
sick nymph
#

okay I have the dirtiest ever jank to get the EAS2Text to output based on the test audio file via sox

#

sox -t ogg ~/WXR-RWT.ogg -esigned-integer -b16 -r 22050 -t raw - | multimon-ng -a EAS -v 1 -t raw - > raw.txt | python lol.py > clean.txt | python lmao.py > alert.txt

it works, I need to consolidate the two python scripts into one. i used chatgpt to help write a script to clean the multimon-ng output into something EAS2Text can read and I feel really gross about that but so it goes

digital tartan
#

python lol.py > clean.txt | python lmao.py > alert.txt
I'm surprised this works, since the > should be capturing the output and not sending it to the pipe...

sick nymph
#

I'm not a code guy so I'm just throwing stuff at the wall, it is amusing though

#

it's now consolidated into one, lol

#

it's so janky

rose silo
#

hey fellows, i'm working on getting a similar thing going in Node. Have you had any problem with the serial connection going dark after a while? It doesn't close but i stop getting messages from the radio.

sick nymph
#

The other BBS i've been playing with (TC2BBS) hasn't gone dark on me, at least, not yet

gray igloo
#

for me it did but might have been undervoltage lol

#

haven't tried to figure it out lol

gentle kestrel
#

I have never had a serial connection loss what hardware? @rose silo

rose silo
#

heltec v3

gentle kestrel
#

Make sure you have a good USB cable

rose silo
#

yeah for sure good call

#

it works fine for a time,

gentle kestrel
#

And the power can supply the node and the new device

rose silo
#

thanks yeah thanks

#

Good to know there isn't some sort of ping or something i need to do

gentle kestrel
#

I have a hv3 it’s been online for a year easy and one on WiFi it’s 95% stable ble on a rak about the same

#

What’s the system with the serial loss a pi or something else? @rose silo

gentle kestrel
sick nymph
#

Truth, I'll do round 2 of testing later tonight after amazon comes by

#

then, once that works, get it integrated with your bbs lol

rose silo
#

the screen on the radio turned off and that seems to corelate to the drop. maybe power

gentle kestrel
#

Interesting, I wonder if it’s a power saving feature in some kernels

#

@gray igloo what platform did you experience this with?

gray igloo
#

pi zero w

gentle kestrel
#

I got one of them I will try and replicate

gray igloo
#

it could just be power issue 😅

#

its running on 1A 12V and stepped down soooo.....

gentle kestrel
#

My first and primary dev hardware was and is the hv3 it’s been flawless for me on pi 3,4,5 with a official pi5 power wart

gray igloo
#

i do have a bigger psu coming in the mail

gentle kestrel
#

I even had no antenna for a week haha

rose silo
#

I'm trying a different radio and cable we'll see 🙂

green glade
# gray igloo pi zero w

Do you experience the hang without any app connected? There is a bug /issue that is being talked about on #rp2040-rp2350 where nodedb writes corrupt the node and it hangs. A factory reset and re-flash is the recommended fix. I have applied the `fix' on my pico-w/waveshare node and its now been solid for 2 days.

gray igloo
#

The node itself is t3s3 but i got zero w running linux and bbs well i dkd

gentle kestrel
#

I did add some documentation to the readme for the popular EAS projects in Python

#

Nothing that isn’t here already

green glade
#

my meshing node is mqtt connected. anyone coming in over mqtt is seeing duplicate replies to the DMs. Is there a config step I might be missing?

gentle kestrel
#

What firmware

#

Do you see 2x traffic in logs? Shows phantom messages?

sick nymph
#

dummy load finally came in. it has a UHF connector so I needed three adapters to connect to a baofeng (because all my adapters are in use). however, this is the like ONE time I reeeeeally want that signal loss 😅

gentle kestrel
#

Yea, roll the dial to ham bands so it’s much less likely anyone will care

#

Test there and when done set the rtl back to 160 or whatever it uses

sick nymph
#

oh for sure, gonna hang out at the very top of 70cm since noone uses it here

gentle kestrel
#

Should be fine double so on a dummy load

sick nymph
#

exactly, just want to ensure all my bases are covered

#

hrm, weird, neither dsame no EAS2Text want to grab the tones. RCGV's alerter grabs them just fine though

#

well, really it's multimon-ng that isn't outputting the data

gentle kestrel
#

Like AX25, pocsag all the rest volume levels/gain may need adjusting

#

I don’t know RCGV project detailed but I assume it’s the rust EAS code glued to meshtastic

sick nymph
#

That's what it looked like

#

I have a very rudimentary knowlege of python, but none at all with rust tho

gentle kestrel
#

start by decoding aprs to get the radio working - multi mon is the real dependency

#

Go try and grab aprs or pocsag

sick nymph
#

Yeah, gonna move backwards and then try from there

#

aprs is easy since I can generate it myself if I need to (but it's decently active around me)

#

(am ham, am licensed to do aprs etc etc)

gentle kestrel
#

Nice Yea ideally get it elsewhere if you can I would suspect the biggest hurdle is getting the gain setting and such

#

Having it local it will be loud

sick nymph
#

very true

#

But yeah, as for gain, I tried using RGCV's recomended RTL-SDR args just to see and yeah, no dice

#

gonna go off and play with APRS, that's what got me into this whole mess anyway 😅

gentle kestrel
sick nymph
#

This is actually where I got the initial multimon args from lol

gentle kestrel
#

Could also try direwolf, but I would expect mmon to work, I dug out a dongle today need to rig up a test transmitter as well

sick nymph
#

Yeah, mmon was fine with the audio piped in from file, so I know it should work

#

now is just figuring out exactly what it wants from the sdr

gentle kestrel
sick nymph
#

I'll dig through

#

also, just listening to the aprs channel from another radio in my basement, there's someone REAL close by on APRS lol

gentle kestrel
#

Decode and find out who!

sick nymph
#

working on it!

#

hrmmmm, still not getting anything. switching antennas

#

swapped the sdr over to my windows machine just to make sure I'm not crazy, can get the packets through audibly just fine

#

I'm clearly doing something wrong here

gentle kestrel
#

Is the SDR working in GQRX

sick nymph
#

I was using SDRpp

#

but yeah

#

like, am i insane, this all looks right, right?

#

I haven't tried the SDR on my pi outside of RCGV's alerter, but it did work there

sick nymph
#

I am getting packets when I put the sdr back on windows, so there is that

#

I think this is gonna be a "sleep on it" problem and reattack tomorrow

gentle kestrel
#

Off hand.. Watching for sdtin? Fix the end of mmon to raw /dev/stdin

gentle kestrel
sick nymph
#

I did try both - and /dev/stdin, but the offset might be the issue. I'll try that tomorrow

gentle kestrel
#

I compiled a copy of multimon .. been a while and got my dongle booted I loaded GQRX checked my frequency offset like -0.8 or so validated I could see signal

But it’s cold and dark I got no gps lock on my aprs HT and so I will also try more tomorrow

#

I can’t hear any aprs inside with the rtl dongle .. but I can on the ht

#

hihi

green glade
# gentle kestrel Haven’t heard that one before, is serial echo also on?

Node: ORLY
myNodeNum: 2475587636
firmware: 2.5.11.8e2a3e5
serial": {
"enabled": false,
"echo": false,

2024-11-21 10:48:24,369 | INFO | Device:1 Channel: 0 Received DM: Cmd From: VK2FRT
2024-11-21 10:48:24,369 | DEBUG | System: Bot detected Commands:[{'cmd': 'cmd', 'index': 0}] From: VK2FRT
2024-11-21 10:48:25,069 | INFO | Device:1 Sending DM: Bot CMD?: ping, sitrep, motd, whoami, sun, hfcond, solar, moon, whereami, wx, wxc, rlist, bbslist, bbshelp, joke, wiki:, g
ames, messages To: VK2FRT
2024-11-21 10:48:25,170 | INFO | Device:1 Channel: 0 Received DM: Cmd From: VK2FRT
2024-11-21 10:48:25,171 | DEBUG | System: Bot detected Commands:[{'cmd': 'cmd', 'index': 0}] From: VK2FRT
2024-11-21 10:48:25,871 | INFO | Device:1 Sending DM: Bot CMD?: ping, sitrep, motd, whoami, sun, hfcond, solar, moon, whereami, wx, wxc, rlist, bbslist, bbshelp, joke, wiki:, g
ames, messages To: VK2FRT

#

Locally, I have 2 non-mqtt nodes that work quite happily with the BBS

#

Node VK2FT is mqtt connected

gentle kestrel
#

The delay was about a second

#

Not instant; suggesting it routed around as well

#

Is ORLY also MqTT linked?

green glade
# gentle kestrel So it’s likely the multi path pair

Yes. Topology is:

VK2FRT - Heltec v3, Client mode, 30 KMs away, MQTT enabled, OK to MQTT set, no Lora connectivity either direct or via intermediary nodes
ORLY - RPI_PICO, Client mode, Local, MQTT enabled, OK to MQTT set, wifi enabled
OBKV - RAK4631, Client mode (but have tried as Client Mute and with Lora Transmit turned off), local, no MQTT, OK to MQTT set, Lora connectivity (when enabled) to ORLY and...
OPS1 - Heltec v3, Client Mute, local, no MQTT, OK to MQTT set, Lora connectivity to ORLY and OBKV.

As part of troubleshooting, I powered down OBKV as I thought ORLY may have been LoRa re-broadcasting the MQTT received DM and OBKV was rebroadcasting. Still getting duplicates.

gentle kestrel
#

Might be worth removing the bot/ORLY MQTT first see how it fairs

#

Grab some debug logs off a node be curious to see packet dumps, there is a debug in the mesh-bot.py you can enable (it’s verbose) but will print all packet details

#

Like .. is it the same packet ID?

sick nymph
#

wiped my pi and reinstalled everything maybe thatll help lol

gentle kestrel
#

This is as far as I can travel for now, the primary EAS coverage is reportedly “Offline” so I have nothing to actually use this for

#

There is a station on the Canadian border ha which says online and I might hear it

#

But till Wednesday, I’m not sure if I have a signal to decode

#

Same EAS was never a big deal in the Seattle area I feel 🤷‍♂️

sick nymph
#

I'm playing with dsame again, idk why but it's acting differently this time

gentle kestrel
#

If you get it working it’s a prime candidate for a fork to modify, and produce the exact alert.txt as needed; without real world testing data I’m kinda bummed .. I asked around locally to see what’s up with NOAA and how long the outage is

sick nymph
#

for sure, it looks like it'll work much better than EAS2Text, I'll keep you posted on it

#

if it was about six months from now I'd get plenty of testing opportunities (yay missouri)😅

gentle kestrel
#

It’s the time of year for us, my EAS system is for sure in a reported offline status wahhh

#

It went down yesterday due to a storm hihi

sick nymph
#

oooooooof

#

I know by me, in addition to the NWS station, KMOX near me (1120am, so not useful with a RTL) is a PEP station for EAS alerts, it'd be interesting to try monitoring broadcast stations for EAS messages since they're supposed to relay them automatically

#

(which is also why the FCC will fine broadcast stations hard af if they misuse the tones lol)

gentle kestrel
#

direwolf could pull a signal from AM radio

sick nymph
#

oh shit, I didn't realize the RTL went all the way down to ~500 hz

gentle kestrel
#

dc to like 2g?

#

My local EAS is actively being repaired so I should hear a test tone before Wednesday I hope my antenna /sdr setup is kinda jank so let’s see

sick nymph
#

mine's pretty janky but does pick up from the NWS station here

#

The wire sticking off to the side is a tiger tail. When I was initially setting things up my reception was crap until I touched the connector and was like "oh right" lol

#

(when I was doing my aprs testing last night I shifted it to my outside antenna, which is much less jank lol)

sick nymph
#

So doing some testing (got interrupted because it's volleyball night) there is a SIGNIFICANT difference between dsame and dsame3. Dsame3 took around an hour to fully install on a Pi3B on wifi. It includes a ton of AI packages for transcription that I'm pretty sure won't even run on a Pi without an eGPU 😮‍💨

gentle kestrel
#

Yea I haven’t looked at the code yet but it pulls like 2gb of models

#

Dsame is py2

sick nymph
#

Even just trying to pass an encoded string through it takes like 2 minutes just for the dependency checks

gentle kestrel
#

Multimon to text file with a parser to clean up the output is likely all you need

sick nymph
#

I'm trying to figure out wtf I was using yesterday

sick nymph
gentle kestrel
sick nymph
#

It's probably sloppy because chatgpt, but I'll send it when I get back to my computer

gentle kestrel
#

I’m patiently waiting for any signal on my local EAS

sick nymph
#

Lemmie just set up a huge yagi and tx the test audio file halfway across the country 😂

#

(dear FCC this is a joke I am not going to do this)

sick nymph
#

here's the script, like I said it's messy and hacked together. it'll take the raw output from multimon-ng and remove duplicate lines, clear out anything that isn't the actual SAME string because EAS2Text gets mad if there is anything other than JUST THAT STRING, at least in my testing

#

[audio source] | multimon-ng -a EAS -v 1 -t raw - > raw.txt | python wtf.py > alert.txt

gentle kestrel
#

Sweet, I will test it out soon as I can get a decode or .. cheat and make some happen

#

I have been playing with the new tulu3 4b model might become the new default for the bot - 4GB and it’s able to count strawberry’s

sick nymph
#

Oh nice!

#

But yeah, having a real world OTA test will be good, especially if the signal is weaker. I wanna see how multimon-ng handles a weaker signal and what its output looks like

#

I need to talk to my buddy at KMOX and get when they do their RWT so I can try to see if a sdr+multimon-ng is smart enough to monitor a commercial station for EAS messages too, especially since KMOX is a PEP station

sick nymph
#

If that script works out I'm gonna have to finally make a github account aren't I? 😅

gentle kestrel
sick nymph
#

Pulling weather and traffic maps would just be fun. But yeah, check the PEP station list and see if there is one you can RX. They're all high power AM clear channel (not clearchannel the company) stations so there should be one you can RX regardless of where you are

#

(on clear winter nights I could listen to KMOX in upstate NY lol)

gentle kestrel
#

Nearest is Idaho, these sites broadcast the same EAS tones?

#

Been a bit since I was on low bands but Idaho is rare to hear on HF for me

sick nymph
#

They all have to do the weekly and monthly tests. They aren't on a set schedule like NOAA radio, though.

But there's a good chance you can RX at least one of them. PEP stations are usually blasting out like 50kw on MW AM

#

I can't promise the other programming is gonna be good, might be a news station, a politics station, sports station or whatever lol

#

But yeah then other stations usually have a EAS system that listens to the PEP stations to relay EAS messages so even your local FM stations may broadcast the tests too. The EAS system is really neat

#

https://youtu.be/Rsp_N83_AzE is a really neat look at some of how it all happens

DON'T PANIC! On October 4th, everyone in the US will get an alert.

Why? And how is it delivered?

We'll talk about the EAS (Emergency Alert System) for broadcast television and radio, and WEA (Wireless Emergency Alerts) for mobile devices. How they are propogated, and how and why the nationwide system is tested.

Read more about the alert here:...

▶ Play video
sick nymph
#

(I think the EAS system is really interesting and neat if you can't tell 😅)

gentle kestrel
#

I hope to see a successful decode from you soon!

sick nymph
#

That's the plan!

#

Moving my setup back to multimon-ng/EAS2Text tomorrow and doing more testing

gentle kestrel
#

I was just thinking YouTube has a video or two of hours of EAS alerts

#

YouTube to mp3 and boop lots of test

#

Two hours of audio, perfect should be handy

sick nymph
#

unrelated but it seems that this dummy load works well 👀

sick nymph
#

okay, wiped the pi again to reset it back to defaults and installed multimon-ng, rtl-sdr, sox, and EAS2Text (EAS2Text via pip)
ran the test file through sox into multimon and then through my script
output:

#

(I'm sure theres a way to have that script read stdin but I have like 3 braincells left)

#

later I'll test via rtl-sdr

#

but yeah, as you can see the raw output has a lot of duplicates and EAS2Text doesn't like anything other than "ZCZC" through "NWS-" so my script cleans it up, then runs it through EAS2Text and outputs the alert.txt

I need to pull the SAME data from a commercial station's EAS alert because I think it'll end differently, which would break this script so as of now, it's only useful pulling from NOAA weather radio (assuming it works with OTA stuff)

gentle kestrel
#

Looking good!

#

Some tips for improving meshtastic delivery, replace any words you can to shorten the over all alert

#

So in wtf.py before writing out the alert .replace strings like “The National Weather Service has” to NWS for example

sick nymph
#

yeah I was thinking that one for sure, the other stuff, like the alert type, I'd be wary of replacing just for clarity

gentle kestrel
#

Longer messages always stink condense what makes sense for your area

sick nymph
#

Yeah, true. At least here, the NWS alerts don't have as many counties as in the example, so that shortens it natively but I do want to try to make this as universal as possible

gentle kestrel
#

bunch of stuff I use to chip the API data for Wx and wax in location.py def abbreviate_weather

sick nymph
#

I'll take a peek at how you did it

gentle kestrel
#

All of this EAS stuff, I was pondering adding some logic to enable broadcasting the NWS API for EAS over a mesh channel (make it a config.ini)

#

Requieres internet but, would still be handy 90% of the time

#

Look at me .. I only have API and my OTA EAS has no power !!!

#

Hihi

sick nymph
#

hahaha

#

I like the idea of having both, like API data first, but if it can't connect, failover to OTA

digital tartan
sick nymph
#

there's a reason it's called wtf.py lol

#

I'm updating it to shorten some works for efficiency on the mesh

#

I stole @gentle kestrel's abbreviation function but it's being a butt right now

gentle kestrel
#

Overall, I prefer pythons internal methods of string manipulation versus regex / if suck in regex

sick nymph
#

It's only abbreviating one thing, I'm sure I'm missing something because I am flying blind on coding knowledge

gentle kestrel
#

You got an error?

sick nymph
#

No error, just ignores the abbreviations I've added

#

I've added in ones for National Weather Service -> NWS and "Message from" to "msg frm:" and it only replaced the NWS

digital tartan
# sick nymph I'm updating it to shorten some works for efficiency on the mesh

you should use re.compile on line 22 since you're reusing the same pattern.

    pattern = re.compile(r'(ZCZC.*?NWS-)')
    
    for line in lines:
        # Skip lines that don't start with "EAS:" or "EAS (part):"
        if line.startswith("EAS:") or line.startswith("EAS (part):"):
            # Remove the "EAS:" or "EAS (part):" prefix
            clean_line = line.split(":", 1)[-1].strip()
            
            # Apply regex to extract content including ZCZC and NWS-
            match = pattern.search(clean_line)```
sick nymph
#

I wonder if it would be simpler to just modify EAS2Text itself to just output shortened stuff....

digital tartan
#

yeah gpt will get you (often) functional code. will it be the most efficient? usually not. will it necessarily catch every case? also probably not. but it is pretty good at bodging and making a starting point

sick nymph
#

I am usually reluctant to use any generative ai stuff but figured i'd give it a shot

gentle kestrel
#

Looks like you’re moving along! 💪

sick nymph
#

GOT IT

#

now to put them back together lol

sick nymph
#

Was banging my head becuase it just wouldn't work but then I did something and I don't remember what I did and now alert.txt is output straight up with the abbreviations

#

Now to go grab food and beer and then I'll test OTA stuff on... wednesday.... yeah

#

sox -t ogg WXR-RWT.ogg -esigned-integer -b16 -r 22050 -t raw - | multimon-ng -a EAS -v 1 -t raw - > raw.txt | python wtf2.py > alert.txt

gentle kestrel
#

Nice dude!!

sick nymph
#

Me for the last 36 years: I really need to sit down and learn code
Me for the last few days: yolo lets just see if this thing works lmao

gentle kestrel
#

Eh with the advent of the AI coder engine it’s a new era - you just wrote/directed a program to do a task and it works.. so either way it’s a skill to operate AI efficiently as much as it’s a skill to manipulate code into working

#

I would say you learned to code 🙂

sick nymph
#

I mean, only the cleaner part was AI, the rest was smashing other bits of code together until they worked lol

#

now just to figure out why I can't get any signals on my SDR

#

I'm back to testing that part with APRS

gentle kestrel
#

You had a v4 rtl and it’s been a second but make sure all your code is v4 aware

#

I noticed like Multimon must be a repo it’s older code

#

This isn’t going to be a solution to everything but I still maintain it working for pi and mintOS

#

If makefikes be confusing it might be handy // it will ‘bootstrap’ a lot of dev tools into your Os

sick nymph
#

jfc i just reinstalled multimon and rtl_sdr from their githubs and now it works perfectly

#

thank you for that pointer, the apt repo for the Pi is clearly outdated

#

next issue is that my script doesn't wait for input, it just runs straight away and, obviously, errors out

digital tartan
#

can you upload the raw.txt?

sick nymph
#

Sure give me one sec

#

I moved to my recliner and my cat has already settled in 😅

digital tartan
#

priorities 💯

sick nymph
#

realized that this is the year of our lord two thousand twenty-four and I can just put a scp client on my phone lmao

digital tartan
#

so under normal circumstances, multimon would be continuously running, and you want it piping its data live into your python script, correct?

sick nymph
#

Correct

#

The idea is that multimon is like OH HEY HERES A SAME CODE and the script then cleans and decodes it and outputs it to alert.txt for the bot

gentle kestrel
#

Add in a file change monitor for raw.txt and any changes scoop up process and alert.txt, might also be good to purge the contents of raw.txt for easy housekeeping

sick nymph
#

Definitely gonna try that next up. The nice thing about alert.txt is that the script just overwrites it so the bot only gets the latest one

#

But yeah, file change monitor so it'll wait until it gets new input

#

python-watchdog looks like it may be useful. I'm currently trapped but I'll poke around with it later

#

she says "no computer"

digital tartan
sick nymph
#

Ooo

#

Yeah deffo gonna plug that in later, thanks!

digital tartan
#

sox -t ogg WXR-RWT.ogg -esigned-integer -b16 -r 22050 -t raw - | multimon-ng -a EAS -v 1 -t raw - | python ftw.py

#

will scan for only EAS type weatr messages like you had filtered for, but saves in a buffer till it reaches NNNN which is EOM indicator, then writes to alert.txt

sick nymph
#

sidenote: I always put off learning to code because learning from a book isn't fun, the code doesn't do anything. Just saying "f it I'm gonna try something" has been so much better just over a few days

digital tartan
#

100% that's how I learned. not "how to program python" but "I want to do X, how can I do that with python?" for everything

#

even if it was way less efficient

sick nymph
#

That's how I was with 3D printers, I thought they were neat but I didn't have a use case. Once I mental-gymnastics'd myself into finding a use case... welp, I use it all the time now lol

#

I just need that gateway 😂

digital tartan
#

definitely ended up on the wrong side of this chart many times, simply because it was interesting.

sick nymph
#

I've had so many false starts with python especially but it's always been book-based. This time it's "I want to solve a super niche problem" lol

#

I will fully admit that I will do the more complicated thing because sometimes that's just more fun

#

Home network: I could just have the ISP gateway that Just Works... ooooor I could run my own router, have multiple waps, push ethernet over coax to my garage, etc

digital tartan
#

what I always suggest is have a python terminal open all the time and get in the habit of using it for anything you can. need to download multiple links? click them one by one? no just use python. some basic (or not-so-basic) math? open calc? nahhh just use python. want do download different coloured frames of multiple designs to make Dungeons&Dragons tokens? Do it by hand? No way! Python (and selenium).

sick nymph
#

Deffo gonna do that

#

Just can't with work stuff because I'm pretty sure if I even mentioned installing python on my work machine, I'd get drone strike'd

sick nymph
#

@digital tartan haven't got to play with your improved script yet, this is a jam packed weekend lol, maybe Sunday evening

digital tartan
#

np

gentle kestrel
#

I did put it in the project etc/ folder

gentle kestrel
#

I also just put a lab branch in with the NOAA EAS API alerts to channel (broadcast ) haven’t actually tested (or better seen) any alerts; any testing confirmations welcome

narrow stream
#

extension I mean

#

so if u ever wanna make a client for a game u can

gentle kestrel
#

(Saw you post in game dev as well but had the same Q of the where to go)

narrow stream
#

I'll make it public but it has no readme rn so u need a bit of godot experience(and the ability to install rust and type cargo build

narrow stream
#

here is the code

#

just put it in a path labeled "addons" in the project file tree in godot and it should 'just work'

#

needs docs and an example project written for it

#

to show off features

#

u need to build the repo and change the path names in the .gdextension file if u arent on mac

#

again, its very rough

#

I'll work on the example project first, then do docs

gentle kestrel
#

That would be cool; I dont know rust and would be dependent on a full IDE for help. A demo game as simple as tic tac mesh would be cool to jump in

#

Post the deets over in #1203830272261496913 as well so anyone who watches it has the code

narrow stream
#

Im currently trying to remove dependency errors

#

I accidently removed too many dependencies without realizing

#

having to get them back

gentle kestrel
#

I pulled langchain out of requirements for the bot and hope I don’t need to go back

narrow stream
gentle kestrel
#

Yea I have used rust - just never written it

narrow stream
#

have u used gdscript/godot before?

gentle kestrel
#

Negative, programming is just hobby for me I started on qbasic and Visual Basic .. hence the comfortability with Python

narrow stream
narrow stream
#

very small download

#

i'll prob make a basic chat client along with a basic board game as you suggested

#

My goal was to make the interface very similar in feel and code pattern to existing stream tcp interfaces in stock godot

#

Still needs some helper functions maybe but it’s largely done

gentle kestrel
#

@stone lance I enjoy your changes to ack/testing

There was just a bunch of silly acks locally and the bot perfectly responded “ACK to you! “ it was funny 😜

gentle kestrel
#

If you enjoy the latest, along with EAS

// which I’m waiting for an alert I could change my gps to an area with alerts but I’m lazy we should get a wind or flood warning sometime which will be a surprise I hope it works and not surprise! exception! because I didn’t test more

There is a fix/enhancement to the logs. log rotation for daily logs, and by default it will only keep 32 days to keep those in check

All on lab branch till it seems like they work for real

stone lance
#

It's probably the most used function in the bot, tho.

gentle kestrel
#

Haha yea for sure!

gentle kestrel
abstract copper
#

(you can pull the user's public key, but it'd be interesting to see how you can restrict perms to authenticated messages)

sick nymph
#

Weekend busy flowed right into week busy, working in cyber is so fun sometimes 🫠

Gonna be running the new script during the test tomorrow though

gentle kestrel
#

Nice! Excited to hear I was about to flip my EAS region to a larger swath to catch something on API, i’m curious if system wide test are run (including on API) never investigated. so I’m also eagerly waiting hehe

#

Yea understand the cyber fun

sick nymph
#

Hrm, no luck with the updated OTA script, gonna test further

#

not sure if I just didn't RX though

gentle kestrel
#

Yea that’s the crux of the over the air EAS signals is chasing them down like that

#

Like a satellite pass but less frequency

sick nymph
#

gonna tweet or skeet or whatever at noaa "hey just do the test every day pls kthx"

sick nymph
#

Figured out why I probably didn't rx the test:

#

Antenna took a dive 😮‍💨

gentle kestrel
#

Oh no! You only have 6.5 days till the next test..

sick nymph
#

lol yuppp

#

command strip failed me

gentle kestrel
#

I got no decode from my workbench but did hear the tone on a HT it was horrible quality so I assume if I worked on it things are ok

#

I will test the API alerter likely this afternoon and press to a new release

#

I did get a EAS NNNN on the RTL

#

I didn’t include the -v1 after EAS on the decoder CLI

#

Was going for kiss

digital tartan
sick nymph
#

In this case, nothing was gonna get received anyway 😅

digital tartan
#

for next time, at least until you're sure it's all working as expected

gentle kestrel
#

Testing this is hard, might be good to test with aprs or pocsag to get gain and such perfect

sick nymph
#

yeah, was planning on APRS for repositioning antenna too lol

jade briar
#

here are a couple of crash reports

#

Seems to be after multiping and also had it happen on sentry activation as well

#

oops here are the screen shots

gentle kestrel
#

embarresed they sliped thru this long!

gentle kestrel
#

Published a release

#

FileMonitor, EAS-API and the prior bugs fixed are changes

jade briar
#

thanks

#

Ill give it a go

#

didnt start

gentle kestrel
#

Pushed a hotfix, to fix that missing config.ini

jade briar
#

Thst was quick
It must be late where you are?
I'll give it a whirl my morning.
P.s. that eas stuff sounds interesting.

gentle kestrel
#

Yea 0:15 Thursday, I keep odd hours haha

#

Glad the EAS stuff is handy!

fallow crystal
gray igloo
#

Dang

sick nymph
fallow crystal
#

No prob!
Just feel free to ping me or DM me if you need anything.

This new update has been something I have been thinking about doing for awhile, and it should split the data down to more processable info blocks, so instead of just having a massive class to decode an input, you can pipe in an input from anything and then it'll break down everything to be processed in smaller code chunks.

Also might actually take the EAS code database outta the file, that may make the library load faster XD

Makes everything cleaner, faster, and will also update docs so it'll make more sense.

sick nymph
#

Awesome! I'll definitely play around with the update! It'll probably be after the holiday, though 😅

#

Or, actually, once you put it up. My brain isn't fully on yet lmao

fallow crystal
#

Gotta update this mess first, whyyy did I do it this wayyyy

sick nymph
#

Because "f it it works" I guess 😂

broken sorrel
#

@gentle kestrel what port is the web interface on?

gentle kestrel
#

No web interface directly in the bot just the reporting tool @broken sorrel