diff --git a/README.md b/README.md index bcf2f8a..bfb44d1 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ ![](img/menu.png) -![](img/windnew.png) +![](img/wind.png) MeshBot Weather is a spinoff of [MeshBot](https://github.com/868meshbot/meshbot) with a detailed focus on weather. Designed to run on a computer or a @@ -52,7 +52,7 @@ Our Mission: - Utilizes the National Weather Service, the official source for NOAA-issued EAS alerts. - Automatically sends severe weather alerts to all devices on the mesh network. - Weather forecast: A selection of Multi-day and hourly forecasts available on demand. -- Easily accessible menu that can be called by sending "?" to the bot. +- Easily accessible menu that can be called by sending "menu" or "?" to the bot. - Help message reply when the bot receives an unrecognized instruction. - Alert system test command to varify the weather alert api is responding and is configured correctly. - Detailed multi-message outputs for deployments on private and low-traffic meshes. @@ -66,6 +66,8 @@ Our Mission: ![](img/newfeatures.png) +Thanks [davidfries](https://github.com/davidfries)! + ## Bot interaction Your bot will be accessible through the meshtastic mesh network through the node name. DM the bot/node and issue any of the following commands: @@ -83,10 +85,10 @@ NOTE: Commands are not case-sensitive. - rain : Rain chance every hour for the next 24 hours (Single message return) - temp : Predicted temperature every hour for the next 24 hours (Single message return) - wind : Hourly wind information for next 24 hours (Multi message return) - +- loc : Custom location lookup. +- alert : Get full alert info for the last-issued alert. Commands below are not listed in the help menu: -- alert : Get full alert info for the last-issued alert. - alert-status : Runs a check on the alert system. Returns ok if good or error code if an issue is found - test : bot will return an acknowledgement of message received - advertise : When received, the bot will message the public channel introducing itself along with its menu command. @@ -188,32 +190,34 @@ Example Content: ``` MYNODES: - - "3663493700" + - "1234567890" - "1234567890" -FIREWALL: false -DM_MODE: true -DUTYCYCLE: false -NWS_OFFICE: "LOX" -NWS_GRID_X: "155" -NWS_GRID_Y: "45" -USER_AGENT_APP: "myweatherapp" -USER_AGENT_EMAIL: "contact@example.com" -ALERT_LAT: "34.0522" -ALERT_LON: "-118.2433" +FIREWALL: false +DM_MODE: true +DUTYCYCLE: false +NWS_OFFICE: "BGM" +NWS_GRID_X: "84" +NWS_GRID_Y: "89" +ALERT_LAT: "37.7654" +ALERT_LON: "-100.0151" ALERT_CHECK_INTERVAL: 300 -FIRST_MESSAGE_DELAY: 3 +ALERT_INCLUDE_DESCRIPTION: +ALERT_CHANNEL_INDEX: 0 +FIRST_MESSAGE_DELAY: 0 MESSAGE_DELAY: 15 -ALERT_INCLUDE_DESCRIPTION: false -ENABLE_FULL_ALERT_COMMAND: true +ENABLE_FULL_ALERT_COMMAND: true +ENABLE_CUSTOM_LOOKUP: true ENABLE_7DAY_FORECAST: true ENABLE_5DAY_FORECAST: true -ENABLE_HOURLY_WEATHER: true -FULL_MENU: true +ENABLE_HOURLY_WEATHER: true +FULL_MENU: true ENABLE_AUTO_REBOOT: false AUTO_REBOOT_HOUR: 3 AUTO_REBOOT_MINUTE: 0 REBOOT_DELAY_SECONDS: 10 -SHUTDOWN_NODE_ON_EXIT: false +SHUTDOWN_NODE_ON_EXIT: false +USER_AGENT_APP: "myweatherapp" +USER_AGENT_EMAIL: "contact@example.com" ``` @@ -234,14 +238,6 @@ Description - NWS_OFFICE: NWS_GRID_X: NWS_GRID_Y: #settings for the weather forecast api calls, see below to learn how to set up. -- USER_AGENT_APP: "myweatherapp" #used for NWS (National Weather Service) API calls, can be whatever you want, more -unique the better. This is what NWS uses instead of an API key. - - -- USER_AGENT_EMAIL: "contact@example.com" #your email, in the event NWS detects excess api calls they will throttle you. -Gives you the opportunity to fix the issue and stop getting throttled. - - - ALERT_LAT: "34.0522" ALERT_LON: "-118.2433" #settings for alerts, put in the latitude, and longitude of the area you want alerts for. Make sure you only go up to 4 places past the decimal point on each. @@ -250,7 +246,15 @@ want alerts for. Make sure you only go up to 4 places past the decimal point on From what I have gathered, they allow up to once a minute for alert checking. Your milage may very. -- FIRST_MESSAGE_DELAY: 3 # Delay in seconds between receiving a request and sending the first message back. This is +- ALERT_INCLUDE_DESCRIPTION: #Set to false to exclude description from alerts. Descriptions will include alot of detail +such as every county, town, and area affected. You can expect about 4 or 5 messages when description is set to "true" vs +a single message when set to false. + + +-ALERT_CHANNEL_INDEX: #Channel index for weather alerts, default is 0 (first channel) + + +- FIRST_MESSAGE_DELAY: # Delay in seconds between receiving a request and sending the first message back. This is experimental. Hoping this may help with dropped 1st part of reply's, by giving the network a few seconds to settle down. feel free to experiment with different values. @@ -258,15 +262,13 @@ feel free to experiment with different values. - MESSAGE_DELAY: Delay in seconds between split messages. To short of a delay can cause messages to arrive out of order. -- ALERT_INCLUDE_DESCRIPTION: #Set to false to exclude description from alerts. Descriptions will include alot of detail -such as every county, town, and area affected. You can expect about 4 or 5 messages when description is set to "true" vs -a single message when set to false. - - - ENABLE_FULL_ALERT_COMMAND: #set to false to disable the "alert" command. Can produce up to 8 messages, may want to disable on a high traffic mesh. +- ENABLE_CUSTOM_LOOKUP: # Enable/disable custom lat/lon lookup via message. More info below. + + - ENABLE_7DAY_FORECAST: ENABLE_5DAY_FORECAST: ENABLE_HOURLY_WEATHER: # These calls produce 2 to 4 messages each. If you are on a high-traffic mesh, you may want to disable these. @@ -293,6 +295,14 @@ changing this. turn the node back on before running the program again. +- USER_AGENT_APP: "myweatherapp" #used for NWS (National Weather Service) API calls, can be whatever you want, more +unique the better. This is what NWS uses instead of an API key. + + +- USER_AGENT_EMAIL: "contact@example.com" #your email, in the event NWS detects excess api calls they will throttle you. +Gives you the opportunity to fix the issue and stop getting throttled. + + ## How to get your NWS_OFFICE, NWS_GRID_X, and NWS_GRID_Y To get your NWS office and grid coordinates: 1. Go to (https://weather.gov) @@ -321,11 +331,20 @@ earlier in this process. Use no more than four digits after the decimal point. Press "Ctrl + c" once to tell the program to close. If Node shutdown is enabled in the settings.yaml The program will command the node to shutdown and give it time to do so. -Letting the node complete its shutdown sequence will prevent data loss in the node itself. Pressing "Ctrl + c" twice will force a hard exit of the program. +## Using the "Loc" custom location lookup command. +The loc command allows you to get a forecast for an area that is not the bots primary location. Input the locations +latitude and longitude along with the forecast type you want. + +Full command example: "loc 39.0453/-98.2077 hourly" + +Structure: loc {Latitude/longitude Command} command can be any of the regular commands like wind, 2day, 7day etc. +To ensure compatibility of your coordinates, only use up to 4 digits past the decimal point like in the example. + + ## API Handaling details To prevent excessive api calls, the bot will check if it currently has the data being requested and if it is @@ -354,7 +373,7 @@ everyone else running the defaults. This could possibly cause your API request t ## Contributors -- [868meshbot](https://github.com/868meshbot), [oasis6212](https://github.com/oasis6212) +- [oasis6212](https://github.com/oasis6212), [868meshbot](https://github.com/868meshbot), [davidfries](https://github.com/davidfries) ## Acknowledgements diff --git a/img/Newfeatures.png b/img/Newfeatures.png new file mode 100644 index 0000000..0ce0aa5 Binary files /dev/null and b/img/Newfeatures.png differ diff --git a/settings.yaml b/settings.yaml index c26fdd2..71fa442 100644 --- a/settings.yaml +++ b/settings.yaml @@ -1,20 +1,21 @@ MYNODES: - + - "1234567890" #these are examples, fill in with your node numbers if needed, you can add lines as needed. + - "1234567890" FIREWALL: false # If true, only responds to node ids listed under "MYNODES:" DM_MODE: true # If true, bot responds to direct messages only. Recommend not changing this DUTYCYCLE: false # If true, will limit to 10% duty cycle -NWS_OFFICE: "LOX" # Location settings for the weather forecast api calls, see readme for details -NWS_GRID_X: "155" -NWS_GRID_Y: "45" -USER_AGENT_APP: "myweatherapp" # Used for NWS API calls, can be whatever you want, more unique the better. -USER_AGENT_EMAIL: "contact@example.com" # Your email, in the event NWS detects excess api calls they can contact you -ALERT_LAT: "34.0522" # Location settings for alerts, use your coordinates. No more than 4 digits past the decimal point -ALERT_LON: "-118.2433" +NWS_OFFICE: "BGM" # Location settings for the weather forecast api calls, see readme for details +NWS_GRID_X: "84" +NWS_GRID_Y: "89" +ALERT_LAT: "37.7654" # Location settings for alerts, use your coordinates. No more than 4 digits past the decimal point +ALERT_LON: "-100.0151" ALERT_CHECK_INTERVAL: 300 # Time in seconds between alert checks (default: 300 = 5 minutes) +ALERT_INCLUDE_DESCRIPTION: false # Set to false to exclude the full description from automatically issued alerts +ALERT_CHANNEL_INDEX: 0 # Channel index for weather alerts, default is 0 (first channel) FIRST_MESSAGE_DELAY: 0 # Delay in seconds between receiving a request and sending the first message back. MESSAGE_DELAY: 15 # Delay in seconds between subsequent messages of a multi-message response -ALERT_INCLUDE_DESCRIPTION: false # Set to false to exclude description from automatically issued alerts ENABLE_FULL_ALERT_COMMAND: true # Set to false to disable the alert request command +ENABLE_CUSTOM_LOOKUP: true # Enable/disable custom lat/lon lookup via message ENABLE_7DAY_FORECAST: true # Set to false to disable 7-day forecast module ENABLE_5DAY_FORECAST: true # Set to false to disable 5-day forecast module ENABLE_HOURLY_WEATHER: true # Set to false to disable hourly weather module @@ -23,6 +24,6 @@ ENABLE_AUTO_REBOOT: false # Set to true to enable automatic daily reboot of the AUTO_REBOOT_HOUR: 3 # Hour for daily reboot (24-hour format) AUTO_REBOOT_MINUTE: 0 # Minute for daily reboot REBOOT_DELAY_SECONDS: 10 # Delay in seconds before reboot occurs (recommend not changing this) -ENABLE_CUSTOM_LOOKUP: true # Enable/disable custom lat/lon lookup via message -SHUTDOWN_NODE_ON_EXIT: false # If true, shutdown node on exit. If false, only close interface -ALERT_CHANNEL_INDEX: 0 # Channel index for weather alerts, default is 0 (first channel) +SHUTDOWN_NODE_ON_EXIT: false # If true, shutdown node on exit. If false, only close the program +USER_AGENT_APP: "myweatherapp" # Used for NWS API calls, can be whatever you want, more unique the better. +USER_AGENT_EMAIL: "contact@example.com" # Your email, in the event NWS detects excess api calls they can contact you \ No newline at end of file