SOTAMAT updated with new SOTA Watch Support

The SOTAMAT system has been updated for the new SOTA Watch API changes.

Let me know if you have issues. Testing is welcomed.

  • Should be Working
    • 1-way (FT8) spotting, alerting, messaging
    • 2-way (SMS, Email, Garmin) spotting, alerting, getting spots list, getting alerts list, getting summit info, etc.
  • New functionality that should be working:
    • The “Testing” mode has been improved to use the new SOTA Watch “TEST” type post.
    • A new “QRT” mode has been added to the system. You need to update your configuration on the web site and add a single QRT entry with a single step. Then sync your configuration to your phone.
  • Not Yet Working
    • SOTACAT spots list :arrow_left: Update: @KC6X fixed this and it is now working :+1:

Previous users: please help me test this case I can’t reproduce on my own [I can’t test this because as a developer I am frequently re-installing my app. I want you to try these steps without re-installing]:

  1. Launch the SOTAMAT mobile app
  2. Click “Setup” tab
  3. Under “Step 4:” click the “Download Databases” button.
  4. Does it work? Does it download updates?
  5. Click on the “Spot SOTA” tab
  6. Select a summit that has a very recent activation from your configuration. For me that would be W6/NC-423. See if the summit last activation time is correct (recent date) in the UI.

73 de AB6D

6 Likes

Hi, the database,downloaded fine. When starting a spot that I recently activated, it showed the last activation with the correct date.
Cheers Glenn VK3YY

1 Like

Likewise, the database download fine and correctly displayed an activation from 25th Oct.

73,
Warren.

Brian, all was good here as well. I am in Japan and plan to activate a summit in about 16 hours from now. I will probably use the SMS feature if I have cell coverage. I have tested it here and it seems to be working just fine.

2 Likes

Brian, I also followed your steps and all looks fine on Android 15.

Thanks again for this great tool!

73 Stephan

1 Like

Thanks everyone for the help in testing.

A new version of the app has been in development for quite some time. Just working through some last minute bugs before posting a new Beta. Will support internet spotting, and integrated SMS/Email spotting, and ability to copy lat/long coordinates to the clipboard. Also improves SOTACAT integration. A few more weeks…

73 de AB6D - Brian

3 Likes

There is a new SOTACAT firmware that improves networking (again!). It might help you @VA6MPM.
Thanks to @KC6X Jeff, the new SOTACAT firmware also adds support for the new SOTA API including QRT, plus the ability to pause retrieval of spot lists when you have bad cell service.

You can do a SOTACAT OTA (over-the-air .BIN file) firmware update or cable-based-factory-reset update. I recommend the OTA since it doesn’t delete your WiFi settings. Both are found in the usual place: https://sotamat.com/sotacat or you can build from source code https://github.com/SOTAmat/SOTAcat

Some of the SOTAMAT 2-way SMS/Email/Garmin commands (like “spots”) have been updated with smarter formatting and better support for the new SOTA API “QRT” and “TEST” modes.

The web site has some updated and new statistics. Most stats are for the prior 365 or 180 days (depending on pie chart). I also removed a user who had skewed the stats with a bunch of redundant and bogus spots, so the leader board is more accurate.

I’m still working on the next version of the SOTAMAT mobile app. It still isn’t ready for Beta. Maybe 1 or 2 more weeks to go before the next Beta. While the new features are conceptually simple, I feel like I’ve been coding against the 3-body-problem.

73 de AB6D - Brian

3 Likes

A new BETA release of SOTAMAT V2.1.0 available for testing:

  • iOS using Apple Testflight (Apple’s App Store for Beta Apps), and
  • Android
    • Via Google Play Store for Android (available only if you’ve enabled viewing/install of Betas for SOTAMAT), or
    • Alternatively, via Android side load with APK or AAB

