2-Way Services
Introduction
When you have cell service, or when you have a satellite communicator (such as a Garmin InReach), there are a variety of services provided by SOTAmāt that are useful in the field. There are 3 ways you can communicate with the automated system:
- Via SMS <–> SMS at: +1-601-768-2628 (+1-601-SOTA-MAT).
This can be used by either a cell phone SMS app, or a compatible satellite communicator via SMS. NOTE: Garmin’s InReach satellite service is known to randomly block SMS communication with virtual phone numbers such as SOTAmāt’s (and other automated systems such as the SOTA SMS Gateway, Google Voice, etc.). To use an InReach, use the inReach method below and not SMS.
[Don’t believe me? Garmin’s web site says so here and here and here under the sections on “virtual numbers”, I validated it with their support team, and while my numbers worked briefly they recently started getting blocked!]
Using SMS costs me roughly $0.015 per “block”, and a normal command (round-trip) is about 3 blocks. So about $0.05 total per command. It is free to you. Feel free to experiment a bit, but for heavy experimentation use eMail. - Via eMAIL <–> eMail at: <your-callsign>.<your-PINcode>@GO.SOTAMAT.COM
Note this is case insensitive. You must first register an account on this web site and define a PIN code in your Web Profile.
Email is essentially “free” to me. The charges are quite low and I’m happy to cover them for you. This is the best way to experiment. You can place your commands in either the Subject: line, or at the beginning of your message body. - Via Garmin InReach at: <your-callsign>.<your-PINcode>@GO.SOTAMAT.COM
You send your message from the InReach device to the same email address as with the eMail option (above). The difference is that SOTAmāt detects the InReach email and will respond to your device using the InReach network (undocumented) API directly and will not reply via eMail (you can’t reply to an InReach email since the satellite network would be subject to spam).
NOTE: using automated systems can quickly create messaging charges for you (Garmin charges you $0.50 per message block). Be sure to use the “short” option when available for your commands (see below). Using this service costs me almost nothing, since it is eMail based on the inbound and API based on the outbound.
ALSO NOTE: to reduce typing in the field and transmission costs, you should add your personal SOTAmāt email “To:” address to your InReach contacts database and then sync all your related devices (ex. your mobile phone, your InReach device, and your Garmin smartwatch). - Via Bullitt Satellite Messenger at: +1-601-768-2628 (+1-601-SOTA-MAT)
Note-1: this was working at one point and might not be working anymore: test before you go! I do not recommend Bullitt devices for a number of reasons (happy to explain) and not just because of SOTAmat. If you have one, I would love to work with you to determine if support is still possible.
Note-2: this device does not allow any automated replies since it requires replies be sent through a cell phone application. Thus this device is limited in what commands can work. Also, since SMS messages from all Bullitt users arrive at the SOTAmat server from the same SMS phone number, there is no way for SOTAmat to automatically know who the message is from. Therefore all commands must be preceded by the login command. For example:login AB6D 1234; spotme W6/nc-423 14.227 SSB
One-Time Setup
Some commands require a “login”, but is is often done invisibly and automatically if you configure your account properly. Login is handled differently for SMS vs. eMail / Garmin-Email. Read the section on the “login” command here about how to configure your account. In summary you will need to:
- add an account on this web site (use your Callsign as your web site Username)
- (optional) add a list of comma-separated telephone numbers to your web profile to support auto-login via SMS. NOTE: unfortunately the software requires a specific format for phone numbers which must follow rigid format guidelines. Read the “login” section for instructions. (I know: it should be more flexible!)
- define a PIN code in your web profile to support login via eMail (including Garmin). This PIN code can optionally be used with SMS if you didn’t provide your telephone numbers (for auto-login, as described above).
Commands Overview
- General
- Login – for manual login on SMS (if needed) or to report the login status. Often not needed.
- Logout – dissociates a temporary phone number from any callsigns (if needed)
- Weather – (Experimental) request localized altitude-specific weather data for a given peak-ID, park-ID, or GPS coordinate.
- Syntax– responds with a (terse) list of available commands
- CallInfo – retrieve information and stats on a callsign from QRZ, SOTA, and POTA databases.
- MaxBlocks – limits how many Garmin InReach (chargeable) message blocks can be used to reply.
- SOTA Specific
- SotaSpots – retrieve a list of recent spots (to help discover summit-to-summit opportunities)
- SotaAlerts – retrieve a list of relevant alerts (to plan for future summit-to-summit action)
- SotaPostSpot* – Post a spot report (including a self-spot). [Requires login, which can be automatic]
- SotaPostAlert* – Post an alert for an upcoming activation. Very useful for CW operators to “tickle” RBNhole. [Requires login, which can be automatic]
- SummitInfo – retrieve information and stats on a summit
- POTA Specific
- PotaSpots – retrieve a list of recent spots (to help discover park-to-park opportunities)
- ParkInfo – retrieve information and stats on a park
- PotaPostSpot* – Post a spot report (including a self-spot). [Requires login, which can be automatic]
*These commands require either automatic or manual login
Note: the system is generally case-insensitive (except for comment fields). In the examples above and below, mixed case is used for clarity.
Satellite Notes (inReach, Zoleo, etc.)
When talking to SOTAmāt via a satellite service through SMS or eMail (ex. with the Garmin InReach eMail service), there are some special issues to consider:
- Use batching (see below) to mitigate the long round-trip delays of satellite.
- Avoid errors by ending your message with a newline (“return” key) or double-semicolon. See Ignoring Appended Content below.
- Use the short or “S” option for commands that offer it (see command descriptions below) to reduce how verbose the responses are.
- Use the maxblocks command (see below) to avoid truncating responses beyond 160-characters when using the Garmin InReach network. Note: this can rapidly increase message charges.
Garmin inReach Specifics:
Garmin inReach users should not use SMS to send commands to SOTAmat (Garmin has a policy against using SMS to non-physical phones such as automated systems like SOTAmat and MM0FMF’s SMS-SOTA-Gateway). Rather, use the email address in the format:
<your-callsign>.<your-PIN-code>@GO.SOTAMAT.COM
For example:
AB6D.7373@GO.SOTAMAT.COM
You define your (4-digit to 8-digit) PIN code in your user Profile on the SOTAmat.com web site.
To reduce typing in the field (and use fewer bytes over the inReach network) you should add this special email address to your Garmin inReach contacts database as follows:
- Login to https://Explore.garmin.com
- Select the “Contacts” tab at the top, then “Add“, then create the contact in the form with your SOTAmat email:
, then “Save”<your-callsign>.<your-PIN-code>@GO.SOTAMAT.COM
- Sync your inReach device with either the Earthmate-mobile-app, or the inReach-Sync-Desktop-App (I get better results with the Desktop app and a USB cable).
- If you have a Garmin smartwatch (ex. Fenix), then sync that device as well (ex. on the desktop use the Garmin-Express app to sync).
- On your mobile device, launch the “Earthmate” app (assuming you have the generation 1 inReach Mini, if you have the Mini 2 device there is a different app), select the “More...” tab, then “Options“, then “Account & Sync“, then login with your Garmin credentials and click “Sync“
- Send your inReach message to the new contact and remember to terminate your command with either a newline or a double-semicolon as in:
weather w6/nc-150;;
While you will send your commands to SOTAmāt via eMail, SOTAmāt will reply to you directly using the Garmin network (not via eMail). Garmin does not allow eMail-to-inReach communication to prevent spam from overloading the network. Instead, SOTAmāt uses Garmin’s internal (undocumented) API’s to respond to you directly via Garmin’s servers. Yes, that was fun to reverse engineer!!
Batching commands
The semicolon (“;“) character can be used to string multiple SOTAmāt commands together into one transmission. The commands will be executed sequentially. This works for ALL inbound modes (SMS, eMail, InReach), but is particularly useful on satellite communicators which often take a long time to round-trip a command (ex. 20 minutes!). For example, to first run the login command (which isn’t normally needed), then post a spot based on that login, and then retrieve a list of potential summit-to-summit CW spots, the following syntax is allowed:
login ka2vys 1234; SOTAspotMe ka2vys w6/ns-423 7.062 cw; listSpots cw 5 short
Ignoring Appended Content
Sometimes eMail and/or satellite service providers (like Garmin’s InReach service) append extra content to the end of your SMS messages and your eMails that originate from the satellite device (depending on your settings) such as a GPS location (telemetry), and/or a URL link to a web page displaying your location, and/or your name (so that recipients know who sent the message). For example, if you sent the messages in black text (below) to the SOTAmāt server, what actually gets received by SOTAmāt might include the purple text (depending on your InReach Settings):
SOTAspotMe k6ark w6ns001 7.062 cw -Brian Mathews
SOTAspotMe k6ark w6ns001 7.062 cw inreachlink.com/VBKEFSN (37.5432, -122.4321) -Brian Mathews
…and this will result in SOTAmāt errors due to the illegal syntax. The solution is to add a newline (using the “return” key) at the end of your content so that appended content is separated from your content as follows:
SOTAspotMe k6ark w6ns001 7.062 cw
-Brian Mathews
SOTAspotMe k6ark w6ns001 7.062 cw
inreachlink.com/VBKEFSN (37.5432, -122.4321) -Brian Mathews
If your satellite device user interface does not make it easy to type a newline “return” key at the end of your message, you can alternatively terminate your message using two sequential semicolons (“;;“) which will simulate a newline. For example:
SOTAspotMe k6ark w6ns001 7.062 cw;; -Brian Mathews
SOTAspotMe k6ark w6ns001 7.062 cw;; inreachlink.com/VBKEFSN (37.5432, -122.4321) -Brian Mathews
Optional Fancy Stuff
The system allows you to batch multiple commands using the semicolon (“;“) character while also placing each command on a separate line for readability, while also ignoring text appended by your satellite service provider. The rule is that if a line ends in a semicolon (“;“), then the following line will be interpreted as a command (the newline will be ignored). If a line does NOT end in a semicolon (“;“) character, then text after the newline will be interpreted as appended junk to be ignored. For example, the following 3 commands will be executed and the purple appendage will be ignored (because there is no ending semicolon and a newline after the last command):
SOTAspotMe ka2vys w6/ns-423 7.062 cw;
listSpots cw 5 short
inreachlink.com/VBKEFSN (37.5432, -122.4321) -Brian Mathews
Email Notes
When sending a message to SOTAmāt via email, you can place your commands in either the eMail message’s “Subject:” line, or in the message “Body“. When you send a normal eMail from a normal eMail application, using the “Subject:” line is the most convenient approach. When using a Garmin InReach to send an eMail to SOTAmāt you don’t have the option of specifying a “Subject:” since Garmin auto-creates the subject line for you (it normally says “Subject: inReach message from John Doe“). Thus the system will also accept commands from the beginning of the “Body” of the email message. Note that many eMail systems (including Garmin) add extra “signature” text to the end of the eMail “Body“. To make sure that SOTAmāt ignores the extra text appended to your message, end your command with a newline (using the “enter”-key) or a double-quote “;;“. This is explained in the Satellite section above (read that section even if you aren’t using a Satellite device to understand how it works for eMail).
Technically the system will either execute commands from the “Subject:” line, or from the beginning of the message “Body“, but never both. The system does this to avoid accidentally executing random text that may have been added / generated by other systems (such as Garmin’s subject line, or eMail signatures) that happen to look like SOTAmāt commands. The SOTAmāt server uses a “voting” system where it first evaluates the “Subject:” line for valid commands and then evaluates the “Body” and it will execute the one that appears to have a greater number of recognized SOTAmāt commands. In the case of a tie, the “Subject:” line is used. If the “Subject:” line begins with the text “Subject: inReach message from ” then the “Body” will always be used.
As in the examples above, you can batch commands when using eMail with the semicolon “;“.
Type less with Shortcuts, Aliases, and Defaults
It is always nice to type less, but when entering commands on a Satellite device or smartwatch it is even more important to reduce typing due to the poor keyboard user interface on such devices. The following are equivalent to the above with less typing:
- We can use the “w” alias for “weather“, the “sm” for “sotaSpotMe” and so on…
- We can use lowercase (or UPPERCASE) for everything since case is ignored (except for comment fields)
- In SOTA Summit identifiers, any punctuation is allowed, not just “/” and “-“, so you can type any convenient symbol from your keypad. For example, the summit “W6/NC-423” can be expressed equally as “w6.nc.423“, or “w6:nc:423“. In fact no punctuation is needed at all, so you can use “w6nc423“. Summit ID’s are parsed from right-to-left (3-digits,2-letters, and the rest is the association). Note that there can NOT be whitespace inside a summit ID, so “w6 ns 423” is NOT valid since whitespace is used to delimit the different parameters in the command, and a summit ID is one parameter. NOTE: never use a semi-colon (“;“) since it is a special reserved character for batching commands.
- In POTA Park identifiers, any punctuation is allowed to separate the program-reference (ex. “K“) from the park number (ex. “0021“), so use whatever symbol is most convenient to type on your device. However, unlike with SOTA Summit identifiers, the POTA Park identifiers MUST have some form of punctuation. For example, “K-0014” is identical to “K.0014“, “k:0014“, and “k_0014” and all are valid, but “K0014” is NOT valid as a Park. The reason a punctuation character must be used is that some valid international park ID’s can’t automatically be distinguished from some valid international callsigns. Thus the punctuation character helps the system determine the target is a park and not a callsign (see the commands “callinfo” and “parkinfo“). NOTE: never use a semi-colon (“;“) since it is a special reserved character for batching commands.
- We often don’t need to provide a callsign since it is implied by the inbound telephone number in most cases. In this example, the callsign in the second command is remembered from the prior login command.
login ka2vys 1234; spotme w6ns423 7.062 cw; spots short
- After your first spot the system not only associates your callsign with the inbound telephone number, but also remembers which summit you last used. For example if we change frequencies after the prior spot we can now just use:
sm 7.042 cw
- The system will also imply which mode you want from the frequency with reasonable defaults. So when you change frequencies again to start using SSB, your next spot command could be just:
sm 7.229
The parser is flexible. If later in the day if you change peaks but continue with SSB, your next spot might be just:
sm w6ns001 7.227
If you brought a friend with you and want to spot for them on your phone, you can do that. You remain logged in as yourself (based on your phone number) but you can specify the spot posting is for a different callsign than the logged in callsign. In this case where you provide a callsign you must also provide a summit-ID since you are telling the system to ignore the logged-in user information:
sm k6ark w6ns001 7.062
Syntax Tips:
In the section below, the syntax of each command is defined. For those who are not software engineers, here are some tips on how to read syntax specifiers:
- Angle-brackets with a word inside like
<callsign>
indicates a required parameter. When you see this it means you are required to fill in your selected value for that parameter and that it must be provided in the location specified. - Square-brackets with a word inside like
[mode]
indicates an optional parameter. You either provide the parameter in the specified location or you don’t. - Square and angle brackets can be combined. For example
[<callsign> <PIN>]
indicates that you must either specify both a callsign and a PIN, or neither. - Spaces matter. For example
[mode] [<delimiter><comment>]
means that if you provide a mode (it is optional) and a comment (it is optional), there must be a space between the mode and the delimiter of the comment. It also says that the system will not expect a space between the delimiter and the comment if a comment is provided. If you do put a space between the delimiter and the comment, then it means the space is part of the comment itself! See the examples to better understand. - Some parameters have special rules. These parameters have are tagged with a
**
as in[summitID**]
which means you have to read the documentation for the special rules.
.
Command Details
Login
Aliases:
login
l
Syntax
login [<callsign> <PIN>]
Often login is not needed because the system can auto-login a user by a permanent association of their inbound SMS cell phone number with their Callsign. Or, if you are communicating with SOTAmāt via eMail or Garmin-eMail, then the login information is already in the message “TO:” address (<callsign>.<PIN>@GO.SOTAMAT.COM
) and thus there is no reason to “login”. In other words, the only time you would need to use the login command is if you are using a phone other than your own registered phone.
The SMS phone-to-callsign association need only be configured once (hence why it is called a “permanent” login). To define a “permanent” association, edit your account profile on the SOTAmāt website. Your web profile allows you to define a comma separated list of phone numbers that should be associated with the your callsign (maximum of 3). This is useful if you have a primary cell phone, a backup cell phone, and possibly a fixed-number satellite communicator (these are rare, but Zoleo may support them). When commands are received from a listed phone number in your web profile, you are automatically logged in and don’t need to use the login command.
Note: when adding your comma-separated phone numbers to your profile on the web site, unfortunately you must follow a rigid syntax (I hope to fix this someday): start with a “+”, followed by your country-code (ex. “+1” for the USA), followed by your phone number digits. No punctuation or white-space is allowed! For example this is a valid phone list in your profile:
+14155551212,+19876543210
Manual login is required when using a temporary phone number or when borrowing a friend’s phone. Some satellite communicator devices dynamically allocate a temporary phone number to your device for a period of time. In this case you provide the login command with your callsign and PIN number to form a 24-hour association between the temporary phone number and your callsign. After 24-hours your are automatically logged out and the phone-to-callsign association is broken. You define your PIN by editing your user profile on the SOTAmāt web site. NOTE to Garmin inReach users: you should not be using SMS for inReach since they have a policy of blocking “virtual” SMS numbers (automated systems), likely as part of an anti-spam program. See the section on Garmin eMail.
In the (rare) case where someone has both a permanent association between a phone number and callsign-A, as well as a manual (temporary) login to that same phone number with a different callsign-B, then callsign-B takes precedence and callsign-A is ignored for the 24-hour period. If the “logout” command is issued, the manual login association callsign-B is removed, and callsign-A will again auto-login. The “logout” command has no effect on permanent logins defined in your web profile page.
Example
L ka2vys 1234
Login query syntax:
login
When used without any parameters, the login command reports back with:
- the current callsign (if any) that is currently logged in (associated) with the inbound phone number used (assuming SMS was used). This works for permanent and temporary logins.
- The associated SOTA summit-ID with that callsign (if any).
- The associated POTA park-ID with that callsign (if any).
If the correct summit-ID or park-ID is listed, then other SOTAmāt commands (sotapostspot, sotapostalert, potapostspot) will not require you to specify them (they will auto-fill).
Logout
Syntax
logout
Read the section on login. This command is not normally needed. It is used to remove the association between your callsign and a temporary phone number (ex. a dynamically assigned satellite number, or a friend’s phone).
The logout command has no effect on a permanent login (one where a phone number is associated with your callsign by editing your profile on the SOTAmāt web site). It also has no effect when you are using eMail or inReach to communicate with SOTAmāt.
Callinfo
Aliases:
callinfo
ci
<callsign>
Syntax
callinfo <callsign> [<callsign2> [...]]
<callsign> [<callsign2> [...]]
Replies with information on one or more callsigns from the QRZ.com, SOTA, and POTA databases. You can provide a list of callsigns to retrieve separated by spaces.
NOTE: this command is special in that you can leave out the command entirely and just provide a valid callsign (or list of valid callsigns). To be recognized as callsign they must not have prefixes or suffixes, and must be in 2×3 format or smaller. See the examples below on how you can leave out the command.
Examples
callinfo W6UQ
callinfo W6UQ W6PW KN2MET
ci W6UQ
W6UQ W6PW KN2MET
W6UQ
Weather
Aliases:
weather
w
Syntax
weather <summitId|parkID|<Lat,Long>>[,AltInFeet>] [1|2|3|4|6|8|12|24]
Note: This function is experimental. Use at your own risk.
Note: look at the syntax carefully: if you use a variation that uses a comma there are no spaces allowed on either side of the comma!
Many weather services are based on ZIP-codes or cities and are not accurate for mountains since the weather at the base of a mountain may differ significantly from the peak, and mountains are rarely found inside cities. In contrast, this service is based on weather provider METEOBLUE and uses machine learning and advanced models to provide high resolution, localized, and altitude-aware forecast models that are more appropriate for mountain terrain. I have paid for API access to METOBLUE for SOTAmāt use.
This command replies with altitude-specific localized weather information for the specified location (either a SOTA Summit ID, POTA Park ID, or a Latitude,Longitude comma-separated pair. If you use a Summit-ID the report will be based on the peak’s altitude. If you provide a POTA park ID or Latitude,Longitude pair, the altitude will be based on the altitude in the general area at those coordinates (which may not be accurate if there are steep zones nearby). You can optionally specify an altitude (measured in Feet above Sea Level) with the Lat,Lon option. See examples below. Parameters include:
SummitID
– weather will be reported on the location of the summit, and the peak’s altitude.Latitude
– in decimal degrees (a floating point number, positive or negative)Longitude
– in decimal degrees (a floating point number, positive or negative)Altitude
– measured in feet above sea level[HoursStepSize]
– an integer between 1 and 24 that indicates the number of hours each row should aggregate minimum and maximum values for each parameter. This is useful for summarizing entire days of information into a few characters since SMS and Satellite devices have limits on message sizes.
Using 24 means each row will be a summary of the min/max values for an entire day. When HoursStepSize is greater than 1 the first column lists the day-of-the-month that the row applies to (in addition to the beginning hour). Any integer that evenly divides into 24 is allowed (1,2,3,4,6,8,12, or 24). This command responds to the “MaxBlocks” command on Garmin devices.
If HoursStepSize is not provided, it defaults to 3 hours.
Examples
weather W7N/WC-003
w W7N/WC-003,3000
w W7N.WC003,3000 24
w W7NWC003 1
w K-0071
w K.0071 1
w K.0071,8500 1
w 37.204,-122.507
w 37.204,-122.507,8500
w 37.204,-122.507,8500 6
Understanding the Response
Since the SOTAmāt system is often used by people on Satellite devices (ex. Garmin InReach) when no cell phone service is available, the response from the weather command is rather cryptic in order to reduce the number of characters used (satellite messages are often limited to 160 characters). Here is an example response from the weather command when the “HoursStepSize” is “1“:
HR *F P% Wm S
08 030 00 04 2
09 033 00 04 1
10 034 00 04 1
11 036 00 04 1
12 037 00 04 1
13 037 00 05 1
14 037 00 05 1
15 036 00 06 1
16 034 10 06 1
17 032 20 07 1
18 031 30 07 1
19 030 20 09 1
20 029 10 10 2
21 029 00 11 2
22 029 00 12 2
23 030 00 12 3
And here is an example response when the “HoursStepSize” is 3 (the default):
Dy,Hr *f *F p%P% wmWm sS
16,22 028030 0102 0203 11
17,00 025028 0101 0304 11
17,03 024024 0000 0405 11
17,06 024027 0000 0505 11
17,09 030034 0000 0505 12
17,12 034035 0000 0606 22
17,15 028032 0000 0505 22
17,18 023026 0000 0506 22
17,21 023023 0000 0506 23
And here is an example response when the “HoursStepSize” is 24:
Dy,Hr *f *F p%P% wmWm sS
17,00 015024 0019 0615 13
18,00 017029 0000 0613 11
19,00 020030 0000 0612 11
20,00 017028 0002 0412 11
21,00 021038 0114 0406 16
22,00 029039 0117 0406 26
In each case the column headers have the following meanings:
- Dy – The day-of-the-month (the date)
- Hr – The hour of the day, in local time of the time zone selected by the Peak-ID or (Lat,Lon) pair.
- *f *F – The 3-digit minimum and 3-digit maximum temperatures in the time step (in Degrees Fahrenheit).
- p%P% – The 2-digit minimum and 2-digit maximum percent chance of Precipitation (rain, snow, etc.) in the time step. A 100% probability is written as 99%.
- wmWm – The ,minimum and maximum Wind Speed in the time step (in Miles-Per-Hour MPH). Wind speeds above 99 MPH are shown as 99.
- sS – This minimum and maximum Severity Summary on a scale of 0 to 9 as follows:
- Zero indicates clear skies.
- 1 through 4 indicates increasing amounts of cloud cover and/or fog of a variety of types.
- 5 through 7 indicates increasing severity of precipitation (rain, snow, etc.). It does not indicate probability.
- 8 through 9 indicates increasing severity of either thunderstorms or heavy precipitation. It does not indicate probability.
The initial row always starts with the current hour in local time of the location requested. When HoursStepSize is greater than 1, future rows will always synchronize to midnight when a day boundary is crossed. For example, if the current time is 21 hours (9:00PM) and the HoursStepSize is 6, the first row will summarize the time period from 21 hours to midnight (a 3-hour step), and then subsequent rows will step in the requested 6-hour increments starting at midnight (00, 06, 12, 18, etc.). This is especially useful for the 3, 4, 6 and 24-hour step sizes.
Note: read the section on “maxblocks full” when using eMail and the weather command.
MaxBlocks
Aliases:
maxblocks
blocks
mb
Syntax
maxblocks <1|2|3|4|5|6|<f|full>>
This command was intended for Garmin InReach satellite communicator users, but has been expanded to work with all messaging modes (SMS, eMail, Garmin eMail). Some commands (like SotaSpots, PotaSpots, or Weather) may generate long message responses, which SOTAmāt will truncate based on which form of communication is used. The MaxBlocks command temporarily sets the number of 160-character message blocks that can be returned from subsequent commands within one transaction batch. The purpose is to limit the expense that interactions would cause (Garmin charges $0.50 per 160-character response block), and to align responses with the characteristics of the messaging medium used (SMS is not designed for very long responses). While this document discusses the Garmin InReach service, other satellite services (like Zoleo) may use SMS (rather than eMail) and thus those channels are also truncated.
When sending via SMS or eMail, the responses are truncated at 160 characters multiplied by the MaxBlocks (160 * MaxBlocks) setting. Unlike eMail and SMS, which don’t visibly split responses into separate blocks when viewed, Garmin messages are split on block boundaries in the user interface and may arrive out of order! When messaging via Garmin eMail, the first 158-characters of the response will be sent in a block with a trailing “++” at the end (for a total of 160) indicating another message block will be following, or that content couldn’t fit within the specified maxblocks and has been truncated.
MaxBlocks can be any integer from 1 to 6. Messages longer than 6 * 160 = 960 characters are always truncated. The MaxBlocks setting has these defaults:
- On Garmin InReach eMail, defaults to “1” (ex. a $0.50 message), and may be increased to six (ex. $3.00)
- On eMail (non-Garmin inReach), defaults to “4”. See section on the “full” option below.
- On SMS, defaults to “2”. SMS message blocks cost me (the author of SOTAmāt) about $0.015 per block to send and receive. Feel free to use more if you need it, but if you are doing heavy testing, use eMail instead if available (such as when testing the system).
The “full” (or abbreviated “f“) option can be used in place of a number when using eMail to communicate with SOTAmāt. Since normal eMail (as opposed to Garmin inReach based eMail) has no meaningful limits on response message length, you can use the “full” option to increase MaxBlocks to 200+ while allowing some commands to use a more verbose response intended for a larger/wider screen. The “weather” command in particular will respond in a more verbose and less cryptic format intended for larger screens when the “full” option is used.
NOTE: after your message has been processed, the system automatically resets maxblocks to the default value for that device type (“1” for Garmin) in order to prevent undesired charges (if you forget to reset it yourself). If you send a subsequent message just seconds later with new commands, you need to re-issue your maxblocks setting again if you want it increased. In other words, use of the maxblocks command only makes sense when batching several commands with the the semicolon “;“, and only makes sense when the maxblocks command precedes verbose commands that might respond with more than 160-characters of content.
Examples
maxblocks 2; sotaSpots 9 s
mb 4; ss
mb full; weather W6.NC.423
mb f; weather K-0021
Syntax
Aliases:
Syntax
commands
hello
hi
Syntax
syntax [command]
The syntax command is useful if you forget the names of the SOTAmāt commands. It provides a very compact list of commands (for satellite devices which are charged based on amount of characters used). If you provide the optional “command” parameter, it will reply with the syntax for that specific command.
NOTE: It would make a lot more sense for this command to be called “help” rather than “syntax“. However, SMS message handling network providers use the “help” command to allow customers to control SMS spam. Thus the keyword is not available for use by SOTAmāt. Sorry.
Examples
syntax
syntax listspots
syntax spotme
SotaSpots
Aliases:
sotaspots
listspots
sspots
spots
ss
s
Syntax
sotaspots [all|cw|ssb|fm|data|other] [count] [s|short]
Responds with a list of recent spots (in the last hour). This is useful in finding Summit-to-Summit opportunities (S2S), especially when you have no cell service and can’t use other services such as SOTA Goat. This is because SOTAmāt can work over a satellite communicator (ex. Garmin InReach).
mode
– (optional, defaults to “all”) filters the results to only include the specified mode.count
– (optional, defaults to 5) an integer from 1 to 10, specifying the maximum number of spot records to return. The most recent spots are listed first.short
– (optional, defaults to long-mode) If specified, the output will be less verbose. May be abbreviated as “s“. This is useful on satellite communicators where long messages are split and may be delivered out-of-order and may incur additional fees.
Examples
sotaSpots SSB 6 Short
ss cw
ss 3 s
ss
SotaAlerts
Aliases:
sotaalerts
listalerts
salerts
alerts
sa
Syntax
sotaalerts [count] [s|short]
Responds with a list of relevant alerts for a period of time just prior to the current time, and after the current time.
count
– (optional, defaults to 5) an integer from 1 to 15, specifying the maximum number of spot records to return.short
– (optional, defaults to long-mode) If specified, the output will be less verbose. May be abbreviated as “s“. This is useful on satellite communicators where long messages are split and may be delivered out-of-order and may incur additional fees.
Examples
sotaAlerts 8 short
sa 3
sa S
sa
SotaPostSpot
Aliases:
sotapostspot
sotaspotme
postspot
spotme
sps
ssm
sm
Syntax
sotapostspot [callsign] [summitID**] <frequency> [mode] [<delimiter><comment>]
Posts a spot on the official SOTA spotting system. Requires a valid login (automatic or manual).
callsign
– (optional, defaults to the logged in user’s callsign). If provided, this is the callsign being spotted, not the callsign submitting the spot (though they are often identical). When not provided the logged in callsign (either via auto-login or manual login) is used as both the callsign being spotted and the submitting callsign.
To be backward-compatible with other spotting systems, the callsign may be one of the following aliases:$
(dollar) – identical to not providing a callsign and using the default. See rules above.%
(percent) or!
(exclamation) – identical to not providing a callsign and using the default, but a “/P” will be appended to the callsign when the spot is posted..
(period) – when added to the end of a real callsign (not an alias), it is ignored and removed. It is for backward compatibility with other systems where the period indicates a desire to suppresses automatic adding of a “/P” suffix. SOTAmāt never automatically ads “/P” unless requested by the%
or!
aliases, so a period is not needed.
summitID
– (optional, defaults to the prior summit-ID used by the logged in user in a prior sotapostspot command within the prior 24-hours). **If a callsign is provided then a summitID becomes required, because the callsign tells the system to ignore the auto-login data and use what you are providing. Case insensitive. Allows punctuation, but ignores it. So “W6/NS-001” is identical to “w6ns001” and to “w6.ns001” and to “w6.ns.001“. Since Association codes can be either 1, 2, or 3 characters, the parser works right-to-left, and expects 3-digits, 2-letters, and then the Association code (1, 2, or 3 alpha-numerics). This would NOT be a valid summit: “w6ns01” (it doesn’t have a 3-digit ending and “001” should be used).frequency
– required. Measured in MHz. Should only have one punctuation mark as the fraction separator which may be either a comma, or a decimal-point. In other words “7.062” and “7,062” and “7.062500” and “7,062500” are considered identical, while “7.062,500” is not valid (two punctuation marks). This is to support differing decimal conventions worldwide.mode
– (optional) When not provided by you, the default is to infer the mode by the provided frequency. Auto-selection is based on frequency using the USA ARRL band plan for the most common bands. It can infer either CW, SSB, or FM and recognizes FT8 frequencies (reported as DATA). If you don’t want auto-selection, specify one of CW, SSB, FM, AM, DATA, or OTHER. Case insensitive.comment
– (optional) If you provide a comment it must begin with some form of punctuation (non-digit, non-letter, non-whitespace) as a delimiter so the system doesn’t try and interpret your comments as commands or operands. Any punctuation that is easy to type on your device will work, but by convention a single quote “'” is normally used). Note: do not use a semicolon “;” in your comments since it is reserved as a command separator and must not be used anywhere else. Also note that while SOTAmāt might be forgiving, the official SOTA spotting system and Garmin InReach systems may not support all punctuation inside your comments (their rules are more strict and I have not fully tested what their server supports). For example, if using a Garmin device do not use the “<
” or “>
” symbols as Garmin seems to fail on them.
Examples
sotaPostSpot KA2VYS W6/NC-002 7.0625 cw "Need one more contact!
sm W6nc002 7.062
sm 7.062 'Last chance before QSY to SSB
sm $ w6.nc.002 7.227
sm 7.227
sm ka2vys. w6nc002 14.229 'Chase my friend too on ssb!
sm ! w6nc002 14.229 ssb
SotaPostAlert
Aliases:
sotapostalert
sotaalertme
postalert
alertme
spa
sam
am
Syntax
sotapostalert <now|+<hours>|<YYMMDD> <HHMM>> [callsign] [summitID**] <frequency> [mode] [<delimiter><comment>]
Posts an Alert about a future activation plan on the official SOTA alerting system. Requires a valid login (automatic or manual).
This command can be especially useful for CW operators who want to work with RBNhole‘s self-spotting functionality. Using this command you can log an Alert with comments intended for RBNhole. Read the RBNhole documentation for more information. Note the section below for RBNhole users.
Note that the syntax is identical as for the sotapostspot command, but there are two additional required parameters at the beginning: date and (UTC) time.
<now|+<hours>|<YYMMDD> <HHmm>>
– This indicates the alert’s date and time of when the future summit activation is expected. Several options are allowed for the date and time formatting as follows:now
– this means the alert should be posted with the current time (plus 5 minutes into the future since the SOTA Watch system does not allow alerts to be filed in the past). This implies you are already on the summit. Why would someone want to post an “alert” when on the summit rather than a “spot”? Well, CW (Morse Code) users who want the RBNhole service to follow them and re-spot them automatically when chaning frequencies need to give RBNhole a “kick” so that it knows your callsign and what peak you are on. RBNhole monitors the list of alerts which tells it to start listening for your CW callsign within its time window, which can be “now” if you are on the summit.+<hours>
– This means that you expect to be on the summit the given number of hours in the future from now. This is often a lot easier than trying to figure out UTC dates and times. You can use decimal fractions such as “+0.5
” or “+.5
” to mean a half-hour (30 minutes) from now. Allowable values range from 0 to 2160 (which is 90 days from now).YYMMDD HHmm
– this means you expect to be on the summit at this UTC (Zulu) date and time. Note that your local date and the UTC date might not be the same! For this reason I find it easier to use the “+<hours>” approach and let the system compute the UTC time for me! Of course “YY” is the year, “MM” is the month, “DD” is the day of the month, “HH” is the hours in 24-hour form, and “mm” is the minutes in UTC date time. The system ignores all punctuation and requires 6 valid digits for the date, so “23/11/14” is identical to “23.11.14” and “231114” which can make typing easier on satellite devices that don’t have full keyboards. The time expects 4 valid digits, so “15:00” is identical to “15.00” and “1500“. Allowable values range from now until 90 days from now. Did I mention that both the date and the time are in UTC (Zulu)??
callsign
– (optional, defaults to the logged in user’s callsign). If provided, this is the callsign being Alerted, not the callsign submitting the alert (though they are often identical). When not provided the logged in callsign (either via auto-login or manual login) is used as both the callsign being alerted and the submitting callsign.
To be backward-compatible with other spotting systems, the callsign may be one of the following aliases:$
(dollar) – identical to not providing a callsign and using the default. See rules above.%
(percent) or “!” (exclamation) – identical to not providing a callsign and using the default, but a “/P” will be appended to the callsign when the spot is posted..
(period) – when added to the end of a real callsign (not an alias), it is ignored and removed. It is for backward compatibility with other systems where the period indicates a desire to suppresses automatic adding of a “/P” suffix. SOTAmāt never automatically ads “/P” unless requested by the%
or!
aliases, so a period is not needed.
summitID
– (optional, defaults to the last summit-ID used by the logged in user in a prior spot or alert command). **If a callsign is provided then a summitID becomes required, because the callsign tells the system to ignore the auto-login data and use what you are providing. Case insensitive. Allows punctuation, but ignores it. So “W6/NS-001” is identical to “w6ns001” and to “w6.ns001” and to “w6.ns.001“. Since Association codes can be either 1, 2, or 3 characters, the parser works right-to-left, and expects 3-digits, 2-letters, and then the Association code (1, 2, or 3 alpha-numerics). This would NOT be a valid summit: “w6ns01” (it doesn’t have a 3-digit ending and “001” should be used).frequency
– required. Measured in MHz. Should only have one punctuation mark as the fraction separator which may be either a comma, or a decimal-point. In other words “7.062” and “7,062” and “7.062500” and “7,062500” are considered identical, while “7.062,500” is not valid (two punctuation marks). This is to support differing decimal conventions worldwide.mode
– (optional) When not provided by you, the default is to infer the mode by the provided frequency. Auto-selection is based on frequency using the USA ARRL band plan for the most common bands. It can infer either CW, SSB, or FM and recognizes FT8 frequencies (reported as DATA). If you don’t want auto-selection, specify one of CW, SSB, FM, AM, DATA, or OTHER. Case insensitive.comment
– (optional) If you provide a comment it must begin with some form of punctuation (non-digit, non-letter, non-whitespace) as a delimiter so the system doesn’t try and interpret your comments as commands or operands. Any punctuation that is easy to type on your device will work, but by convention a single quote “'” is normally used). Note: do not use a semicolon “;” in your comments since it is reserved as a command separator and must not be used anywhere else. Also note that while SOTAmāt might be forgiving, the official SOTA spotting system and Garmin system may not support all punctuation inside your comments (their rules are more strict and I have not fully tested what their server supports). I know that Garmin can fail on “<” and “>” characters, for example.
Examples
sotaPostAlert 23/11/14 14:15 KA2VYS W6/NC-002 7.0625 cw "Need one more contact!
spa now W6nc002 7.062
spa +.5 w6nc002 7.062
spa +4.5 7.062
spa +48 $ w6.nc.002 7.227
spa 20231114 1415 7.062 'Last chance before QSY to SSB
spa 23.11.14 14:15 ka2vys. w6nc002 14.229 'Chase my friend too on ssb!
spa 2023/11/14 14.15 ! w6nc002 14.229 ssb
Examples for CW RBNhole users
Morse code users of RBNhole can pass hints to RBNhole through the comment field. Here are some examples where:
- The first example posts an alert starting right now and tells RBNhole to keep spotting this user’s callsign with the peak ID from now and for the next 12 hours from now.
- The second example posts an alert with an estimated on-peak time of 48 hours from now, and tells RBNhole to start spotting at 45 hours from now and stop spotting 52 hours from now.
- The third example posts an alert with an estimated on-peak UTC date of 23/07/14 and a UTC time of 22:00, and tells RBNhole to start spotting at 23/07/14 18:00 and stop spotting at 23/07/15 01:00
sotaPostAlert now KA2VYS W6/NC-002 7.0625 cw "S+12
spa +48 W6nc002 7.062 "S-3 S+4
spa 230714 2200 W6nc002 7.062 "S-4 S+3
SummitInfo
Aliases:
summitinfo
summit
<summitID>
Syntax
summitinfo <summitID> [<summitID2> [...]]
<summitID> [<summitID2> [...]]
Replies with information on one or more SOTA summits from the official SOTA database. You can provide a list of summits to retrieve separated by spaces.
NOTE: this command is special in that you can leave out the command entirely and just provide a valid Summit-ID (or list of valid Summit-ID’s). See the examples below on how you can leave out the command and punctuation. Case insensitive.
Examples
summitinfo W6/NC-423
summit W6/NC-423 W7N/WC-003 W4T/SU-006
summit W6.NC.423
summit W6NC423
W6NC423 W7N.WC.003 W4T/SU-006
W6NC423
PotaSpots
Aliases:
potalistspots
potaspots
pspots
ps
Syntax
potaspots [all|<mode>] [count] [s|short]
Responds with a list of recent spots (in the last hour). This is useful in finding Park-to-Park opportunities (P2P), especially when you have no cell service and can’t use other mobile app services. This is because SOTAmāt can work over a satellite communicator (ex. Garmin InReach), or just SMS (which is better with weak cell signals than cell-internet-data mode).
mode
– (optional, defaults to “all”) filters the results to only include the specified mode.count
– (optional, defaults to 5) an integer from 1 to 10, specifying the maximum number of spot records to return. The most recent spots are listed first.short
– (optional, defaults to long-mode) If specified, the output will be less verbose. May be abbreviated as “s
“. This is useful on satellite communicators where long messages are split and may be delivered out-of-order and may incur additional fees.
Examples
potaSpots SSB 6 Short
ps cw
ps 3 s
ps
ParkInfo
Aliases:
parkinfo
park
<parkID>
Syntax
parkinfo <parkID> [<parkID2> [...]]
<parkID> [<parkID2> [...]]
Replies with information on one or more POTA parks from the official POTA database. You can provide a list of summits to retrieve separated by spaces.
NOTE: this command is special in that you can leave out the command entirely and just provide a valid Park-ID (or list of valid Park-ID’s). See the examples below on how you can leave out the command and punctuation. Case insensitive.
NOTE: unlike with SOTA Summit ID’s, the POTA Park ID’s must have punctuation between the Park ID reference and the 4-digit number. For example, “K-0071” is valid, as is “K.0071“, but “K0071” is not valid. Do not use a semicolon “;” nor comma “,” for the punctuation as they have special meanings (described elsewhere). The reason you must use punctuation to delimit the park reference from the park integer is that some global Park ID’s have the same format as valid Callsigns for some countries. Thus the punctuation informs that you are providing a park ID and not asking for callsign info.
Examples
parkinfo K-0071
park K.0071 VE.0028
K-0071 VE-0028
K.0071
PotaPostSpot
Aliases:
potapostspot
potaspotme
pps
psm
Syntax
potapostspot [callsign] [parkID**] <frequency> [mode] [<delimiter><comment>]
Posts a spot on the official POTA spotting system. Requires a valid login (automatic or manual).
callsign
– (optional, defaults to the logged in user’s callsign). If provided, this is the callsign being spotted, not the callsign submitting the spot (though they are often identical). When not provided the logged in callsign (either via auto-login or manual login) is used as both the callsign being spotted and the submitting callsign.
To be backward-compatible with other spotting systems, the callsign may be one of the following aliases:$
(dollar) – identical to not providing a callsign and using the default. See rules above.%
(percent) or “!” (exclamation) – identical to not providing a callsign and using the default, but a “/P” will be appended to the callsign when the spot is posted..
(period) – when added to the end of a real callsign (not an alias), it is ignored and removed. It is for backward compatibility with other systems where the period indicates a desire to suppresses automatic adding of a “/P” suffix. SOTAmāt never automatically ads “/P” unless requested by the%
or!
aliases, so a period is not needed.
parkID
– (optional, defaults to the previous park-ID used by the logged in user in a prior postpotaspot command if within 24 hours from a prior spot).
**If a callsign is provided then the parkID becomes required, because the callsign tells the system to ignore the auto-login data and use what you are providing. Case insensitive. Park-ID’s must include a punctuation separator (for example: “K-0021” or “K.0021“) to prevent confusion with international callsigns (without the dash some parkID’s conflict with some country callsigns). You can see if a POTA ParkID (and/or SOTA Summit ID) is associated with your callsign by using the “login” command without any parameters (ex. just “login“).
NOTE: there is a special park ID used for testing: “K-TEST“. It must be “K-TEST” and not “VE-TEST” or any other country variation.frequency
– required. Measured in MHz. Should only have one punctuation mark as the fraction separator which may be either a comma, or a decimal-point. In other words “7.062” and “7,062” and “7.062500” and “7,062500” are considered identical, while “7.062,500” is not valid (two punctuation marks). This is to support differing decimal conventions worldwide.mode
– (optional) When not provided by you, the default is to infer the mode by the provided frequency. Auto-selection is based on frequency using the USA ARRL band plan for the most common bands. It can infer either CW, SSB, or FM and recognizes FT8 frequencies (reported as DATA). If you don’t want auto-selection, specify one of CW, SSB, FM, AM, DATA, FT8, OTHER, etc. Case insensitive.comment
– (optional) If you provide a comment it must begin with some form of punctuation (non-digit, non-letter, non-whitespace) as a delimiter so the system doesn’t try and interpret your comments as commands or operands. Any punctuation that is easy to type on your device will work, but by convention a single quote “'
” is normally used). Note: do not use a semicolon “;
” in your comments since it is reserved as a command separator and must not be used anywhere else. Also note that while SOTAmāt might be forgiving, the official POTA spotting system and Garmin InReach systems may not support all punctuation inside your comments (their rules are more strict and I have not fully tested what symbols their server supports). For example, if using a Garmin device do not use the “<
” or “>
” symbols as Garmin seems to fail on them.
Examples
PotaPostSpot KA2VYS K-0021 7.0625 cw "Need one more contact!
potapostspot K-TEST 7.227 'Just testing, please ignore!
psm K-0041 7.062
pps 7.062 'Last chance before QSY to SSB
pps $ K-0014 7.227
psm 7.227
psm ka2vys. k-0021 14.229 'Chase my friend too on ssb!
psm ! k-0014 14.229 ssb