mirror of
https://github.com/SpudGunMan/meshing-around.git
synced 2026-03-28 17:32:36 +01:00
only imposed on `latest` command here also cleaned up imports for rss.py apiThrottleValue = 20/autoBanTimeframe
491 lines
16 KiB
Plaintext
491 lines
16 KiB
Plaintext
#config.ini
|
||
# type can be serial, tcp, or ble
|
||
# port is the serial port to use, commented out will try to auto-detect
|
||
# hostname is the IP/DNS and port for tcp type default is host:4403
|
||
# mac is the MAC address of the device to connect to for ble type
|
||
|
||
[interface]
|
||
type = serial
|
||
port = /dev/ttyACM0
|
||
# port = /dev/ttyUSB0
|
||
# hostname = meshtastic.local
|
||
# mac = 00:11:22:33:44:55
|
||
|
||
# Additional interface for multi radio support
|
||
[interface2]
|
||
enabled = False
|
||
type = serial
|
||
port = /dev/ttyUSB0
|
||
# port = /dev/ttyACM1
|
||
# port = COM1
|
||
# hostname = localhost
|
||
# mac = 00:11:22:33:44:55
|
||
|
||
# example, the third interface would be [interface3] up to 9
|
||
|
||
[general]
|
||
# if False will respond on all channels but the default channel
|
||
respond_by_dm_only = True
|
||
# Allows auto-ping feature in a channel, False forces to 1 ping only
|
||
autoPingInChannel = False
|
||
# defaultChannel is the meshtastic default public channel, e.g. LongFast (if none use -1)
|
||
defaultChannel = 0
|
||
# ignoreDefaultChannel, the bot will ignore the default channel set above
|
||
ignoreDefaultChannel = False
|
||
# ignoreChannels is a comma separated list of channels to ignore, e.g. 4,5
|
||
ignoreChannels =
|
||
# require ! to be the first character in a command
|
||
cmdBang = False
|
||
# require explicit command, the message will only be processed if it starts with a command word
|
||
explicitCmd = True
|
||
# list of favorite nodes numbers ex: 2813308004,4258675309 used by script/addFav.py
|
||
favoriteNodeList =
|
||
|
||
# motd is reset to this value on boot
|
||
motd = Thanks for using MeshBOT! Have a good day!
|
||
welcome_message = MeshBot, here for you like a friend who is not. Try sending: ping @foo or, cmd
|
||
|
||
# whoami
|
||
whoami = True
|
||
|
||
# enable or disable the Joke module
|
||
DadJokes = True
|
||
DadJokesEmoji = False
|
||
|
||
# enable or disable the Solar module
|
||
spaceWeather = True
|
||
|
||
# enable or disable the RSS module, and truncate the story
|
||
rssEnable = True
|
||
rssFeedURL = http://www.hackaday.com/rss.xml,http://rss.slashdot.org/Slashdot/slashdotMain,http://www.reddit.com/r/meshtastic/.rss
|
||
# RSS feed names must match the order of the URLs above, default is used if no match
|
||
rssFeedNames = default,slashdot,mesh
|
||
rssMaxItems = 3
|
||
rssTruncate = 100
|
||
# enable or disable the headline command which uses NewsAPI.org key at https://newsapi.org/register
|
||
enableNewsAPI = False
|
||
newsAPI_KEY =
|
||
newsAPIregion = us
|
||
# could also be 'relevancy' or 'popularity' or 'publishedAt'
|
||
sort_by = relevancy
|
||
|
||
# enable or disable the wikipedia search module
|
||
wikipedia = True
|
||
# Use local Kiwix server instead of online Wikipedia
|
||
# Set to False to use online Wikipedia, or provide Kiwix server URL
|
||
useKiwixServer = False
|
||
# Kiwix server URL (e.g., http://127.0.0.1:8080)
|
||
kiwixURL = http://127.0.0.1:8080
|
||
# Kiwix library name (e.g., wikipedia_en_100_nopic_2025-09)
|
||
kiwixLibraryName = wikipedia_en_100_nopic_2025-09
|
||
|
||
# Enable ollama LLM see more at https://ollama.com
|
||
ollama = False
|
||
# Ollama model to use (defaults to gemma3:270m) gemma2 is good for older SYSTEM prompt
|
||
# ollamaModel = gemma3:latest
|
||
# ollamaModel = gemma2:2b
|
||
# server instance to use (defaults to local machine install)
|
||
ollamaHostName = http://localhost:11434
|
||
|
||
# Produce LLM replies to messages that aren't commands?
|
||
# If False, the LLM only replies to the "ask:" and "askai" commands.
|
||
llmReplyToNonCommands = True
|
||
# if True, the input is sent raw to the LLM, if False uses SYSTEM prompt
|
||
rawLLMQuery = True
|
||
|
||
# Enable Wikipedia/Kiwix integration with LLM for RAG (Retrieval Augmented Generation)
|
||
# When enabled, LLM will automatically search Wikipedia/Kiwix and include context in responses
|
||
llmUseWikiContext = False
|
||
|
||
# Use OpenWebUI instead of direct Ollama API (enables advanced RAG features)
|
||
useOpenWebUI = False
|
||
# OpenWebUI server URL (e.g., http://localhost:3000)
|
||
openWebUIURL = http://localhost:3000
|
||
# OpenWebUI API key/token (required when useOpenWebUI is True)
|
||
openWebUIAPIKey =
|
||
|
||
# StoreForward Enabled and Limits
|
||
StoreForward = True
|
||
StoreLimit = 3
|
||
reverseSF = False
|
||
|
||
# history command
|
||
enableCmdHistory = True
|
||
# command history ignore list ex: 2813308004,4258675309
|
||
lheardCmdIgnoreNodes =
|
||
|
||
# 24 hour clock
|
||
zuluTime = False
|
||
# wait time for URL requests
|
||
urlTimeout = 15
|
||
|
||
# logging to file of the non Bot messages
|
||
LogMessagesToFile = False
|
||
# Logging of system messages to file
|
||
SyslogToFile = True
|
||
# logging level for the bot (DEBUG, INFO, WARNING, ERROR, CRITICAL)
|
||
sysloglevel = DEBUG
|
||
# Number of log files to keep in days, 0 to keep all
|
||
log_backup_count = 32
|
||
|
||
#Do not retry enabling interface if it fails, just exit to let OS restart the bot
|
||
dont_retry_disconnect = False
|
||
|
||
#echo command, will echo back your message as the bot
|
||
enableEcho = False
|
||
# command will only echo 1:1 if sent on this channel, otherwise it will prepend @yourname
|
||
echoChannel = 9
|
||
|
||
[emergencyHandler]
|
||
# enable or disable the emergency response handler
|
||
enabled = False
|
||
# channel to send a message to when the emergency handler is triggered
|
||
alert_channel = 2
|
||
alert_interface = 1
|
||
|
||
[sentry]
|
||
# detect anyone close to the bot
|
||
SentryEnabled = True
|
||
# device interface and channel to send the alert message to
|
||
SentryInterface = 1
|
||
SentryChannel = 2
|
||
emailSentryAlerts = False
|
||
# Enable detection sensor alert, requires external GPIO sensor connected to node
|
||
detectionSensorAlert = False
|
||
|
||
# list of ignored nodes numbers ex: 2813308004,4258675309
|
||
sentryIgnoreList =
|
||
# list of watched nodes numbers ex: 2813308004,4258675309
|
||
sentryWatchList =
|
||
|
||
# radius in meters to detect someone close to the bot
|
||
SentryRadius = 100
|
||
# holdoff time multiplied by seconds(20) of the watchdog
|
||
SentryHoldoff = 9
|
||
|
||
# Enable running external shell command when sentry alert is triggered
|
||
cmdShellSentryAlerts = False
|
||
# External shell command to run when sentry alert is triggered
|
||
sentryAlertNear = sentry_alert_near.sh
|
||
sentryAlertAway = sentry_alert_away.sh
|
||
|
||
# HighFlying Node alert
|
||
highFlyingAlert = True
|
||
# Altitude in meters to trigger the alert
|
||
highFlyingAlertAltitude = 2000
|
||
# check with OpenSkyNetwork if highfly detected for aircraft
|
||
highflyOpenskynetwork = True
|
||
# Channel to send Alert when the high flying node is detected
|
||
highFlyingAlertInterface = 1
|
||
# to disable OTA alert set to unused channel like 9
|
||
highFlyingAlertChannel = 2
|
||
# list of nodes numbers to ignore high flying alert ex: 2813308004,4258675309
|
||
highFlyingIgnoreList =
|
||
|
||
[bbs]
|
||
enabled = True
|
||
# list of banned nodes numbers ex: 2813308004,4258675309
|
||
bbs_ban_list =
|
||
# list of admin nodes numbers ex: 2813308004,4258675309
|
||
bbs_admin_list =
|
||
# enable bbs synchronization with other nodes
|
||
bbslink_enabled = False
|
||
# list of whitelisted nodes numbers ex: 2813308004,4258675309 empty list allows all
|
||
bbslink_whitelist =
|
||
# enable API script access (increases disk i/o)
|
||
bbsAPI_enabled = False
|
||
|
||
# location module
|
||
[location]
|
||
enabled = True
|
||
lat = 48.50
|
||
lon = -123.0
|
||
fuzzConfigLocation = True
|
||
fuzzItAll = False
|
||
|
||
# Default to metric units rather than imperial
|
||
useMetric = False
|
||
|
||
# repeaterList lookup location (rbook / artsci / False)
|
||
repeaterLookup = rbook
|
||
|
||
# Satalite Pass Prediction
|
||
# Register for free API https://www.n2yo.com/login/ personal data page at bottom 'Are you developer?'
|
||
n2yoAPIKey =
|
||
# NORAD list https://www.n2yo.com/satellites/
|
||
satList = 25544,7530
|
||
|
||
# use Open-Meteo API for weather data not NOAA useful for non US locations
|
||
UseMeteoWxAPI = False
|
||
|
||
# NOAA weather forecast days
|
||
NOAAforecastDuration = 3
|
||
# number of weather alerts to display
|
||
NOAAalertCount = 2
|
||
|
||
# NOAA Weather EAS Alert Broadcast
|
||
wxAlertBroadcastEnabled = False
|
||
# Enable Ignore any message that includes following word list
|
||
ignoreEASenable = False
|
||
ignoreEASwords = test,advisory
|
||
# Add extra location to the weather alert
|
||
enableExtraLocationWx = False
|
||
|
||
# NOAA Coastal Data Enable NOAA Coastal Waters Forecasts and Tide
|
||
coastalEnabled = False
|
||
# Find the correct costal weather directory at https://tgftp.nws.noaa.gov/data/forecasts/marine/coastal/
|
||
# pz = Puget Sound, ph = Honolulu HI, gm = Florida Keys, pk = Alaska
|
||
# this map can help https://www.weather.gov/marine select location and then look at the 'Forecast-by-Zone Map'
|
||
# myCoastalZone is the .txt file with the forecast data
|
||
myCoastalZone = https://tgftp.nws.noaa.gov/data/forecasts/marine/coastal/pz/pzz135.txt
|
||
# number of data points to return, default is 3
|
||
coastalForecastDays = 3
|
||
|
||
# NOAA USGS Hydrology river identifiers, LID or USGS ID https://waterdata.usgs.gov 12484500 Columbia River at The Dalles, OR
|
||
# for multiple rivers use comma separated list e.g. 12484500,14105700
|
||
riverList =
|
||
|
||
# USA FEMA IPAWS alerts
|
||
ipawsAlertEnabled = True
|
||
# comma separated list of FIPS codes to trigger local alert. find your FIPS codes at https://en.wikipedia.org/wiki/Federal_Information_Processing_Standard_state_code
|
||
myFIPSList = 57,58,53
|
||
# find your SAME https://www.weather.gov/nwr/counties comma separated list of SAME code to further refine local alert.
|
||
mySAMEList = 053029,053073
|
||
# Enable Ignore, headline that includes following word list
|
||
ignoreFEMAenable = True
|
||
ignoreFEMAwords = test,exercise
|
||
|
||
# USGS Volcano alerts Enable USGS Volcano Alert Broadcast
|
||
volcanoAlertBroadcastEnabled = False
|
||
# Enable Ignore any message that includes following word list
|
||
ignoreUSGSEnable = False
|
||
ignoreUSGSWords = test,advisory
|
||
|
||
# Use Germany/DE Alert Broadcast Data
|
||
enableDEalerts = False
|
||
# comma separated list of regional codes trigger local alert.
|
||
# find your regional codet at https://www.xrepository.de/api/xrepository/urn:de:bund:destatis:bevoelkerungsstatistik:schluessel:rs_2021-07-31/download/Regionalschl_ssel_2021-07-31.json
|
||
myRegionalKeysDE = 110000000000,120510000000
|
||
|
||
# Alerts are sent to the emergency_handler interface and channel duplicate messages are send here if set
|
||
eAlertBroadcastCh =
|
||
|
||
# CheckList Checkin/Checkout
|
||
[checklist]
|
||
enabled = False
|
||
checklist_db = data/checklist.db
|
||
reverse_in_out = False
|
||
# Auto approve new checklists
|
||
auto_approve = True
|
||
# Check-in reminder interval is 5min
|
||
# Checkin broadcast interface and channel is emergency_handler interface and channel
|
||
|
||
# Inventory and Point of Sale System
|
||
[inventory]
|
||
enabled = False
|
||
inventory_db = data/inventory.db
|
||
# Set to True to disable penny precision and round to nickels (USA cash sales)
|
||
# When True: cash sales round down, taxed sales round up to nearest $0.05
|
||
# When False (default): normal penny precision ($0.01)
|
||
disable_penny = False
|
||
|
||
[qrz]
|
||
# QRZ Hello to new nodes with message
|
||
enabled = False
|
||
qrz_db = data/qrz.db
|
||
qrz_hello_string = "MeshBot says Hello! DM for more info."
|
||
# Training mode will not send the hello message to new nodes
|
||
training = True
|
||
|
||
# repeater module
|
||
[repeater]
|
||
enabled = False
|
||
# list of repeater channels ex: 2,3 which will be consumed
|
||
# and rebroadcasted on the same channel on the other device/node/interface
|
||
# with great power comes great responsibility, danger could be lurking in use of this feature
|
||
# if you have the two nodes on the same radio configurations, you could create a feedback loop
|
||
repeater_channels =
|
||
|
||
[scheduler]
|
||
# enable or disable the scheduler module
|
||
enabled = False
|
||
# interface to send the message to
|
||
interface = 1
|
||
# channel to send the message to
|
||
channel = 2
|
||
message = "MeshBot says Hello! DM for more info."
|
||
# enable overides the above and uses the motd as the message
|
||
schedulerMotd = False
|
||
# value can be min,hour,day,mon,tue,wed,thu,fri,sat,sun.
|
||
# value can also be 'joke' (min/interval), 'weather' (time/day), 'link' (hour/interval) for special auto messages
|
||
# or 'news' (hour/interval), 'readrss' (hour/interval), 'mwx' (time/day), 'sysinfo' (hour/interval),
|
||
# 'tide' (time/day), 'solar' (time/day) for automated information broadcasts, matching module needs enabled!
|
||
# 'custom' for module/scheduler.py custom schedule examples
|
||
value =
|
||
# interval to use when time is not set (e.g. every 2 days)
|
||
interval =
|
||
# time of day in 24:00 hour format when value is 'day' and interval is not set
|
||
time =
|
||
|
||
[radioMon]
|
||
# dx cluster `dx` command
|
||
dxspotter_enabled = True
|
||
|
||
# alerts in this module use the following interface and channel
|
||
sigWatchBroadcastInterface = 1
|
||
# broadcast channel can also be a comma separated list of channels
|
||
sigWatchBroadcastCh = 2
|
||
|
||
# using Hamlib rig control will monitor and alert on channel use
|
||
enabled = False
|
||
rigControlServerAddress = 127.0.0.1:4532
|
||
# minimum SNR as reported by radio via hamlib
|
||
signalDetectionThreshold = -10
|
||
# hold time for high SNR
|
||
signalHoldTime = 10
|
||
# the following are combined to reset the monitor
|
||
signalCooldown = 5
|
||
signalCycleLimit = 5
|
||
|
||
# Enable VOX detection using default input
|
||
voxDetectionEnabled = False
|
||
# description to use in the alert message
|
||
voxDescription = VOX
|
||
|
||
useLocalVoxModel = False
|
||
# default language for VOX detection
|
||
voxLanguage = en-us
|
||
# sound.card input device to use for VOX detection, 'default' uses system default
|
||
voxInputDevice = default
|
||
# "hey chirpy"
|
||
voxOnTrapList = True
|
||
voxTrapList = chirpy
|
||
# allow use of 'weather' and 'joke' commands via VOX
|
||
voxEnableCmd = True
|
||
|
||
# Meshages Text-to-Speech (TTS) for incoming messages and DM
|
||
meshagesTTS = False
|
||
ttsChannels = 2
|
||
|
||
# WSJT-X UDP monitoring - listens for decode messages from WSJT-X, FT8/FT4/WSPR etc.
|
||
wsjtxDetectionEnabled = False
|
||
# UDP address and port where WSJT-X broadcasts (default: 127.0.0.1:2237)
|
||
wsjtxUdpServerAddress = 127.0.0.1:2237
|
||
# Comma-separated list of callsigns to watch (empty = all callsigns)
|
||
wsjtxWatchedCallsigns =
|
||
|
||
# JS8Call TCP monitoring - connects to JS8Call API for message forwarding
|
||
js8callDetectionEnabled = False
|
||
# TCP address and port where JS8Call API listens (default: 127.0.0.1:2442)
|
||
js8callServerAddress = 127.0.0.1:2442
|
||
# Comma-separated list of callsigns to watch (empty = all callsigns)
|
||
js8callWatchedCallsigns =
|
||
|
||
|
||
[fileMon]
|
||
filemon_enabled = False
|
||
# text file to monitor for changes
|
||
file_path = alert.txt
|
||
# channel to send the message to can be 2,3 multiple channels comma separated
|
||
broadcastCh = 2
|
||
|
||
# news command will return the contents of a text file
|
||
enable_read_news = False
|
||
news_file_path = ../data/news.txt
|
||
# only return a single random line from the news file
|
||
news_random_line = False
|
||
|
||
# enable the use of exernal shell commands, this enables some data in `sysinfo`
|
||
enable_runShellCmd = False
|
||
# if runShellCmd and you think it is safe to allow the x: command to run
|
||
# direct shell command handler the x: command in DMs
|
||
allowXcmd = False
|
||
# Enable 2 factor authentication for x: commands
|
||
twoFactor_enabled = True
|
||
# time in seconds to wait for the correct 2FA answer
|
||
twoFactor_timeout = 100
|
||
|
||
[smtp]
|
||
# enable or disable the SMTP module
|
||
enableSMTP = False
|
||
# enable or disable the IMAP module for inbound email
|
||
enableImap = False
|
||
# list of Sysop Emails seperate with commas
|
||
sysopEmails =
|
||
SMTP_SERVER = smtp.gmail.com
|
||
# 587 SMTP over TLS/STARTTLS, 25 legacy SMTP, 465 SMTP over SSL
|
||
SMTP_PORT = 587
|
||
# Sender email: be mindful of public access, don't use your personal email
|
||
FROM_EMAIL = none@gmail.com
|
||
SMTP_AUTH = True
|
||
SMTP_USERNAME = none@gmail.com
|
||
SMTP_PASSWORD = none
|
||
EMAIL_SUBJECT = Meshtastic✉️
|
||
|
||
# IMAP not implimented yet
|
||
IMAP_SERVER = imap.gmail.com
|
||
# 993 IMAP over TLS/SSL, 143 legacy IMAP
|
||
IMAP_PORT = 993
|
||
# IMAP login usually same as SMTP
|
||
IMAP_USERNAME = none@gmail.com
|
||
IMAP_PASSWORD = none
|
||
IMAP_FOLDER = inbox
|
||
|
||
[games]
|
||
# if hop limit for the user exceeds this value, the message will be dropped
|
||
game_hop_limit = 5
|
||
disable_emojis = False
|
||
# enable or disable the games module(s)
|
||
dopeWars = True
|
||
lemonade = True
|
||
blackjack = True
|
||
videopoker = True
|
||
mastermind = True
|
||
golfsim = True
|
||
hangman = True
|
||
hamtest = True
|
||
tictactoe = True
|
||
wordOfTheDay = True
|
||
|
||
# enable or disable the quiz game module questions are in data/quiz.json
|
||
quiz = False
|
||
|
||
# enable or disable the survey game module questions are in data/survey/*_survey.json
|
||
survey = False
|
||
# this is the default survey to use when command givcen, from data/survey/example_survey.json
|
||
defaultSurvey = example
|
||
# Whether to record user ID in responses
|
||
surveyRecordID=True
|
||
# Whether to record location on start of survey
|
||
surveyRecordLocation=True
|
||
|
||
[messagingSettings]
|
||
# delay in seconds for response to avoid message collision /throttling
|
||
responseDelay = 2.2
|
||
# delay in seconds for splits in messages to avoid message collision /throttling
|
||
splitDelay = 2.5
|
||
# message chunk size in charcters, chunkr allows exceeding by 3 characters
|
||
MESSAGE_CHUNK_SIZE = 160
|
||
# Request Acknowledgement of message OTA
|
||
wantAck = False
|
||
# Max limit buffer for radio testing in bytes
|
||
maxBuffer = 200
|
||
#Enable Extra logging of Hop count data
|
||
enableHopLogs = False
|
||
# Noisy Node Telemetry Logging and packet threshold
|
||
noisyNodeLogging = False
|
||
noisyTelemetryLimit = 5
|
||
logMetaStats = True
|
||
# Enable detailed packet logging all packets
|
||
DEBUGpacket = False
|
||
# metaPacket detailed logging, the filter negates the port ID
|
||
debugMetadata = False
|
||
metadataFilter = TELEMETRY_APP,POSITION_APP
|
||
# Enable or disable automatic banning of nodes
|
||
autoBanEnabled = False
|
||
# Number of offenses before auto-ban
|
||
autoBanThreshold = 5
|
||
# Throttle value for API requests no ban_hammer
|
||
apiThrottleValue = 20
|
||
# Timeframe for offenses (in seconds)
|
||
autoBanTimeframe = 3600 |