What’s New:

  1. Adds spotting by SMS and Email, in addition to traditional FT8. SMS and Email can spot for summits/parks that aren’t in your FT8 configuration. Laid the groundwork for a future Beta to allow spotting via direct Internet. Also allows selecting the Spotting string for use with Garmin InReach (cut-and-paste). Thus the app allows many ways to spot:
    • Via SMS (2-way: send command, get response back)
    • Via eMail (2-way)
    • Via Garmin inReach (2-way)
    • Via Internet (coming soon) (2-way)
    • Via HF FT8 (1-way: send command)
    • Via HF FT8 registering of a CW SOTA “Alert” for subsequent CW use with RBNhole (1-way)
    • Via SMS/eMail registering of a CW SOTA “Alert” for RBNhole use (2-way)
  2. Copy Summit / Park (Lat,Long) values to clipboard for use in other mapping apps
  3. Lots of changes to SOTACAT handling. The bi-directional sync works better. Spotting via FT8 still has a bug where it sometimes aborts (easy work-around: try it again), but works much better.
    • Better at cancelling SOTACAT transmission sequence in progress

If you have a SOTACAT, please upgrade your firmware and try the new SOTAMAT V2.1.0 with it. The new SOTACAT firmware fixes some additional networking issues, on top of the prior networking fixes. Getting an ESP32 to do split networking for both iOS and Android while also running DHCP and mDNS and while in Access Point mode and Station mode at the same time while scanning for multiple stations (all at the same time) is tricky! Should work now. At least it works for me!

Feedback welcome,
73 de AB6D - Brian

5 Likes

Invitation code for testflight?

I was scrolling and accidentally hit two star review. Submit was automatic. Manual submit would have avoided that review.

Elliott, K6EL

1 Like

Hi Elliott @K6EL ,

If I remember from Pacificon you have an iPhone and not Android.

You should not need any “invitation code” for Apple’s Testflight. To install a Beta this should work:

  1. Uninstall any prior non-Beta (“released”) version of SOTAMAT you have. You do this by a long-press on the app icon and telling it to delete.
  2. Install the “Testflight” application from Apple using the Apple App Store. The Testflight app is like an App Store specifically for Beta software. The Testflight app is not installed by default and is required.
  3. On your iOS device that has Testflight installed, you click on this link to get the SOTAMAT Beta: https://testflight.apple.com/join/UQuW6g1E
  4. That link should auto-launch the Apple Testflight app and should have a button to install the SOTAMAT Beta. It should not ask for an invitation code since the Beta is supposed to be open to everyone.

That page in Testflight should not have any review “stars” for you to click on. I think you might have been in the normal Apple App Store (where the non-Beta version is) and not in the Apple Testflight app store for Beta software. In the main App Store I don’t control the user interface around stars (that’s Apple). My app does not request reviews, though they are appreciated. You can always change your rating in the App Store if you want.

73 de AB6D - Brian

1 Like

Hi Brian,
A question on SOTACAT.
I’ve connected the SEEED XIA0 to the PC USB port, the code from your website loads fine, I can log on to the SOTACAT from the phone WiFi and it serves the SOTACAT web page.
The SOTACAT only runs for 60 seconds though. Same with the USB port, it disconnects after 60 seconds.
I haven’t interfaced it to the KX2 yet.
Cheers,
Glenn VK3YY.

@VK3YY ,

That is what I would expect it to do.

The SOTACAT is battery powered. Since the project is open source, there are different implementations of the hardware out there. Some have a power switch, and some use the TRRS connector as a switch. It is possible that when people finish using the SOTACAT they may forget to turn it off, and that would run the battery dry. So there is a watchdog timer that shuts the unit down if it can’t communicate with the Elecraft after 60 seconds, and if thinks that it is not on a charger.

