#meshing-around BBS/utility BOT
1 messages · Page 4 of 1
oh, I did think of one question. currently the library gets mad if the input isn't exactly the SAME string. multimon output usually starts with the encoder and the line(s) of SAME messages start with EAS. This currently seems to make the library mad so we hacked together a script to clean up the data before feeding it through EAS2AText. Do you have any plans to do data cleanup organically? (If not it's cool! I think we have a working solution, we just haven't got to test it on an actual real OTA alert)
The real OTA data is what I’m finding as the challenging part of this as well, any tips for testing code aside from once a week at noon hehe
the only other solutions we've come up with are via an audio file and a legally dubious method that can't simulate a distant station anyway 😅
I did it this way due to pre-filtering being generally the idea on inputs, (E.G. we only expect a SAME string, so why accept anything that isn't a valid SAME string?)
And mainly because at that time I wasn't sure how to regex super well!
I plan on making the new interface waaaaay better, and having an input to accept "EAS from raw string input" mode
Totally makes sense! Regex is a magical mystery to me still so I got lucky on my cleanup script lol
https://regex101.com cannot emphasize enough how useful that site is
That yes!
I always use it for development on regex, the debug is so useful for figuring out the actual steps used (and needed) in the code.
Been testing auto ping updates. Working well. 50 autoping from 3 devices at same time no problem now.
Re the jokes module, were you going to pull the emojis?
Yup, ✅
Do a pull 🙂
Can I make a request?
Some kind of length checking cmd?
For testing good Vs bad radios
Longack or something
And maybe the other way around, an autoping, but for really long messages
I have about 15 radios I need to test, and it's getting tedious.
A proper require ack over the air?
one issue I find is the longer or larger messages don’t have airtime to get the ack out, I will test a few ideas see if it hangs up too bad
Best case yea should be able quickly add that, worst case might need sent off threaded
Would this work
It fragments into 3 chunks
Ping 50 #coverage test dufhfjfjfififufififjrirufjfjfkgckgjcjgkfjdsusysysaqrtiopokkjgdazzbcngmlhofkgigifigiggigigoggifififififififigkmccjcjgjgkfifififfifududshjklllgkgkgkfjfjfjfjfjfififififkfkfkfkfkfif
I broke it again
I think this is because the heltec wifi connection is flakey at the best of times.
this was Ping 50 #coverage test dufhfjfjfififufififjrirufjfjfkgckgjcjgkfjdsusysysaqrtiopokkjgdazzbcngmlhofkgigifigiggigigoggifififififififigkmccjcjgjgkfifififfifududshjklllgkgkgkfjfjfjfjfjfififififkfkfkfkfkfif
This appears to be a loss of TCP
three nodes hitting poor meshbot at the same time (strees test)
Haha nice what’s the power to it
its plugged into a usb charging hub, 2 amps
That’s just at the limit of ok imo 3 if you can or a stiff 2.5
Double so if using a power chomping pi
Also if you’re using DNS (meshtastic.local) might be worth some seconds to drop to IP only no name
ok ill try again, ill plug it onto a portable power pack and see how that goes. oh its just the heltec v3. meshbot is run on synology nas vm runing debian server. conection is via wifi.
all static ips
Oh yea I remember the nas thing now. Can also try flipping the hv3 90 in phase to other stuff see if it helps, make sure the USB supply cable is nice
Rotate the device 90 degrees
All the competing RF just throwing noodles to try and get it stuck
I think the v3 ethernet was just overwhelmed with the shear volume of traffic. The issue is the code is still running but hung
and ill rotate 90 and try again
Yea it lost the pipe
I can’t do much
I can edit and dump it but if it’s gone
The meshtastic API will try to reconnect but this case it’s gone
Aka no route etc
ok I thought id let you know, was a bit of an extreme test. ill rotate 90 and thrash it again
Yea good test, in the case of wireless like this to an esp .. it’s difficult if meshtastic api can’t find the device I can’t either
I understand this yea working on it
Also just pushed a optional wantAck
3 autopings with long message 60-70% charged util. Giving it shit
Yeah, my roof node is definitely crap
and the pi doesn't want to stay on wifi for more than 48 hours...
grrrr
Git pull
To use the feature
Test 4
Takes the max buffer default 220 and divide by 4 sends 0101 junk incrementally
Let me know if that’s what you thinking
test 4 crashes
test4 imediate crash, I have games disabled if that makes any difference
require ack is on to
You pulled at an exact moment i knew it would happen
had sudden fear someone would pull in this window haha
Should be good now
No problem. We giving it a good thrash. Some good fixes coming through
Is scheduler functional?
And where do we add in code now?
Yes to the scheduler and, add in code? Didn’t understand
See mesh_bot.py around line 425 to edit the schedule. See schedule documentation for more.
I could be blind but didn't see anything
Leave that for now and I'll have another look at it
I might bang on bbs stuff next see what I can find
Ah that's what I was missing
Thanks
I have a few ideas for bbs but let me play first
Put some enhanced logic in for the new Buffer Test
The user experience is better overall
bbs stuff looking good so far, looks like you have already done what I was thinking so thats cool
Awesome, good to hear it’s working well!
I got this BufferTest dialed in a bit more it’s a handy idea @stone lance I’m likely going for a drive tomorrow and test this out a bit more
One thing this shows off quickly is the difference of medium fast and long fast on data delivery
If anyone has a more exciting idea for junk data vs 01010
It has you locked in a game possibly
test 4 causes this to crash. just done latest pull to
all games are disabled ?
Looking now, the other image looks like it failed?
first image hung, second crashed
Yup got em now; hopefully also fixed issues - thank you! @jade briar
hope you dont mind me being picky
No, it’s kinda fun of the project is meshing around with it
yes ive had fun meshing around to
im just playing with scheduler, how hard to make a scheduler file for all the stuff thats in mesh_bot?
Like a test routine of sorts? Or something functional otherwise
I have some janky test scrips I could cleanup
A config.ini for schedule
so i dont have to keep editing mesh_bot after a pull, keeps it all in one place so
yes
that be perfect, that was what I was getting to, haha
Oh right that is a problem..
I couldn’t think of a way to convert the complex logic of Python schedule into a useable .ini format
I will hunt around for ideas on how to clean this up
scheduler sending joke to ch every 2 minutes so thats looking good
and what is bbs link ?
Enables two bots (ideally direct heard) to share bulletin messages
So if you had a reason or a need to synchronize two bots
I haven’t done a lot of real world testing with that command yet
Gotta get a bot on solar
ok ill leave that for a while
You can run the command and get the idea of its use
It’s like Bbspost but automated
The BBS is really intended for a shared campsite or dropping bots on trailheads or off-road info cache
“The padlock combo is”
“How to use the bot”
“Directions to camp”
“Bunch of free apples”
Yea I hope it is 👍 I would suggest setting the bbslink on a sysadmin channel as to not confuse people as well
So if you had two mesh-bots in a mesh have channel 3 let’s say be “mesh-admin” and it would be set to pass the data out of view for most
where is the settings for bbs link, its not in config.ini
Just needs sent; so it’s a schedule task where it just sends the command bbslink
I just patched to not use channel 0 as an example
Comment out line down the end of mesh-bot.py
found it its this command
Send bbslink looking for peers every other day at 10:00 using send_message function to channel 3 on device 1
#schedule.every(2).days.at("10:00").do(lambda: send_message("bbslink MeshBot looking for peers", 3, 0, 1))
dont have another bot to test that yet. could spin up another vm i suppose and find another radio. Ill save that for a rainy day. That be tomorrow i suppose. and we meant to be summer
Yup that’s the one, it initiates the sequence
and the reporting tool - what port?
just planning out the femtofox web interfaced and trying to avoid collisions
No port it generates HTML to be put in a web server
ahh, it's not a server itself
got it
we'll still probably stick ours on 8080 or something
@digital tartan hey, finally able to get to play around with the improved version of the script, just testing on the audio file right now. It looks like it doesn't strip out the
Enabled demodulators: EAS EAS (part):
prior to the SAME string. I'm looking through mine and your updates to see if I can find where that's missing
although, playing around with just the text file and manipulating that, it's really just the "(part)" that is making EAS2Text mad
EAS2Text is happy with:
Enabled demodulators: EAS EAS: ZCZC-WXR-RWT-020103-020209-020091-020121-029047-029165-029095-029037+0030-3650000-KEAX/NWS-
It is not happy with:
Enabled demodulators: EAS EAS (part): ZCZC-WXR-RWT-020103-020209-020091-020121-029047-029165-029095-029037+0030-3650000-KEAX/NWS-
lolol ope
I didn't even notice that lmao
Okay yay! Now it's happy!
now just to wait until wednesday for real-world test. I'm gonna play around with some other RTL stuff until then to hopefully dial in the settings (and make sure my antenna isn't laying on my desk 😅)
By the way, for you guys, there may be a script that you want to use other than this one that gives a better output for monitoring alerts. It’s the one I tend to use, and I find it way more reliable.
Look into cbs228/sameold, it’s a complete demodulator just like dsame but it uses rust
I prefer it because it tends to work a lot better and consistently.
yeah but rust is different and scary
I got them all documented in the EAS notes for the project 🙂
But this one is also faster, and supports the protocol more accurately, and supports more features! 🥺
(It also compiles for every platform)
Side note on EAS2Text update, new FIPS DB is coming along nice, and Canada support is there too!
Fixing that in the main script too UwU
here is screenshot of bbslink behaviour
not 100% I have it set up correct yet
2 instances of bot running, 2 radios with the same channel setup. Ch 1 is the bbslink ch
once it gets the bbslink command it goes a bit crazy. not sure where it is getting the game stuff from ?
and the radios are in the same room , seems to find a few hop counts from someware ?
Yes that is strange
I fixed the bbslink, best guess that was forgot push from my internal git
Yea for sure was
Game issue lolling at now
Hope that is resolved as well @jade briar
Ok I'll give it a go
got rid of the game and hop stuff, still has a ping pong war
its responding to the meshbot message - try sending ping
can change the message in config.ini?
Thats a bit of a bodge way to fix it though
No it should have caught that all the changes to ping something going down
If you want me to try something let me know. Not sure what to suggest at the mo though
Should be fixed
Ok ill give it a go
yup messages are moving between bots, awesome
Nice - Thanks for catching those issues!
one more thing while I think of it
what about a limit to the autoping of say only 2 instances at a time. that can quickly over load the mesh and as it grows the chances of lots of people trying at once grows ?
Yea, good idea; in a new pull 🙂
Bbslink update
After playing with 2 bots and bbspost propagation between them;
As the number of posts grow chutil gets way up when bbslink runs. This can be offset by making chunker delay 1 to 2sec. This increases reliability of message transfers and bbslist reading.
Deleting post needs to be done on both bots otherwise when the links run the undelete messages on the other bot get pulled back.
Don't think this is worth worrying about as long as you are awear of it it can be managed.
I was testing with a link freq of 20mins on both bots.
To summarize- its working very well, no crashes.
I suspected a time buffer was needed I will look at adding one, the delete of posts is an interesting problem, I should also add a note about that yea
I’m not sure its’s ideal to run a sweeping delete, while the post permissions would likely prevent any problem of purging
Having sysop management of the posts seems more important generically
having a post synch-purge logic is possible but like you said is it needed
running latest pull
2 radios, 1 long fast the other short fast, different slots
repeater mode enabled with 0,1,2,3,4 channels enabled
crash report attatched
partial crash, hasnt gone to prompt
Meshtastic API lost connectivity
All the RF caused WiFi to dip
What’s the power supply to the nodes
meshbot radio is heltec v3 on usb charging bank talking to nas vm via wifi for code. about 2 amps for heltec so should be heaps.
Call that one a false alarm them
Did it calm down for you? @jade briar I run medium fast and longfast with no issues I have tested serial and WiFi in this configuration
Still playing but it looks like it is passing messages across.
Need to hook another radio onto short fast to test properly
The two channels are totally separate and only messages pass between on configured channels?
Yes copy the string, text messages so more finite, with the advent of 2.5 it gets muddy modifying from headers reflecting packets
Passing dm would be very difficult id say and keeping them seperate keeps a lot of background activity isolated
Yea, it could be a real bugger. If you ran the bot on 2.4 modded firmware I did get a nice idea going but the risk to bad keys all over, it’s not a good time for usability possibly later reexamine it
a bbslink observation.
15 odd posts on each bot, chunker delay 2.1 seconds works well and keeps the channel utilization down.
I have had it get over 60% if chunker delay is low
even 5 seconds for chunker delay if it was coded in as its a background task and gives others a look in?
15!! Woah sweet!
yea I hear ya - I will add more logic to throttle it down in these cases
If the 2nd radio isn’t in use could keep all synchronization off the main radio channel
I dont think it will matter, bot one will look for peers and nothing will happen, only 1 message so sort of taken care of already ?
If it’s all a planned architecture anyway two mesh-bots share a back channel for example
yes i have a bbslink channel only on the 2 bots, this sort of stuff does need some planning. The linking stuff happens in the background so to speak, only indicator is spike in channel util.
how many bots do you think the bbslink code will handle?
The limits are meshtastic and a pickle file db
Put some throttling in as well as locked this feature (bbslink) down. Disabled by default with a optional whitelist
I did use a 5 second fuse so if your delay is set high, fyi
Ok I'll give it a go
I think 5sec will be perfect
EAS TEST DAY
Antenna is in the right spot. Script is set to the correct freq. Now to wait for about 55 more min 😅
Any success?!
I got this the other day at 2am forgot to mute channel haha
haha
Nice!!
Yea look like it
After Franklin
It’s not clear where the breakdown is (could be a new line not reflected on screen) if line.startswith("EAS:") or line.startswith("EAS (part)
It’s not collecting all that string or the string broke or the last line isn’t being written
The .ogg file should have similar problems ? Did you happen to record the test today
it shouldn't. in the first screenshot it says "got message ___" with entirety of the decoded message
luckily the original file output.txt got saved
What’s contents of output.txt @sick nymph
It was full after I closed the script I got some weird output standby
Ahh I was standing outside, with a portapack and .. thought I properly hit the record button but can’t see the lcd in daylight haha and .. didn’t hit record
Or it failed .. nothing on sdcsrd
Doh! Next Wednesday ..
So, I can’t provide over the air solutions for testing, but if you want to test those systems by patching in an audio source (like web audio) I can provide a test feed
I just got the one audio sample test. Do you have a collection of random alerts for a wide sample?
I tried testing against a YouTube compilation but not sure if I had a error / bad bitrate need to explore more
Any chance we can get a unit selector? Metric vs Freedom?
INFO | Device:1 Chunker1/3 Sending DM: Afternoon Partly sunny, with a high near 9. SW wind around 15 km/h, with gusts as high as 25 km/h. To:
That was from a wxc command
Nevermind. I now see the difference in wx vs wxc.
There was a lot of request for having both units of mesure, if you also set the metric config.ini it will invert Wx and Wxc behavior
I also just fixed a web reporting bug
@broken sorrel You mentioned a server a while back and it could have been an issue with the index (just fixed)
I don't follow
You had asked about a port a while back for html components. I noticed there was a problem with index.html as today if this was related by any chance .. wasn’t sure if your question was about a web delivery error or just planning for os purpose
Got some tweaks into EAS API, adjusted to 20min checks 15min I was seeing API server throttling possibly, enhanced logic for delivery a bit
Curious question,
I noticed for the EAS OTA, you're using RTL -> Multimon -> EAS2Text, then writing the contents to a file to be picked up by the filemon.
Wouldn't it be better to run that RTL -> Multimon (Or SameOld) in a thread, then pass it's into EAS2Text in real time? That way you can cut out the file writes needed, ditch the overhead of monitoring a file for updates, and pipe the output directly into the message handler.
Should be faster too.
That's what I did with my software Encoder/Decoder system, in which Samedec was used in a real-time monitoring setup, and it allowed SDR/Direct/Network monitoring for alerts, and then using a queue I could handle messages without dealing with filewrites.
For the meshbot project I didn’t want to hard code the alert.txt to a single decoder, for example you can send a MMDVM alert of channel use over mesh this way it’s flexible
Now is it worth adding a direct pipe? Possibly! Off hand I don’t know of a quick way to get a source (rtl-multimon) into a .py file. To say I would be adding a large bit into the requirements of project build.
Do you have an example or something I could look at, and any deets on a light plugin for that part also samples to use also welcome to dev into this more! 🙂 @fallow crystal
Hold on while I fetch a project, I am in a meeting at work RN (aaaaa)
Also just pushed a new “readnews” command which will return the contents of news.txt
The idea being any data the mesh user wants would sit and be pulled from news.txt
This is different from alert which is pushed
You can write a mesh friendly news paper of whatever highlights to return via chunker
https://github.com/A-c0rN/ASMARA/blob/main/asmara.py#L242
This may be a bit overly complicated for this specific usecase (As this is a full system that also encodes said alerts!)
however, this is how I do that:
I create a class-bound object, and bind a samedec process to it, and it'll run happily in the BG listening in on the STDIN pipe (Which is passed through python.
self.__decode__ = Popen(
["samedec", "-r", "24000"],
stdout=PIPE,
stdin=PIPE,
stderr=PIPE,
bufsize=1,
)
I then create a monitor process in much the same way, but mainly for the STDOUT:
## URI STYLE:
## <DEV>|<FREQ>|<TYPE>
## 0|162.4M|fm (NWR on SDR 0)
## 1|93.3M|wfm (93.3 FM on SDR 1)
## 2|710k|am (710 AM on SDR 2)
## Config style: {"SDR": "<URI>"}
cmd = [
"rtl_fm",
"-d",
self.__monitor__["URL"].split("|")[0],
"-f",
self.__monitor__["URL"].split("|")[1],
"-M",
self.__monitor__["URL"].split("|")[2],
"-A",
"fast",
"-r",
"24k",
]
if self.__monitor__["URL"].split("|")[2] == "wfm":
cmd.insert(len(cmd) - 4, "-s")
cmd.insert(len(cmd) - 4, "170k")
cmd.insert(len(cmd) - 2, "-E")
cmd.insert(len(cmd) - 2, "deemp")
self.__stream__ = Popen(
cmd,
stdout=PIPE,
stdin=PIPE,
stderr=PIPE,
bufsize=1
)
Then, with those two objects, you can just take the stdout of the __stream__ object and pipe it into the stdin of the __decode__ object, and monitor the stdout of __decode__ object for alerts.
Run in thread:
while self.run:
data = self.__stream__.stdout.read(2400 * 4)
audioSamples = frombuffer(data, dtype=int16)
self.__decode__.stdin.write(audioSamples)
and also:
while self.run:
decode = (
self.__decode__.stdout.readline()
.decode("utf-8")
.strip("\n")
)
Automated System for Monitoring And Relaying Alerts - A-c0rN/ASMARA
Fair warning:
That code is not documented well... ;-;
Side note, since it was recently opened up to the public, another place you can pull for alerts is FEMA’s IPAWS system. It’s the modern day backbone of the Alerting Systems.
I can write up a quick example script if you would like.
Can you pull from it or is it for like tweets from the gov.
It’s an XML feed
Any different from the current EAS API?
Shouldn’t be too different, I might be able to pop it beside the NOAA one
They also return a very convenient last updated tag
Ehh needs a authorized API key
Do you have the feed url?
Yes
I can’t seem to find it in doc’ all says Gain Access to the Feed
Complete a Memorandum of Agreement (MOA) with the IPAWS Office.
That was the old process, within the last year or so they did away with the MoA needed
All good code makes sense, but yes it’s a healthy plugin to add
https://apps.fema.gov/IPAWSOPEN_EAS_SERVICE/rest/update < Update Feed
https://apps.fema.gov/IPAWSOPEN_EAS_SERVICE/rest/feed < Feed Feed
Yea, the process changed in Feb 2021 where they moved from locally hosted to cloud servers
the MoA and needed "Pin" for accessing the feed was to reduce load on the servers
Feed is the initial and update is only updates to the original report?
Tsunami Warning immediate coastal area Douglas County. Stay away from beaches. Yikes!
Is there a API decoder ring anywhere to set locations? Appears its national feed?
Also noticed it cataloged test as
<responseType>Avoid</responseType>
<urgency>Immediate</urgency>
<severity>Extreme</severity>
<certainty>Observed</certainty>
The tsunami is
<urgency>Immediate</urgency>
<severity>Extreme</severity>
<certainty>Observed</certainty>
Seems, funky no?
So it is a national feed, most times in the actual feed itself you monitor the statefips label for the state(s) you want to watch for.
the alerts themselves provide the info for where they are, so you can ignore the ones you don't want in a wide area via statefips and in a small area using the alert XML
Found a <area> with geo which will likely work with mesh ok
example being:
Let's say I want alerts only for my state, and surrounding counties.
I'm in wisconsin (State FIPS 55), and in Milwaukee County (FIPS 079)
So I would only monitor the feed for statefips 55, and alerts containing 055079 in the geocode SAME tab.
I do like the expanded idea here of more inputs with reporting department
There is so much info for thisCAP and PAW but all the dev docs seem hidden
Nice thank you, wasn’t finding it!
I will dink with this a bit see if it can’t replace or be a option for use vs the older EAS-API feed, thanks @fallow crystal
No problem!
I am still working on an upgrade for EAS2Text that will allow it to do some better processing (and be less picky about inputs lmao)
You like regex?
^.*?(NNNN|ZCZC)(?:-([A-Za-z0-9]{3})-([A-Za-z0-9]{3})-((?:-?[0-9]{6})+)\+([0-9]{4})-([0-9]{7})-(.{8})-)?.*?$
No haha but it’s powerful 😀
import re
sameData = "ZCZC-WXR-RWT-020103-020209-020091-020121-029047-029165-029095-029037+0030-3650000-KEAX/NWS-"
reg = r"^.*?(NNNN|ZCZC)(?:-([A-Za-z0-9]{3})-([A-Za-z0-9]{3})-((?:-?[0-9]{6})+)\+([0-9]{4})-([0-9]{7})-(.{8})-)?.*?$"
prog = re.compile(reg, re.MULTILINE)
groups = prog.match(sameData).groups()
print(groups)
Output:
('ZCZC', 'WXR', 'RWT', '020103-020209-020091-020121-029047-029165-029095-029037', '0030', '3650000', 'KEAX/NWS')
Oh nice, ready to feed right to EAS2Text
not quite, this is a line used in this new EAS2Text that is used to break down the alert
that output is already broken into chunks I can process on :3
Pressed a new release
@gentle kestrel have you got a Luckfox for testing this on?
I need to check it out, been slacking. watching the work here and there any issues or just cool stuff?
It's all cool stuff, obviously.
I was just thinking you should get a couple to try out...
https://vi.aliexpress.com/item/1005007640705187.html
Install script borks, unfortunately:
Collecting maidenhead
Using cached maidenhead-1.7.0.tar.gz (5.8 kB)
Installing build dependencies ... done
Getting requirements to build wheel ... done
Preparing metadata (pyproject.toml) ... done
Collecting beautifulsoup4
Using cached beautifulsoup4-4.12.3-py3-none-any.whl (147 kB)
Collecting dadjokes
Using cached dadjokes-1.3.2-py3-none-any.whl (4.3 kB)
Collecting openmeteo_requests
Using cached openmeteo_requests-1.3.0-py3-none-any.whl (6.0 kB)
Collecting retry_requests
Using cached retry_requests-2.0.0-py3-none-any.whl (15 kB)
Collecting numpy
Using cached numpy-2.1.3.tar.gz (20.2 MB)
Installing build dependencies ... done
Getting requirements to build wheel ... done
Installing backend dependencies ... done
Preparing metadata (pyproject.toml) ... error
error: subprocess-exited-with-error
× Preparing metadata (pyproject.toml) did not run successfully.
│ exit code: 1
╰─> [2 lines of output]
meson-python: error: Could not find ninja version 1.8.2 or newer.
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed
× Encountered error while generating package metadata.
╰─> See above for output.
note: This is an issue with the package mentioned above, not pip.
hint: See above for details.
it won't install in a venv, I don't think
sudo apt-get install ninja-build
Or pip install ninja
Won’t clear it?
I'll look later
Sounded like TC2 bbs was preferred which is cool but; unlikely I will go hard at resolving these issues. Likely rework pong bot to be light weight responder bot less requirements
I did push a change with dropping ollama requirement
TC2 is not preferred for femtofox
it's just what I've used in the past
I will do my best to shift it in @broken sorrel
I can give a shot to crosscompiling
I am refactoring pong to be minimal impact (no exotic importing)
what apt packages are we dependent on?
Gives something to use for testing against
sudo apt install fonts-noto-color-emoji ninja-build -y
pip install pyephem requests geopy maidenhead beautifulsoup4 dadjokes schedule wikipedia openmeteo_requests retry_requests numpy ollama googlesearch-python
?
anything else?
Apt is dependent on the os management the emoji font for example is just icing.
All the python / pip packages are
Mesh-bot enhancements:
pip install pyephem
pip install requests
pip install geopy
pip install maidenhead
pip install beautifulsoup4
pip install dadjokes
pip install geopy
pip install schedule
pip install wikipedia
For open-meteo use:
pip install openmeteo_requests
pip install retry_requests
pip install numpy
For the Ollama LLM:
pip install googlesearch-python
alright, installing
doing it via chroot before building the image, so it's all on my desktop
not on the potato
it's an amazing little device. But it'
If you got compile of all requirements except open meteo its a good start
it's no speed demon
yeah error
something about numpy it don't like
and that log file doesn't exist
Yea it’s a good sized include but it’s only needed for open meteo no?
Can you compile all the other bits?
If it’s just numpy .. there has to be a hack to better pull the open meteo api
Missing cython?
is that an apt install?
Depends on the repo and os, look to see if pip has it first?
Good news!
Nice you got 100% build now?
I was just doing the dependencies
okay, now I compile the image. Then I can install the bbs itself live on the device
In theory yea
Thanks for including the 🥔bot 🙂
will compile the image in a sec
The less functional pong_bot.py was updated/repaired (it only has logic for basic network tests)
what the heck is zope-interface
it's installing extra stuff
the ./install.sh
and I'm installing out of venv so it can use the preinstalled stuff
@gentle kestrel Which bot do you want to install as a service? Pong Mesh or None? (pong/mesh/n)
can you explain the choice?
Pong is a basic auto responder
Mesh is the more complicated one, that has weather, Wikipedia, etc.
Not sure if pong has dad jokes
installed mesh
if I install the ollama components, does that try to run locally or remotely?
It’s requests / API only so wherever it might land its config.ini
No but it’s got ack ack!
Other day saw a good uhh one uhh two and it was 3 hops away so was perfect!
A new chunkr revision out enhances logic for better sentence separation with 3 character fuzz (allows exceed the max limit)
Thoughts, specifically on workflow?
Commands? think using
sms
email
Is messy for mesh chat?
https://github.com/SpudGunMan/meshing-around/commit/766ff0a1958f6af25395cf736d77161d3b4441d6
sms:
email:
?
Thought process behind this?
Where you see this going?
There was a request to have a handoff alert system for sms.
The set commands would keep a email on file basically allowing a quick cross into SMTP
I don’t have a lot of use case myself but its easy to whip in and allows a TDeck to sms text family was what I figured its handy for
As for where it’s going .. I didn’t have much more enhancing for it at the moment (finishing its inclusion) possibly a backhaul for bbs or remote reporting?
This seems like a better way like wiki to prevent a bot response out of turn
Common words
Handling email inbound to the bot sounds horrible so .. likely this will be its only purpose I do have a filter for the from address .. could possibly be two way
*reporting sounds possibly handy
Other things this could be handy for is setting a capture for “emergency,911,fire,police”
If 911 send sms/email to.
also, alert(interface,channel)
I don't see a lot of use for that either.
Could be a useful way to load up the news text?
Possibly but that would be external script realistically I goofed with a few ideas for loading a newspaper but nothing exciting enough to put out
Might toss a example in for Parsing bbc rss news headlines
Have you looked at the workflow that the APRS SMS bot follows?
Yea, using a light weight concept of it. That project has had some struggles, Here is a concept https://github.com/na7q/SMSGateway/blob/main/sms.py
twillo is a pay service for sms to offload the problem, vs using email it’s real sms links
The cost factor (vs email only) prohibits this; realistically at this time most meshtastic users are cell phone carriers and in a emergency of no internet for email or cell, who you gonna text via twillo
Future meshbot workflow
User sends: setsms [email protected]
User sends: sms: I am ok
Bot, sends email to stored address(s?)
Optionally user sets a email
User sends: setemail [email protected]
User sends: email: warranty expired
Bot, sends email to stored address
User sends: email: [email protected] # hello world
Bot, sends email to address provided
Bug
Motd $new message
doesn't load up
Can you explain more : can’t replicate errors or problems (did you set an admin only node for its config.ini)
I'll check
I may have miss typed it
Doesn't look like mistyped admin I'd
I'll do a pull and re install and try again tomorrow
Lots has changed
Changed them to the sms: format
More I ponder this more I like the idea of having the sms for tdeck use etc
Added
clearsms: - clears all sms email at moment
setsms: address@
will append if already present
This feature is really more for private mesh / family use
I put a warning this code collects PII, I laughed when GitHub alerted me this bot-code logs PII of location
(To your disk and log file fyi)
Need to have a think about how to handle reactions:
Haha
You can use any icon on android?! Oh man I only get like 5 icons
Also why so much welcome header?
When LLM is on it responds like a text message
Ha. I get it now.
handle like better process. Got a fun idea?
Or look for indicator it’s a respond to, and dump it?
Fall back to dad jokes when no ascii in message string
That's a good idea
I wonder if there's any specific indicators of when it's a reaction
the replyId an emoj bits appear handy
Implemented
There is new logic for better responding when no LLM
If dad jokes is enabled it will welcome you and send jokes thereafter
If dad jokes is not enabled it just sends the command list
Should at least try out the ping test command! It’s handy!
Hey @gentle kestrel just curious, is there a suggested way to have a node both be an MQTT uplink and be a meshing around node? Is the idea still let the radio itself be responsible for MQTT? And in that case, what's the pattern folks are using when you have a copper ethernet node but only one port to share between rpi+radio? Pull a second cable?
I have been told it works I think a few here have gotten it good.
Enable MQTT uplink firmware sends traffic to MQTT
Enable serial echo the bot sends traffic to MQTT as well
Node -serial/usb-> pi -cat5->
Others who need more like a full MQTT world (local MQTT) have gone with meshtasticd for more complex config
So in this scenario what do you do if the node has no network connection though, or does this approach depend on that?
The API pipe is the conduit for meshtastic firmware
If MQTT only flows on Ethernet or WiFi meshtasticD would be an option
I could look to add a MQTT interface if it’s architecturally an issue but I thought it worked (by lack of complaints)
I think I don't know enough about this space to ask the question in a helpful way, Im going to take a step back and play a bit more to understand.
Sounds good holla if you need help
Putting the node on MQTT and the pi usb might be a good step one to validate
If that works; add the bot and enable ConfigModule.Serial echo
(Meshtastic firmware)
@gentle kestrel I guess the trouble I have is, for me to get the pi network connectivity, the node itself wont have network. So unless some magic is having the rpi send things to MQTT, I think my test falls apart there.
this a rak on Ethernet?
Reading docs
every raw protobuf MeshPacket that it sees to the MQTT broker, encapsulated in a ServiceEnvelope protobuf.
It should be possible via api
But also says WiFi and Ethernet only
What about a hotspot on the pi to handle the firmware needs for classic networking
Silly but works
Yeah, I'd just as soon pull a second ethernet cable up the tower lol
Yeah that's my use case here. Tower top POE node, like a rak for instance, now I want to add meshing around and so I toss a pi up there with it. Switch to POE powering the pi, but now I lose MQTT. I think 2 cables is fine for now unless someone else jumps in with an alternative.
Ethernet attach the rak and in the tower shack put a pi connected via TCP to node
one of my perceived benefits, though I havent tested yet, is that a direct serial connection also lets me remotely do firmware upgrades. I think that's the only other tradeoff to your suggestion
haha yeah a poe in/out switch would solve this too
You don’t need 100gb split the pair and run 10mb
yup that's another great option
Kinda interesting to me that we dont have a linux parallel for the apps versions of "MQTT Client Proxy"
I have pondered adding a MQTT interface but the firmware seems to handle things so well I didn’t bother with more lines of code
Yeah definitely, each LOC == $$
I would sooner imagine building a standalone app for taking a serial device, uplinking to MQTT, and then providing the client API host as well over a network port, that way you could essentially have a no-downsides "MQTT Client Proxy"
There is one example in the meshtastic repo for this
Kudos to you with your project here @gentle kestrel , getting it up and running from 0 was incredibly easy and I'm very impressed by it! This will be a great way for me to demo the mesh here while we don't really have a critical mass yet. Having a bot always there to talk will be very helpful.
Welcome and awesome! Yes it make demoing and building the mesh more fun! Glad it’s handy!!
The SMTP module seems to be working well now
Outbound messages look to be working well
The emergency responder also emails well
Inbound emails / IMAP. wip still
emailSentryAlerts new config.ini
Fresh re install fixed my issues. 👍back to all good
Good news!
Enhanced the “noaa abbreviator” to shorten weather alerts better
Also applied to these FEMA iPAWz
These messages are verbose in frequency and length
Now I have a working model need more alerts to sample
There is some very initial code in for alpha test of
ealert
Returns FEMA by SAME at the moment
Ooo, I gotcha there too lmao
Yea thanks for suggesting to check the alert out! Spent time yesterday in the API and reading the alerts, watched the news last night and all the alerts were on kinda wacky but seems like a cool feature!
Another little blip which is kinda fun is realtime stat on the number of nodes seen
That new stat just like the firmware but it’s on the bots runtime, can exceed the nodedb cache on firmware
I didn’t prune it, so arguably it’s a memory leak - I was curious how big it might get
Would be interesting to compare to the nodes figure
Yea. I stored basic minimums,
node #, time seen, and interface heard on. So it can be recalled later if needed. Improve the intelligence of sentinel data. If you think of any other cool use for it holla
Oh yea!
I get paid later today, so I may spin up my own node for testing and development. First node for me.
Remember to get two!
The heltekv3 2 pack is one way to jump in for dev. Has WiFi and BLE. The rak and seed pull less current and if you enjoy more diy - and haven’t caught the work on #1302945239689990185 worth it to gather some parts together to build your own node as well
There's the new Seeeeeeeed Xiao S3 sensecap thing- that is ESP32S3 and lora for $10
Will it fit on the smol fox ?
https://www.seeedstudio.com/Wio-SX1262-with-XIAO-ESP32S3-p-5982.html
Enhanced iPAWS ignores any headline with Test by default
That hat won't , but the radio module will
bottom right, small footprint
WIO-SX1262
Screen print jokes are worth every cent of ink imo
The back is better
FEMA alerts are going well, it’s interesting data to watch.
Might be valuable for LLM built news.txt
I don’t want to enable auto alerts yet till it seems stable on reporting local area well
Caught up on with a release as well
Added whois if your node is bbsadmin returns more data
Also put a chunk system into CMD?
Cool, getting six of them :3
Got some friends I want to try some things with
And to stash one at work lmao
nvm, just two for now, wallet said no lmao
Like rabbits or guinea pigs they multiply somehow give it time 😜
I am trying to install this on a raspberry pi (pi3b+) , I keep getting similar errors to "./install.sh: 156: [: ==: unexpected operator" during the install process. Any idea what I'm doing wrong? Thanks
A new OS download?
I am running a recent version of Dietpi, maybe thats it
I will boot it up and check it out, it’s a odd bash error for sure - also happens to be the last line of the installer and didn’t complain about the other uses of =
Yeah, error appears on multiple lines of the bash, I did have the TC2-BBS-mesh installed, but I have removed that.
'''
Yes bash errors for methods used, I just booted diet pi on a 3 and it won’t light the cat5 either
So troubleshooting that, OS is too lite
I'll install the regular PI image so.. thanks!
I’m gonna keep tinkering on it it’s a popular Os
Great!
It does say "pip not found, please install pip with your OS" at the beginning of the install, then says "python3-pip is already the newest version (23.0.1+dfsg-1+rpt1)." a few lines down.. is this normal?
I just got networking - had to use a very short cable to switch. Odd behavior but on line now
Ok tweeked it and trying a fresh new install now
There was no checks for Python itself and dietpi is lite. Gave the installer a refresh for these issues. Should work now. Thanks @brittle atlas
Had some iPAWS alerts crash - appears agencies can submit faulty xml added a trap
Installer is for sure now much better at installing into a lighter os like diet pi (without any Python)
Send me the XML, I can debug it.
They don't tend to send faulty XML (FEMA's AWS instance rejects the XML if it doesn't comply with the schema) so that interests me
Also, if you want more alerts for testing, add "TDL" to the start of the link:
apps.fema.gov -> tdl.apps.fema.gov
that's the testing place
Can you easily pull text from image?
Shows the error on description
When I web rendered it it’s fine
But in Python .. uhh
<\description> was all I got
Extracting via linked_xml.getElementsByTagName("info")
Linked_xml is api by method xml.dom.minidom.parseString
Also of note I see what looks like duplicate alerts for same geoVal
One entry no crash one entry crash
For that bad field I’m recycling headline which is less likely to corrupt I figure
2024-12-12 12:06:15,983 | DEBUG | Debug iPAWS: Type:SAME Code:RWT Desc:Oregon,Clark, WA GeoType:SAME GeoVal:041000, Headline:Emergency Alert System Test
2024-12-12 12:06:15,983 | DEBUG | Debug iPAWS: Type:SAME Code:RWT Desc:Oregon,Clark, WA GeoType:SAME GeoVal:041000, Headline:Emergency Alert System Test
This was the pair still hot
Looked at it, the only weird thing I see is commas in fields that don’t normally have commas
But nothing that would break XML
Yea when I web render I have same good description
Only Python is it goofy
fine in curl
This method
The DEBUG: LINKDATA and DEBUG: LINKXML outputs represent two different ways of displaying the same XML data.
-
LINKDATA: This is the raw XML data as received from the HTTP request. It includes the XML declaration (
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>) and the entire content of the alert, including the signature and certificate information. -
LINKXML: This is the parsed and re-serialized XML data using the
xml.dom.minidom
library's
toxml()
method. It also includes the XML declaration (<?xml version="1.0" ?>) but may have slight formatting differences compared to the raw data. The content remains the same, but the encoding and standalone attributes are not included in the XML declaration.
Both outputs contain the same alert information, but the way they are presented differs slightly due to the parsing and serialization process.
hold on ima look at my trash code for CAP processing
Interesting place to have crashed - just a node nothing special(not MQTT)? Did it have a nodedb clear?
I feel like it’s in dom.xml parsing. But can’t figure it out - running tests looks ok - alerts are expired now so my testing ended
I will try the TDL yes
Your line numbers don’t match me - you on latest pull? I did add extra support for the missing data but .. the bot is an entry so .. len<1. Wacky error
is there an issue with an mqtt only bot now? i haven't gotten this working the last few times i've tried
I don’t know I don’t run MQTT, but I know lots of changes in firmware and cloud
logs show my commands, and show a response being sent, but the client never sees it now
i'll keep poking it
yea, the bot is on a radioless node, connected to mqtt with 1 channel up and downlinked, and ok to mqtt on. and my node on the other end also has ok to mqtt on. when I stop the bot, and connect the android client instead, DM works as expected both directions
Interesting, I didn’t change the api inject for protobuf
Is your config.ini proper?
@lavish crown Also runs this I think
yea, i even backed it up and re-copied the template, only changing the port to tcp
What’s firmware rev?
Any changes there at the same time the bot went out? Can you roll back to like 2.5.5
Also @jade briar just checked sentinel and looks ok here (just pinged me)
hmm, i'll snapshot the container and give this a try
Got a link to the image?
Or any steps I can quickly replicate
it's proxmox's ubuntu 22.04 lxc image
@gentle kestrel I can spin up a VM here for testing of CAP if you need it, I have a script that emulates the IPAWS Feed
You should be able to issue alerts into it
and I'll add cross-IPAWS testing temporarily so it'll pull down real alerts as well
Things seem good it was just that single CAP so far
If it keeps happening that’s interesting
I put a good trap for it
I also found a typo in installer
Ok I gotta build meshtasticD last I tried was pre arm package and I blew that pi away
I’m wondering if old mesh bot or old firmware fixes this - I heard of changes for all this stuff all over like device id 1 was pulled etc
#meshtasticd message
This sounds cool, but in production is it safe?
I would use it for testing, not for prod though.
Code is up on GitHub, it’s what I use for testing because most devices think it’s IPAWS.
Drop in replacement for testing purposes
I will check that out, it might be interesting with DM PKI and all
And for the issuance of alerts, that’s pin locked, and I’d send you the info for that
I saw the example on GitHub, the pin part is secure but if programmed it would allow a mesh client to put in fema alerts
I would hesitate to write it as I could also write a hack for it
Do smaller municipalities have this deployed (this is all quickly learning for me I just realized this my alert app uses these cap codes last night)
That script doesn't go straight to IPAWS, it's just a "IPAWS Clone" for testing lol
for example, in one of my scripts that IPAWS monitoring was baked into, if you put a config flag to be set to debug, it'll redirect apps.fema.gov to ipaws.<my domain> so I could then issue example test alerts, and have it be issued for like 60 hours lmao
The actual FEMA thing is nationwide. it is the current EAS backbone.
I figured, it’s really cool and possibly some day but I’m very hesitant to step into any uploading or pin till I’m deeper intrenched
Oh my script isn't anything like the actual thing lmao
the actual IPAWS uploading process requires signed certs and COGIDs
I have my methods if i wanted to send stuff, but that would be breaking federal crimes, and I am not bout to do that.
Case in point why I made my own environment that is a live feed clone, but I made a jank way to make my own alerts
It's completely disconnected from the real thing
Very cool. And a fun idea, need to ponder use cases for something
Convert facility alerts to a local CAP server
FEMA feeds local and local has extra data
Mmhmm! The server could be modded to add in stuff like node info
You could also do some interesting stuff theoretically, such as having a server that takes local NOAA alerts and creates CAP messages for in-house alerting or something
If you have a large node mesh, you could cover a large area
heltec v3 on wifi to vm on nas. no mqtt, that tends to mess with wifi stability. Running 2.5.13 firmware on heltec
just done latest pull.
see how that goes when wife comes home it will trigger sentry and send me a message so i can go open gate. arnt I good haha
It should be working; and in the rare case wild things happened I patched a issue
ran into dependency errors here because everything is too new. i'll try some more stuff once the wife goes to bed 🙂
@gentle kestrel anyone suggested a variation of the file / eas that grabs weather alerts from nws over the web?
Oh you already have that
Currently wxa and wxalert pull from the NOAA API/web
ea and ealert are new and pull from FEMA EAS
If your outside coverage open-mateo gives forecasting. I don’t know a good global alerting yet
File mon allows any radio decoder for the analog if anyone wants
Just curious all of your config templates use channel 2, why not 0? Is 2 customary in some regions with some other psk?
I’m thinking of setting these things up on 0 and then moving them to something else once there’s actually some traffic ahaha
I just don’t want to suggest to use 0 to avoid spamming anyone’s public default. A random place filler basically
This way if the bot is spin up all default is least annoying possible
All my nodes are maxed out in channels 
2 in my lab is “alerts”
I figured most have public/family or the similar on one and zero
Whats up?
Was mentioning you ran a complex MQTT world and if anyone had noticed it failed recently you might
@gentle kestrel would you be open to a contribution that provides an example docker compose with ollama? I think I have a reasonable way to have it prefetch a model, wait to start meshing-around till that's ready, etc.
Yea for sure! This was on a list just far out it would be awesome
Cool. Doesnt help that the ollama image doesnt provide the capability to pre-grab a model, but I think I hacked it together 🙂
Yes should be able to pass the command into build time 👍
Ill submit a PR in a couple of days with what I have and we can go from there
(right now its hardcoded with a few of my specific needs, I deploy my first real infrastructure meshtastic node on Saturday so Im a bit busy with the rest of the stuff)
Sweet - Get fancy have it pull the same value as the config.ini
yeah exactly
3 spots actually, because the darn ollama image has no healthcheck lol
Boo
so had to add that and make it validate that the tag was available, and of course the ollama image doesnt have curl or wget...
layers of fun
which model are you thinking?
Stheno 3.4 is a nice 8B model.
IceLemonTeaRP also
im figuring you want small if running in docker (which a lot of [people would run on the Pi also running their node)
spooled up another container and having the same issue 🙃
MQTT? I have a half setup network
Can’t get any packets from daemon to mosquito yet myself
Confirmed it works out of box essentially
I updated this project readme as well as sent a push to master docs for some things
Updated the hop counter to notice negative hops for better behavior on MQTT
Greetings, can devices without Meshtastic firmware (in this case STM32 with LoRa SX1278 Ra-02 module) be connected with Heltec LoRa HTIT Tracker devices that use Meshtastic for LoRa communication?,
or is there a solution for ethernet connection without using wifi?
Might be better in #mqtt or #esp32
Could use serial as well https://meshtastic.org/docs/configuration/module/serial/ @soft osprey
@craggy bobcat any input (or anyone else)
resource check-in process to ensure accountability for resources at an incident per fema
Checkin:
New user says ICS-checkin
Use node ID to add to checkInList
If no history, asks for callsign or some sort of real identifier for the checkin
checkout:
User simply says checkout. And gets confirmation with hours worked
Sysop actions:
Get quick stats of in and out today / total
Record data to file for reporting
Clear list
Check out name as admin
Set incident number for use at checkin (need multiple?)
If I use the serial method, can the device that interacts with the gateway, in this case the Heltec V3 that I use as the gateway of the Meshtastic nodes, transmit data through the receiving serial board (ESP32 WROOM) which is then connected to the internet using an Ethernet cable? Can this be implemented using the serial method?
Im not a pro here but llama3.2:3b is working in my day of testing so far. I dont intend to be opinionated, I think we should give folks a few suggestions
Yea, that’s absolutely solid for testing
Config defaults to gemma2:2b
Llama 3.2:3b is newer
Defaults which work well on a pi are ideal for defaulting. If a choice is made pick between default for desktop ideally a matched pair (gemma2 and 2b)
It would be possible
Dropped a new release I would call a security upgrade. Using isDM enhanced ping and also added a block list to emergency responder
Ping in a group channel now also adds short name
Can enable auto ping in channel with .ini
@gentle kestrel Got this installed today on the dietpi. Very easy to get up and running. Thank man 👍
Awesome news! Happy meshing around!
been poking at this again before work, no progress. 2.5.8 was the oldest deb I could find, and I'm pretty sure I had it working back then. I've got another day off sunday, so maybe I'll dig in some more. So to recap, Ubuntu 22.04 lxc container on proxmox, meshtasticd 2.5.8, latest meshing-around. No radio, connected to mqtt with wifi enabled in the node settings to pass the check. With a client app connected to it, direct messages work both directions. With meshing-around connected, messages are received properly and the script claims to send a response. With meshtasticd logging set to 'debug' incoming messages are seen, but nothing is ever sent outbound from the script.
Uplink and down link issues? I for sure got DM and Channels flowing as expected I now use this for my alpha testing
I didn’t enable WiFi on the daemon
Firewall to MQTT?
New command
I don't think so, as direct messages work fine if I connect to the node with the android client instead of meshing-around.
I don't want to overbrain before work, but maybe tonight if I have time, I'll tcpdump and see if it even sends packets to meshtasticd and go from there 🙃
When your near a console holla I likely can be, it’s likely something easy my hang up was topic was wrong
Got a EAS NOAA alert from the API and didn’t see a matching alert in FEMA. Understandable but also of note won’t be deprecating NOAA Wx API
NOAA is over the NWS's internal EDEX and NWEM / CAP systems.
Technically, they SHOULD go over IPAWS but only if they match specific criteria, and it normally doesn't disseminate over the normal feed.
MeshBot is working well in femtofox embedded project. And more enhancing as time moves along #1302945239689990185 message
Solar bots are possible
Is there something for weather alerts for EU? 🫣 like you have for USA…
Closest we have in the UK is based on mobile messages and emails.
So, so probably only way is to find countries weather service alerts page and parse it?
Perhaps
I have some CAP xml files that they provide. Is that usable?
Should that be created in modules or somewhere else?
Or just create separate app and just use file change monitoring ?
If you can find a feed? (Sounds like you have one? Is it public? )
We can help parse into a file or script or bot, or yes the use of alert.txt and news.text for (alert is pushed news is pulled)
Fiji csv tide data for example was a use case.
If you have a public feed for any fema like agency to provide CAP/XML it’s worth adding to the bot
More interesting .. would it plug and play
If you know pyhton line 461 locationdata.py
If not share the link here or dm and happy to tinker when I can
it may be as easy as setting a config.ini for its value @lunar glen
@fallow crystal likely be able to weigh in more
They have something, I'd have to look into it.
If you'd like, I could look into making a lib for compiling weather info for you
There is weather currently, issue is external USA feeds for non NOAA/FEMA users
OpenMateo has weather for the world in a good api
Yea I just never thought about it till now @stone lance you know about this stuff https://docs.notifications.service.gov.uk/rest-api.html
is this worth goofing with?
Or is it like the bbc and just something you pay for
Huh. That seems to be for people/orgs wanting to use the system to notify people through their system.
I assume that's how the utility companies send me stuff.
Wrong end of the system!
That's to send stuff.
It's basically how the gov.uk send spam.
This is what you're after, I think: https://www.gov.uk/alerts
Like I said, it's using the cell network
They do have feeds, I think
I may know a former civil servant who would know if there's something to tap into
Lemme send a note.
Yes that’s a good start
Nothing else that page has a alert
(If anyone else locally has something like it they want added / the hardest part is knowing what’s cool locally)
I have a page somewhere that someone has made a list of APIs
I'll find it later
It like has every API for like half of countries
haha your people - do you think it’s handy haha
One of the first scripts I wrote into dstar was river flooding - totally gonna add this
That's got severe weather warning feeds
Not just flooding
Is it all inclusive or should the broken out be included
I'm guessing you just need to see if it fits in 1-2 messages or needs compression or something
For sure, and depending on a_c0rn has a lib or a list see how much to rework it
I find it handy, I have mesh ping me audibly and nothing else I enjoy having my own newsfeed around town, it’s pocsag for the moderen era
Yep, definitely
Everywhere in the UK is subject to some kind of flooding, if not directly then regionally
More warnings the better
Good to know 👍
It's usually more inconvenience than threat to life (usually).
Yea, I got tides and winds now -I was near a river before and totally know. I’m actually shocked I didn’t put in river notice yet into meshbot
We have an office in York, and they redecorate about twice a year from flooding, iirc.
I had a friend who did on-location interviews for the news, and they'd be asked to try and get someone to cry about it. They could never find someone.
Mostly just people angry they'd got a new build on a flood plane.
¯_(ツ)_/¯
Is this where the phrase cry me a river comes from 🥁
They can’t all be good jokes.
I will be adding a flood watch in some way for sure openmeteo also predicts world wide
I wanted to reevaluate the openmeteo api currently using the lib and wanted to see if using requests only is kosher
Being free and detailed don’t wanna scrape it
Good time to goof with it all
That's what I was thinking - plenty of data points.
Finally getting around to trying this out. What exactly is the Store Forward module, is that the esp32 thing or is it different?
Also an idea Im sure youve had and others have mentioned, can the BBS system be enhanced to host different boards and allow creation of new boards by authorized nodes? Somewhat like how TC2 does it but a little more
With 2.5 changes emulates in Python
It’s a single depth bulletin board today, but adding depth to it realistically is a dictionary away
Is the depth of board a valuable feature? (Message length is a struggle is nested messages easy on text app?)
Say I want to use this only for DMs, does this already handle it? Or is that the domain of the mail sender
I think so yes, but I dont think it would be nested messages. Just step counters like TC2 does it, to keep count in the code of which step a user is in and only deal with parameters within that step
Yea, I will add it to the list!
Only decodable messages would be available to the bot. You want the last commands with the bot history will cover it a bit
Ah of course, that makes sense
Sorry I haven’t gotten to that list or API, life things are happening and I’m having to briefly relocate
What's the altered procedure for setup on femtofox?
I get an error
d
Cloning into 'meshing-around'...
fatal: unable to access 'https://github.com/spudgunman/meshing-around/': server certificate verification failed. CAfile: none CRLfile: none
could be the computer time
¯_(ツ)_/¯
Yes this is something local
Yeah, I would suggest to sync to NTP
Hi guys, what is the best way to update meshing around when there are changes?
I would also like to know this. Would it be sufficient to add config.ini to .gitignore and do a git pull origin master?
Config.ini is not pulled, it's made locally
Git pull
Sorry I mean if anything changes on the local doesnt it whine when trying a git pull and say you have to commit changes?
So telling git to ignore that new local file would be good to allow git pull without it demanding you do something about your local changes?
Oh, I thought step1 was copying the config_template to config.ini and tweaking it to suit?
But gitignore makes sense, too
you are correct and once its created .gitignore takes over
if anyone on the repo touchs the file config.ini it would ruin everyones local changes with a git pull
hence the template to ini dance
the bot will inject any needed ini defaults into .ini
Ok cool, so updates are dummy simple with just git pull
Of course Ill have to do something different as I added a few new py files and modified some as well...
yea a fork might be better so you can pull locally or if its something you think should not be such a bother and moved to .ini, just mention it
anything fun??
Random bible verse, liturgical calendar. Prob not fun but useful to some people
that could be fun
having a script dump to news.txt kept it open for that
or alert.txt
the name is a bit funky in that it could be push.txt and pull.txt
not that python is bad for that use case but .. I do hope I have a close to out of box for it without having a loss of code in a git pull
Where's the best place to put Meshing Around on the luckfox?
i'd put it in /opt and create a user with no shell to run the service as
I just submitted a PR to patch the base python image used in the Dockerfile.
https://github.com/SpudGunMan/meshing-around/pull/96
Yikes! Thank you @lone wolf
and anyone who sees this can pull the new docker.toss out the old. Impact by user-controlled inputs, such as package URLs.
The public’s access to this ability to pull irl like this is low meaning someone on mesh isn’t downloading packages, without a more complex attack on meshtasticAPI as well. But very much removing RCE from 2023 thanks for catching this.
Just refactored open meteo to drop native python module and move to standard requests
Translated please advise if a new pull breaks anything for the openmeteo use
This makes the bot more portable. Less overhead and bloat
The command riverFlow is in latest pull
I don’t have England in yet
NOAA has full data openmeteo is still tbd
Early testing and all but seems ok
Need to enhance
Got a little documented on it
file reader got enhanced, new config.ini bit to read a random line from the file news.txt
so if you have a book, or a script from a movie
readnews would return a line from it
this could work for that
or any time the 🐝 send a line from https://courses.cs.washington.edu/courses/cse163/20wi/files/lectures/L04/bee-movie.txt
Can't wait to do some testing here soon, mesh nodes come in Saturday
I think (untested) if you enableGBalerts = True in [location] config.ini that you should get UK.gov alerts with ea and ealerts
it just returns no alert right now but, any feedback if an alert is seen working good
its HTML pulling from UK.gov
the flood data. which there is a lot, appears to be in HTML only (same as the gov.uk alerts) there is nice RSS feeds with "7 flood alerts" and a nice website but its all bits here and there it seems - Bsoup is nice but one change to the HTML and its a house of cards fallen down.
if any UK users find a nice scrape or way to get lat/long into the zones etc let me know
the RSS gives this
that web is
thats a lot of hits and parsing
not sure what to do about rivers yet
for weather it seems better but no alerts https://www.metoffice.gov.uk/public/data/PWSCache/WarningsRSS/Region/nw
if you know one is active holla'
hopefull its data not just a HTML
anywhoo for anyone who's tax's pay for Mr.Bean this is for you
mmm
haha
The bell character has been an IOS app option for longer than android. It could have been since then.
Oh, good point
October 3rd.
https://github.com/SpudGunMan/meshing-around/commit/b676ace34bdcd019f79089932184b40d6d819286
I really need to read the release notes more closely...
I’m starting to forget commands the list is getting lengthy
It might be good to group them into categories
Dict for the code, stepped menu for the cmd help
Kinda hybrid like that now with the emergency stuff at the bottom. The rest is alphabetical.
Help is inline just like Linux would be
Stepping menus isn’t really awesome
See gameplay for stress on the idea
It works direct
It’s frustrating beyond
At the core the fundamental difference between this and other delivery methods it’s not a gui to have a menu
Its a twitter bot
But with a spotty link
It’s written now like that, so people can plop in code if they want and I hope quickly change or copy news to 🐝
One difficulty I have is globalization in language for local commands
this was a step to making it a bit easier
separating it out and such is and would be handy for this - but also likely good for a rewrite. The goofy bot has proven to be stable this long I just keep adding stuff
I had at least a dozen more ideas still so
Why slow the boat, it has been fun to drive
I am going to wrench in iPAWS and gov.uk to the same timer loop weather is on
IPAWS seems good for press gov.uk is still testing I don’t know what to expect
branch emergencyalert if you would like to test early
eAlertBroadcastEnabled = False
# Goverment Emergency IPAWS/CAP Alert Broadcast Channels
eAlertBroadcastCh = 2```
if you had early femaAlert this changed in config.ini
No crashing in 24 hours, pressed a release
next weekend I go back on site to setup remote power management for my meshing around node. I had a failed initial deployment where DHCP wasnt working properly on the network switch, and by the time I fixed it the rpi had stopped trying to get an address :|. Looking forward to getting back out there and fixing that, plus making it possible to kick the box remotely.
this gem just popped up https://feeds.meteoalarm.org
- tail install.sh for a option with a 🐝 to return a string from the bee movie for example adding it alongside news.txt as bee.txt
- also a quick way to spot what is needed to add command ideas by
I got a reply from the guy.
He says there's no central UK alert feed as such, which is what we found out earlier.
I.e. it's this:
https://www.gov.uk/alerts/current-alerts
Or area specific, like this:
https://check-for-flooding.service.gov.uk/location/leeds-west-yorkshire
View current flood warnings and alerts for the Leeds, West Yorkshire area, and the regional flood forecast for the next 5 days. Also check local river, sea, groundwater and rainfall levels.
Some new code in to demo pulling a bash file, currently it’s just giving environmental from motherboard.
I got the bot working on a Pi, been poking around. May make a fork for some ideas and improvements :3
Service notice regarding satpass:
Many people are wondering if satpass which uses NORAD id will be able to track Santa via mesh-bot, in meshtastic networks.
Due to the nature of, the speed and security needed by Santa’s team; NORAD only provides tracking data via JavaScript and telephone lines.
At this time it seems out of scope to monitor an analog phone line but this could change. Please call 1-877-446-6723 for accurate santapass 🎅🎄data
Same. It started when I turned on the neighbor info module on my nodes. It is either a node that is directly connected to the bot, or one nearby that is causing it. I haven't bothered to look closely enough at the log message to notice which.
I don't consider it a bug personally.
Interesting, I haven’t ran neighbor info adds overhead will check that out!
do you see it frequently
It's probably timed with the values in the neighbor module. It probably started when the option to transmit over LoRa became an option.
I have it enabled on all nodes now in my lab and not seeing any malformed error
the trap catching it is python # handle TEXT_MESSAGE_APP try: if 'decoded' in packet and packet['decoded']['portnum'] == 'TEXT_MESSAGE_APP':
so extra interesting
The packet will only transmit on a non-default channel. You may need a different primary channel with a random key.
OH right! thanks
I also just pushed a new error handler to better define the packet with an error (text or meta processor)
If you switch your primary channel for testing, make sure to check your LoRa frequency slot. It needs to be the default for your region to hear anything.
I'll look into my configs
I had different index 0 on all my stuff, think I am all on the same now for testing
I need to update shiz but I am a bit busy with file transfers >~<
Nice, I’m waiting for a neighbor packet
Gotta wait 4 hours!
Ooof I’m gonna go flock something🎄
Whatcha backing up?
Or is this a Xmas gift?
Your back catalogue of Linux isos?
@midnight oxide If your parser can dump to flat file. Alert.txt shoots data to mesh instantly and news.txt can be pulled over air
If your Python isn’t rusty 😉
The original parser for the cap files is over 10 years old and written in PHP. It populates a mysql database with regions coded alert messages
Dumping out an alert text for one region should be no biggie.
At the time it was the backend for a nationwide sms alert aervice, so it's production quality code.
I think by now CAP is a standard too. There was an older text based Format that got phased out around 2015
The same cap stream is broadcast over eumetsat datacast on eutelsst 13° east
Fun! It’s cool how each system works and the legacy of it all
I still have not been able to replicate neighborhood packet haven’t seen one, it’s in my —export config
MQTT is enabled but I’m not using a soft radio
2.5.16
8 years of data from my backup drive to my new datastore
Yay limited by USB drive speeds
I'm running your bot in a docker container using commit "4d5916df29f32af0aaf6837feb2f7e680d9e449a". The radio I'm connected to is via IP with a node ID of "1136044020". It is enabled to send neighbor info over LoRa, and others within range are as well. The primary channel of this radio is the default public channel, so I don't think it will ever send the neighbor info. It does however have the key for channels that my other radios use for private primary channels. I think those others sending neighbor info is what is triggering the message. I'm attaching the last 1000 lines of my log data for that container.
Hope this helps.
Same error as A-cOrN. I still haven’t been able to recreate it
Its acting like the packet is bad
Have Santa put it on the naughty list, and deal with it after Christmas.
I just sent a pull in I hope handled it
I'll do an update this weekend. I normally take the time to go through the config.template file to make sure my current config.ini isn't missing anything. I don't have that kind of attention span at the moment. 😉
Yup, some new items, nothing major unless you had FEMA alerts I changed that value
Widening the scope for alerts needed it understandable
Nice. I do have them enabled currently.
I had placeholders for all the non text packets and I don’t think the key value I had is real .. I backed off the key value to hopefully stop what I assume is my key error for the neighborhood app
I can’t seem to get the packet out of my node yet
So it was a blind assumption
Interesting it just cropped up
I've noticed it for a bit, but just didn't worry about it. It didn't look like a problem, and just like data that it didn't know what to do with.
The transmit over LoRa option may still be a function only available in the alpha releases of the firmware.
Yea it’s very possible the packet did change somewhere along the line
This was a major change when it happened
(In firmware)
My node from the log data is 2.5.14, but most everything else I have is 2.5.16 or higher.
Merry christmas all!
Should make the bot send merry Christmas on primary :)
Or what ever is the public channel
Optional ofc
Just get it to subscribe to isitchristmas.com
You could already do that with the schedule feature probably.
Yea, Or just a bash file printing a grep of wget on chron >alert.txt
“Santa is snoozing”
I asked for Santa tired from a days work asleep in ham shack listening to radio
Santa snoozing, not santa boozing
DON'T JUDGE SANTA!!! 🤣
new installer out with better embedded stuff. also now adds an option for a meshbot user with no login for service
Patched an issue with fema alerts if the network went down it would alert it failed to get alerts over air
Idea I may implement for myself, but could push up if wanted:
Internal FTP server for File Dropping, as well as parsing.
I own a Trilthic EASyPLUS Encoder/Decoder box that can file-drop Emergenct Alert Details, and with a little built-in FTP server the bot can publish alert information it sends.
Nice! Alert.txt pushes contents on change to mesh and news.txt can pull various ways (using Linux ftp) could be a config setup
There's a package I have used a few times called pyftpdlib that can have it be part of the bot itself. No extra programs needed.
I have heard that some alert systems use ftp I’m not apposed to the idea as much as adding libs the less needed the better.
As the project natively sits in a ftp/scp server do you think a helper bash/chron < python ?
Well, Bash/Chron depends on a specified external FTP program that may or may not exist on whichever platform the bot will be ran on, or could have different FTP libraries that have different configurations that the end user would have to figure out (Example, maybe a custom linux build for a LoRa board comes along that has a custom package system, with a different FTP server than your normal FTPd)
Versus using a python package that
- will be built in, so as long as the package can be pulled from pypi it will work
- is cross platform
- you can do versioning control on in your requirements.txt
- will have the same configuration, and who's config can be built-in to your existing config file
at least that's how I see it
take the load off the end user, make it straightforward and easy. one click, done :3
What if it’s a $10 embedded chip
The ip address of the bot is the ftp but backed by distro bins
you could also telnet to, ssh to scp
Web
It’s like 90% done is why I ask
Fair
Keep an eye on #1302945239689990185 foxbuntu project
@gentle kestrel So I played with the ollama integration today and noticed I did not need to use the ask: or askai command to reach ollama. Also, with ollama enabled the history command was not working. I wasn't paying close enough attention to notice if the command itself was being misinterpreted. I could try to recreate issue tomorrow but just quickly wondering if these were typical.
If DM the bot will just respond yes
Only in channels is the ask/Askai used (still works in dm)
History is a bit limited yes; I’m only keeping like 1-3 last query’s and it’s the last item for inference in the chain model
I stress Google response over historical chat
Follow up questions will stink for the most part
Thanks. Actually, it appears history is no longer working even with ollama disabled in config. Weird, I know it was working before I started playing with ollama. No biggie. Just something I noticed.
It’s a really light function overall yes. It will also not remember over a reboot.
The model query is in https://github.com/SpudGunMan/meshing-around/blob/main/modules/llm.py
actually it looks like i broke something. there are other commands not working. i just tried satpass. time for some logs or a restart
okay thanks
Do you see them on the log?
If things go too badly check config.ini and reset it from the template
In a rare case it can get corrupted
weird. no. nothing in log since i disabled ollama hours ago. yet wx just correctly ran.. hmmmm
Could be wacky mesh conditions my stuff is so condensed I have issues all the time I keep it all in client mute except for the roof
It’s a normal client (likely a solar bot soon)
As for ollama Askai and if no trap it’s disabled
If it fails a call it will display warning
git restore . if goofin
killed the process and restarted but still same. I'm rebooting machine. I think i hurt it trying to run gemma in vm earlier. I know for a fact I asked it to use more ram than physically available. lots of crashes.
Haha nice
One way to tell if the bot is working vs ollama first boot will give Please wait, response could take 30+ seconds. Fund the SysOp's GPU budget!
It’s a placeholder for future needed “please wait”
If your response is under 40 you don’t see it again
But it will always trap on first ollama run
That's clever. I liked that
Update: Everything is working after rebooting entire vm. I just got hit by a huge backlog of responses. I guess the program lost contact with the radio. I wonder if cancelling usb passthrough was a proxmox response to running out of ram. I'm actually okay with not knowing what all crashed. Anywho, bot is back up and I won't be playing with meshllama until I have more capable hardware. Thanks for your help and thanks for this cool tool. also, good reminder to put the bot node in client-mute. I thought about that earlier but never changed it. As far as solar roof nodes. My 40 ah 12v battery is at 75%. The only thing running is a g2 pulling just over half a watt when not Tx. St. louis hasn't had good sun in days. Tomorrow doesn't look promising either. I went with a way overkill battery.
Nice! Welcome glad it’s fun!
Yes it sounds like connectivity to the node disappeared.
The bot will try and reconnect.
A vm could be a few things glad it’s working well now!
Aloha, has anyone tried this: connect a pi4 to Heltec T114v2? is it possible? interface through the usb port? If so, I'm game... 
Any device should work
that's awesome new's - I'm going to try it with a heltec t114v2 usb to pi?
Yup
My loft setup is pi3b+ to a NiceRa via usb. Works well.
I can't wait to try it out! I'll send a
if I succeed 🤙 Mahalo
I'm getting timeouts on TCP running meshtasticd locally, eventually resulting in a crash. I assume serial is better?
That would mean meshtasticD and localhost isn’t working?
I use the API and if it’s can’t find localhost I can’t either
Is meshtasticD running authorized?
(Web client work)
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
yes, the web client works
meshtasticd is running as root
I tried to scrub traffic from an MQTT user that found my BBS within a few minutes of it going up.
What’s logs on meshtasticD
According to the logs it went away
Looks happy to me. https://pastebin.com/JrZS5S5f
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
I tripple checked - the 16:18:04 to 16:19:02 gap is actually in the logs. Not just a copy/paste error.
What’s your hardware, according to the logs the service hiccuped
Pi Zero 2W and a waveshare hat
Word whats the power supply
It was running on USB out of my PC
Something hung up, I would assume the clock stability
Ah nice.
Based on your earlier question I assume I need more than the trickle my PC can supply?