KC9UZR

Meshing Around Config US

Jan 2nd, 2026 (edited)
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
YAML 17.29 KB | None | 0 0
  1. #config.ini
  2. # type can be serial, tcp, or ble
  3. # port is the serial port to use, commented out will try to auto-detect
  4. # hostname is the IP/DNS and port for tcp type default is host:4403
  5. # mac is the MAC address of the device to connect to for ble type
  6.  
  7. [interface]
  8. type = tcp
  9. port = 4403
  10. # port = /dev/ttyUSB0
  11. hostname = 192.168.1.53
  12. # mac = 00:11:22:33:44:55
  13.  
  14. # Additional interface for multi radio support
  15. [interface2]
  16. enabled = False
  17. type = serial
  18. port = /dev/ttyUSB0
  19. # port = /dev/ttyACM1
  20. # port = COM1
  21. # hostname = localhost
  22. # mac = 00:11:22:33:44:55
  23.  
  24. # example, the third interface would be [interface3] up to 9
  25.  
  26. [general]
  27. # if False will respond on all channels but the default channel
  28. respond_by_dm_only = True
  29. # Allows auto-ping feature in a channel, False forces to 1 ping only
  30. autoPingInChannel = False
  31. # defaultChannel is the meshtastic default public channel, e.g. LongFast (if none use -1)
  32. defaultChannel = 0
  33. # ignoreDefaultChannel, the bot will ignore the default channel set above
  34. ignoreDefaultChannel = False
  35. # ignoreChannels is a comma separated list of channels to ignore, e.g. 4,5
  36. ignoreChannels =
  37. # require ! to be the first character in a command
  38. cmdBang = False
  39. # require explicit command, the message will only be processed if it starts with a command word
  40. explicitCmd = False
  41. # list of favorite nodes numbers ex: 2813308004,4258675309 used by script/addFav.py
  42. favoriteNodeList =
  43.  
  44. # motd is reset to this value on boot
  45. motd = Welcome To KC9UZR LLM Bot
  46. welcome_message = LLM Bot, For Bot Menu: ping @foo or, cmd
  47.  
  48. # whoami
  49. whoami = True
  50.  
  51. # enable or disable the Joke module
  52. DadJokes = False
  53. DadJokesEmoji = False
  54.  
  55. # enable or disable the Solar module
  56. spaceWeather = True
  57.  
  58. # enable or disable the RSS module, and truncate the story
  59. rssEnable = True
  60. rssFeedURL = http://www.hackaday.com/rss.xml,http://rss.slashdot.org/Slashdot/slashdotMain,http://www.reddit.com/r/meshtastic/.rss
  61. # RSS feed names must match the order of the URLs above, default is used if no match
  62. rssFeedNames = default,slashdot,mesh
  63. rssMaxItems = 3
  64. rssTruncate = 100
  65. # enable or disable the 'latest' command which uses NewsAPI.org key at https://newsapi.org/register
  66. enableNewsAPI = True
  67. newsAPI_KEY =
  68. newsAPIregion = us
  69. # could also be 'relevancy' or 'popularity' or 'publishedAt'
  70. sort_by = relevancy
  71.  
  72. # enable or disable the wikipedia search module
  73. wikipedia = True
  74. # Use local Kiwix server instead of online Wikipedia
  75. # Set to False to use online Wikipedia, or provide Kiwix server URL
  76. useKiwixServer = False
  77. # Kiwix server URL (e.g., http://127.0.0.1:8080)
  78. kiwixURL = http://127.0.0.1:8080
  79. # Kiwix library name (e.g., wikipedia_en_100_nopic_2025-09)
  80. kiwixLibraryName = wikipedia_en_100_nopic_2025-09
  81.  
  82. # Enable LLM local Ollama integration, set true for any LLM support
  83. ollama = True
  84. # Ollama server instance to use (defaults to local machine install)
  85. ollamaHostName = http://localhost:11434
  86. # Use OpenWebUI instead of direct Ollama API / still leave ollama = True
  87. useOpenWebUI = False
  88. openWebUIURL = http://localhost:3000
  89. # OpenWebUI API key/token (required when useOpenWebUI is True)
  90. openWebUIAPIKey =
  91.  
  92. # Ollama model to use (defaults to gemma3:270m) gemma2 is good for older SYSTEM prompt
  93. # ollamaModel is used for both Ollama and OpenWebUI when useOpenWebUI its just the model name
  94. # ollamaModel = gemma3:latest
  95. # ollamaModel = gemma2:2b
  96. # if True, the query is sent raw to the LLM, if False uses internal SYSTEM prompt
  97. rawLLMQuery = True
  98.  
  99. # If False, the LLM only replies to the "ask:" and "askai" commands. otherwise DM's automatically go to LLM
  100. llmReplyToNonCommands = True
  101. # Enable Wikipedia/Kiwix integration with LLM for RAG (Retrieval Augmented Generation)
  102. # When enabled, LLM will automatically search Wikipedia/Kiwix and include context in responses
  103. llmUseWikiContext = True
  104.  
  105. # StoreForward Enabled and Limits
  106. StoreForward = True
  107. StoreLimit = 5
  108. reverseSF = False
  109.  
  110. # history command
  111. enableCmdHistory = False
  112. # command history ignore list ex: 2813308004,4258675309
  113. lheardCmdIgnoreNodes =
  114.  
  115. # 24 hour clock
  116. zuluTime = False
  117. # wait time for URL requests
  118. urlTimeout = 15
  119.  
  120. # logging to file of the non Bot messages
  121. LogMessagesToFile = True
  122. # Logging of system messages to file
  123. SyslogToFile = True
  124. # logging level for the bot (DEBUG, INFO, WARNING, ERROR, CRITICAL)
  125. sysloglevel = DEBUG
  126. # Number of log files to keep in days, 0 to keep all
  127. log_backup_count = 32
  128.  
  129. #Do not retry enabling interface if it fails, just exit to let OS restart the bot
  130. dont_retry_disconnect = False
  131.  
  132. #echo command, will echo back your message as the bot
  133. enableEcho = False
  134. # command will only echo 1:1 if sent on this channel, otherwise it will prepend @yourname
  135. echoChannel = 9
  136.  
  137. [emergencyHandler]
  138. # enable or disable the emergency response handler
  139. enabled = False
  140. # channel to send a message to when the emergency handler is triggered
  141. alert_channel = 2
  142. alert_interface = 1
  143.  
  144. [sentry]
  145. # detect anyone close to the bot
  146. SentryEnabled = False
  147. # device interface and channel to send the alert message to
  148. SentryInterface = 1
  149. SentryChannel = 2
  150. emailSentryAlerts = False
  151. # Enable detection sensor alert, requires external GPIO sensor connected to node
  152. detectionSensorAlert = False
  153.  
  154. # list of ignored nodes numbers ex: 2813308004,4258675309
  155. sentryIgnoreList =
  156. # list of watched nodes numbers ex: 2813308004,4258675309
  157. sentryWatchList =
  158.  
  159. # radius in meters to detect someone close to the bot
  160. SentryRadius = 100
  161. # holdoff time multiplied by seconds(20) of the watchdog
  162. SentryHoldoff = 9
  163.  
  164. # Enable running external shell command when sentry alert is triggered
  165. cmdShellSentryAlerts = False
  166. # External shell command to run when sentry alert is triggered
  167. sentryAlertNear = sentry_alert_near.sh
  168. sentryAlertAway = sentry_alert_away.sh
  169.  
  170. # HighFlying Node alert
  171. highFlyingAlert = True
  172. # Altitude in meters to trigger the alert
  173. highFlyingAlertAltitude = 2000
  174. # check with OpenSkyNetwork if highfly detected for aircraft
  175. highflyOpenskynetwork = True
  176. # Channel to send Alert when the high flying node is detected
  177. highFlyingAlertInterface = 1
  178. # to disable OTA alert set to unused channel like 9
  179. highFlyingAlertChannel = 2
  180. # list of nodes numbers to ignore high flying alert ex: 2813308004,4258675309
  181. highFlyingIgnoreList =
  182.  
  183. [bbs]
  184. enabled = False
  185. # list of banned nodes numbers ex: 2813308004,4258675309
  186. bbs_ban_list =
  187. # list of admin nodes numbers ex: 2813308004,4258675309
  188. bbs_admin_list =
  189. # enable bbs synchronization with other nodes
  190. bbslink_enabled = False
  191. # list of whitelisted nodes numbers ex: 2813308004,4258675309 empty list allows all
  192. bbslink_whitelist =
  193. # enable API script access (increases disk i/o)
  194. bbsAPI_enabled = False
  195.  
  196. # location module
  197. [location]
  198. enabled = True
  199. lat = 38.8484
  200. lon = -90.0762
  201. fuzzConfigLocation = True
  202. fuzzItAll = False
  203.  
  204. # Default to metric units rather than imperial
  205. useMetric = False
  206.  
  207. # repeaterList lookup location (rbook / artsci / False)
  208. repeaterLookup = rbook
  209.  
  210. # Satalite Pass Prediction
  211. # Register for free API https://www.n2yo.com/login/ personal data page at bottom 'Are you developer?'
  212. n2yoAPIKey =
  213. # NORAD list https://www.n2yo.com/satellites/
  214. satList = 25544,7530
  215.  
  216. # use Open-Meteo API for weather data not NOAA useful for non US locations
  217. UseMeteoWxAPI = False
  218.  
  219. # NOAA weather forecast days
  220. NOAAforecastDuration = 3
  221. # number of weather alerts to display
  222. NOAAalertCount = 2
  223.  
  224. # NOAA Weather EAS Alert Broadcast
  225. wxAlertBroadcastEnabled = True
  226. #  Enable Ignore any message that includes following word list
  227. ignoreEASenable = False
  228. ignoreEASwords = test,advisory
  229. # Add extra location to the weather alert
  230. enableExtraLocationWx = False
  231.  
  232. # NOAA Coastal Data Enable NOAA Coastal Waters Forecasts and Tide
  233. coastalEnabled = False
  234. # Find the correct costal weather directory at https://tgftp.nws.noaa.gov/data/forecasts/marine/coastal/
  235. # pz = Puget Sound, ph = Honolulu HI, gm = Florida Keys, pk = Alaska
  236. # this map can help https://www.weather.gov/marine select location and then look at the 'Forecast-by-Zone Map'
  237. # myCoastalZone is the .txt file with the forecast data
  238. myCoastalZone = https://tgftp.nws.noaa.gov/data/forecasts/marine/coastal/pz/pzz135.txt
  239. # number of data points to return, default is 3
  240. coastalForecastDays = 3
  241.  
  242. # NOAA USGS Hydrology river identifiers, LID or USGS ID https://waterdata.usgs.gov 12484500 Columbia River at The Dalles, OR
  243. # for multiple rivers use comma separated list e.g. 12484500,14105700
  244. riverList =
  245.  
  246. # USA FEMA IPAWS alerts
  247. ipawsAlertEnabled = True
  248. # 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
  249. myFIPSList = 57,58,53
  250. # find your SAME https://www.weather.gov/nwr/counties comma separated list of SAME code to further refine local alert.
  251. mySAMEList = 053029,053073
  252. #  Enable Ignore, headline that includes following word list
  253. ignoreFEMAenable = True
  254. ignoreFEMAwords = test,exercise
  255.  
  256. # USGS Volcano alerts Enable USGS Volcano Alert Broadcast
  257. volcanoAlertBroadcastEnabled = False
  258. # Enable Ignore any message that includes following word list
  259. ignoreUSGSEnable = False
  260. ignoreUSGSWords = test,advisory
  261.  
  262. # Use Germany/DE Alert Broadcast Data
  263. enableDEalerts = False
  264. # comma separated list of regional codes trigger local alert.
  265. # 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
  266. myRegionalKeysDE = 110000000000,120510000000
  267.  
  268. # Alerts are sent to the emergency_handler interface and channel duplicate messages are send here if set
  269. eAlertBroadcastCh =
  270.  
  271. # CheckList Checkin/Checkout
  272. [checklist]
  273. enabled = False
  274. checklist_db = data/checklist.db
  275. reverse_in_out = False
  276. # Auto approve new checklists
  277. auto_approve = True
  278. # Check-in reminder interval is 5min
  279. # Checkin broadcast interface and channel is emergency_handler interface and channel
  280.  
  281. # Inventory and Point of Sale System
  282. [inventory]
  283. enabled = False
  284. inventory_db = data/inventory.db
  285. # Set to True to disable penny precision and round to nickels (USA cash sales)
  286. # When True: cash sales round down, taxed sales round up to nearest $0.05
  287. # When False (default): normal penny precision ($0.01)
  288. disable_penny = False
  289.  
  290. [qrz]
  291. # QRZ Hello to new nodes with message
  292. enabled = False
  293. qrz_db = data/qrz.db
  294. qrz_hello_string = "LLM MeshBot says Hello! DM for more info."
  295. # Training mode will not send the hello message to new nodes
  296. training = True
  297.  
  298. # repeater module
  299. [repeater]
  300. enabled = False
  301. # list of repeater channels ex: 2,3 which will be consumed
  302. # and rebroadcasted on the same channel on the other device/node/interface
  303. # with great power comes great responsibility, danger could be lurking in use of this feature
  304. # if you have the two nodes on the same radio configurations, you could create a feedback loop
  305. repeater_channels =
  306.  
  307. [scheduler]
  308. # enable or disable the scheduler module
  309. enabled = False
  310. # interface to send the message to
  311. interface = 1
  312. # channel to send the message to
  313. channel = 2
  314. message = "MeshBot says Hello! DM for more info."
  315. # enable overides the above and uses the motd as the message
  316. schedulerMotd = False
  317. # value can be min,hour,day,mon,tue,wed,thu,fri,sat,sun.
  318. # value can also be 'joke' (min/interval), 'weather' (time/day), 'link' (hour/interval) for special auto messages
  319. # or 'news' (hour/interval), 'readrss' (hour/interval), 'mwx' (time/day), 'sysinfo' (hour/interval),
  320. # 'tide' (time/day), 'solar' (time/day) for automated information broadcasts, matching module needs enabled!
  321. # 'custom' for module/scheduler.py custom schedule examples
  322. value =
  323. # interval to use when time is not set (e.g. every 2 days)
  324. interval =
  325. # time of day in 24:00 hour format when value is 'day' and interval is not set
  326. # Process run :00,:20,:40 try and vary the 20 minute offsets to avoid collision
  327. time =
  328.  
  329. [radioMon]
  330. # dx cluster `dx` command
  331. dxspotter_enabled = True
  332.  
  333. # alerts in this module use the following interface and channel
  334. sigWatchBroadcastInterface = 1
  335. # broadcast channel can also be a comma separated list of channels
  336. sigWatchBroadcastCh = 2
  337.  
  338. # using Hamlib rig control will monitor and alert on channel use
  339. enabled = False
  340. rigControlServerAddress = 127.0.0.1:4532
  341. # minimum SNR as reported by radio via hamlib
  342. signalDetectionThreshold = -10
  343. # hold time for high SNR
  344. signalHoldTime = 10
  345. # the following are combined to reset the monitor
  346. signalCooldown = 5
  347. signalCycleLimit = 5
  348.  
  349. # Enable VOX detection using default input
  350. voxDetectionEnabled = False
  351. # description to use in the alert message
  352. voxDescription = VOX
  353.  
  354. useLocalVoxModel = False
  355. # default language for VOX detection
  356. voxLanguage = en-us
  357. # sound.card input device to use for VOX detection, 'default' uses system default
  358. voxInputDevice = default
  359. # "hey chirpy"
  360. voxOnTrapList = True
  361. voxTrapList = chirpy
  362. # allow use of 'weather' and 'joke' commands via VOX
  363. voxEnableCmd = True
  364.  
  365. # Meshages Text-to-Speech (TTS) for incoming messages and DM
  366. meshagesTTS = False
  367. ttsChannels = 2
  368.  
  369. # WSJT-X UDP monitoring - listens for decode messages from WSJT-X, FT8/FT4/WSPR etc.
  370. wsjtxDetectionEnabled = False
  371. # UDP address and port where WSJT-X broadcasts (default: 127.0.0.1:2237)
  372. wsjtxUdpServerAddress = 127.0.0.1:2237
  373. # Comma-separated list of callsigns to watch (empty = all callsigns)
  374. wsjtxWatchedCallsigns =
  375.  
  376. # JS8Call TCP monitoring - connects to JS8Call API for message forwarding
  377. js8callDetectionEnabled = False
  378. # TCP address and port where JS8Call API listens (default: 127.0.0.1:2442)
  379. js8callServerAddress = 127.0.0.1:2442
  380. # Comma-separated list of callsigns to watch (empty = all callsigns)
  381. js8callWatchedCallsigns =
  382.  
  383.  
  384. [fileMon]
  385. filemon_enabled = False
  386. # text file to monitor for changes
  387. file_path = alert.txt
  388. # channel to send the message to can be 2,3 multiple channels comma separated
  389. broadcastCh = 2
  390.  
  391. # news  command will return the contents of a text file
  392. enable_read_news = False
  393. news_file_path = ../data/news.txt
  394. # only return a single random (head)line from the news file
  395. news_random_line = False
  396. # only return random news 'block' (seprated by two newlines) randomly (precidence over news_random_line)
  397. news_block_mode = True
  398.  
  399. # enable the use of exernal shell commands, this enables some data in `sysinfo`
  400. enable_runShellCmd = False
  401. # if runShellCmd and you think it is safe to allow the x: command to run
  402. # direct shell command handler the x: command in DMs
  403. allowXcmd = False
  404. # Enable 2 factor authentication for x: commands
  405. twoFactor_enabled = True
  406. # time in seconds to wait for the correct 2FA answer
  407. twoFactor_timeout = 100
  408.  
  409. [smtp]
  410. # enable or disable the SMTP module
  411. enableSMTP = False
  412. # enable or disable the IMAP module for inbound email
  413. enableImap = False
  414. # list of Sysop Emails seperate with commas
  415. sysopEmails =
  416. SMTP_SERVER = smtp.gmail.com
  417. # 587 SMTP over TLS/STARTTLS, 25 legacy SMTP, 465 SMTP over SSL
  418. SMTP_PORT = 587
  419. # Sender email: be mindful of public access, don't use your personal email
  420. FROM_EMAIL = none@gmail.com
  421. SMTP_AUTH = True
  422. SMTP_USERNAME = none@gmail.com
  423. SMTP_PASSWORD = none
  424. EMAIL_SUBJECT = Meshtastic✉️
  425.  
  426. # IMAP not implimented yet
  427. IMAP_SERVER = imap.gmail.com
  428. # 993 IMAP over TLS/SSL, 143 legacy IMAP
  429. IMAP_PORT = 993
  430. # IMAP login usually same as SMTP
  431. IMAP_USERNAME = none@gmail.com
  432. IMAP_PASSWORD = none
  433. IMAP_FOLDER = inbox
  434.  
  435. [games]
  436. # if hop limit for the user exceeds this value, the message will be dropped
  437. game_hop_limit = 5
  438. disable_emojis = False
  439. # enable or disable the games module(s)
  440. dopeWars = True
  441. lemonade = True
  442. blackjack = True
  443. videopoker = True
  444. mastermind = True
  445. golfsim = True
  446. hangman = True
  447. hamtest = True
  448. tictactoe = True
  449. wordOfTheDay = True
  450. battleShip = True
  451.  
  452. # enable or disable the quiz game module questions are in data/quiz.json
  453. quiz = False
  454.  
  455. # enable or disable the survey game module questions are in data/survey/*_survey.json
  456. survey = False
  457. # this is the default survey to use when command givcen, from data/survey/example_survey.json
  458. defaultSurvey = example
  459. # Whether to record user ID in responses
  460. surveyRecordID=True
  461. # Whether to record location on start of survey
  462. surveyRecordLocation=True
  463.  
  464. [messagingSettings]
  465. # delay in seconds for response to avoid message collision /throttling
  466. responseDelay = 2.5
  467. # delay in seconds for splits in messages to avoid message collision /throttling
  468. splitDelay = 2.5
  469. # message chunk size in charcters, chunkr allows exceeding by 3 characters
  470. MESSAGE_CHUNK_SIZE = 160
  471. # Request Acknowledgement of message OTA
  472. wantAck = True
  473. # Max limit buffer for radio testing in bytes
  474. maxBuffer = 200
  475. #Enable Extra logging of Hop count data
  476. enableHopLogs = False
  477. # Noisy Node Telemetry Logging and packet threshold
  478. noisyNodeLogging = False
  479. noisyTelemetryLimit = 5
  480. logMetaStats = True
  481. # Enable detailed packet logging all packets
  482. DEBUGpacket = False
  483. # metaPacket detailed logging, the filter negates the port ID
  484. debugMetadata = False
  485. metadataFilter = TELEMETRY_APP,POSITION_APP
  486. # Enable or disable automatic banning of nodes
  487. autoBanEnabled = False
  488. # Number of offenses before auto-ban
  489. autoBanThreshold = 5
  490. # Throttle value for API requests no ban_hammer
  491. apiThrottleValue = 20
  492. # Timeframe for offenses (in seconds)
  493. autoBanTimeframe = 3600
  494.  
  495. [dataPersistence]
  496. # Enable or disable the data persistence loop service
  497. enabled = True
  498. # Interval in seconds for the persistence loop (how often to save data)
  499. interval = 3000
  500.  
  501.  
Add Comment
Please, Sign In to add comment