Here is the relevant code (the full code is here: https://github.com/SOTAmat/SOTAcat):

The setup.cpp file has this code which spins up a background task to manage auto-power-off:

    // Note the current time since our inactivity power down time will be based on this.
    time (&LastUserActivityUnixTime);
    // Start a watchdog timer to shut the unit down if we aren't able to fully initialize within 60 seconds.
    TaskHandle_t xSetupWatchdogHandle = NULL;
    xTaskCreate (&startup_watchdog_timer, "startup_watchdog_task", 2048, NULL, SC_TASK_PRIORITY_NORMAL, &xSetupWatchdogHandle);
    ESP_LOGI (TAG8, "shutdown watchdog started.");

… and here is the implementation of the auto-power-off watchdog task:

/**
 * Start a watchdog timer to shut the unit down if we aren't able to fully initialize within 60 seconds,
 * and our battery is below the BATTERY_SHUTOFF_PERCENTAGE
 */
void startup_watchdog_timer (void * _) {
    do {
        vTaskDelay (pdMS_TO_TICKS (60000));
    }
    // We will never turn off if the unit is plugged in and is charging,
    // as the battery voltage will never dip below 80%.
    while (get_battery_percentage() >= BATTERY_SHUTOFF_PERCENTAGE);

    ESP_LOGI (TAG8, "Startup watchdog timer expired, and battery not charged; shutting down.");
    enter_deep_sleep();
}

…and so after 60,000 milliseconds (which is 60 seconds), the code does indeed go into deep sleep mode to preserve the battery if it can’t communicate with the Elecraft. And here is the enter_deep_sleep routine:

void enter_deep_sleep () {
    ESP_LOGV (TAG8, "trace: %s()", __func__);

    ESP_LOGI (TAG8, "preparing for deep sleep:");
    esp_wifi_stop();
    ESP_LOGI (TAG8, "wifi is stopped.");
    shutdown_adc();
    ESP_LOGI (TAG8, "adc is shutdown.");

    // Return all the GPIO pins to their isolated state so that there isn't current drain when sleeping
    gpio_set_level (LED_BLUE, LED_OFF);
    gpio_set_direction (LED_BLUE, GPIO_MODE_INPUT);
    gpio_pullup_dis (LED_BLUE);
    gpio_pulldown_dis (LED_BLUE);

    gpio_set_level (LED_RED, LED_OFF);
    gpio_set_direction (LED_RED, GPIO_MODE_INPUT);
    gpio_pullup_dis (LED_RED);
    gpio_pulldown_dis (LED_RED);

    if (LED_RED_SUPL > 0) {
        gpio_set_direction (LED_RED_SUPL, GPIO_MODE_INPUT);
        gpio_pullup_dis (LED_RED_SUPL);
        gpio_pulldown_dis (LED_RED_SUPL);
    }

#ifndef SEEED_XIAO
    rtc_gpio_isolate (LED_BLUE);
    rtc_gpio_isolate (LED_RED);
    rtc_gpio_isolate (LED_RED_SUPL);
#endif

    ESP_LOGI (TAG8, "all gpio pins off and isolated.");
    ESP_LOGI (TAG8, "entering deep sleep...");
    ESP_LOGI (TAG8, "goodnight!");
    esp_deep_sleep_start();
}

Is there a reason you aren’t plugging the SOTACAT into the Elecraft?
Does your unit have a Battery monitoring circuit so it can tell if it is being charged?

73 de AB6D - Brian

1 Like

Thanks Brian.

I will be plugging the SOTACAT into the Elecraft soon… I just got a little impatient and tried it before I had sorted out the interfacing. :slight_smile:
I was wondering if it was something like that…
The board has battery pads and states it has battery management on board, so hopefully the battery monitoring is on the same port. I’ll take a look.

Thanks again for your great work. Hopefully I’ll have it running soon.
Cheers,
Glenn.

1 Like

The Seeed XAIO does not have battery management by itself. If you build an @AB6D style SOTACAT by hand soldering, then battery management is a voltage divider (resistors) that you place between the battery input and the ADC (analog to digital converter) of the XAIO.

If you have a @K5EM SOTACAT, then the XAIO board gets soldered onto the K5EM PCB and the K5EM PCB has a much more sophisticated (and accurate) battery management chip. The
default firmware tells that chip it has a very specific battery – if you plan to use a different battery then you need to do some extra programming work for the BMS chip.

73 de AB6D - Brian

1 Like

Thanks Brian, I’ll do the voltage dividers between the battery and the ADC port then.
Cheers,
Glenn VK3YY.

I assume you’ve seen the written instructions and the YouTube build video, right? It has the specific resistors to use and which XAIO pins to use…

Also, in the instructions it suggests a 300 mAH battery. That is no longer recommended because the XAIO charging circuit pumps too much charge current into such a small battery and the fast charge will overheat the battery and limit lifespan. Any battery just a bit bigger is fine, like a 400 mAH or larger.

-Brian

2 Likes