diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5ba6a87..fd4ec4e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -22,4 +22,5 @@ jobs: commit: master generateReleaseNotes: true artifacts: ".pio/build/lora_board/firmware.bin,data/is-cfg.json" - token: ${{ secrets.GITHUB_TOKEN }} + owner: ${{ secrets.OWNER }} + token: ${{ secrets.PAT }} diff --git a/src/LoRa_APRS_iGate.cpp b/src/LoRa_APRS_iGate.cpp index 77f0dcc..4dbc9cd 100644 --- a/src/LoRa_APRS_iGate.cpp +++ b/src/LoRa_APRS_iGate.cpp @@ -20,7 +20,7 @@ #include "TaskWifi.h" #include "project_configuration.h" -#define VERSION "22.13.0" +#define VERSION "22.13.2" #define MODULE_NAME "Main" String create_lat_aprs(double lat); diff --git a/src/project_configuration.cpp b/src/project_configuration.cpp index 680f2c0..02e5acb 100644 --- a/src/project_configuration.cpp +++ b/src/project_configuration.cpp @@ -33,8 +33,10 @@ void ProjectConfigurationManagement::readProjectConfiguration(DynamicJsonDocumen JsonArray aps = data["wifi"]["AP"].as(); for (JsonVariant v : aps) { Configuration::Wifi::AP ap; - ap.SSID = v["SSID"].as(); - ap.password = v["password"].as(); + if (v.containsKey("SSID")) + ap.SSID = v["SSID"].as(); + if (v.containsKey("password")) + ap.password = v["password"].as(); conf.wifi.APs.push_back(ap); } if (data.containsKey("beacon") && data["beacon"].containsKey("message")) @@ -44,14 +46,16 @@ void ProjectConfigurationManagement::readProjectConfiguration(DynamicJsonDocumen conf.beacon.use_gps = data["beacon"]["use_gps"] | false; conf.beacon.timeout = data["beacon"]["timeout"] | 15; conf.aprs_is.active = data["aprs_is"]["active"] | true; + if (data.containsKey("aprs_is") && data["aprs_is"].containsKey("passcode")) conf.aprs_is.passcode = data["aprs_is"]["passcode"].as(); if (data.containsKey("aprs_is") && data["aprs_is"].containsKey("server")) conf.aprs_is.server = data["aprs_is"]["server"].as(); conf.aprs_is.port = data["aprs_is"]["port"] | 14580; - conf.digi.active = data["digi"]["active"] | false; - conf.digi.beacon = data["digi"]["beacon"] | false; + conf.digi.active = data["digi"]["active"] | false; + conf.digi.beacon = data["digi"]["beacon"] | false; + conf.lora.frequencyRx = data["lora"]["frequency_rx"] | 433775000; conf.lora.gainRx = data["lora"]["gain_rx"] | 0; conf.lora.frequencyTx = data["lora"]["frequency_tx"] | 433775000; @@ -60,6 +64,7 @@ void ProjectConfigurationManagement::readProjectConfiguration(DynamicJsonDocumen conf.lora.signalBandwidth = data["lora"]["signal_bandwidth"] | 125000; conf.lora.codingRate4 = data["lora"]["coding_rate4"] | 5; conf.lora.tx_enable = data["lora"]["tx_enable"] | true; + conf.display.alwaysOn = data["display"]["always_on"] | true; conf.display.timeout = data["display"]["timeout"] | 10; conf.display.overwritePin = data["display"]["overwrite_pin"] | 0; @@ -69,8 +74,10 @@ void ProjectConfigurationManagement::readProjectConfiguration(DynamicJsonDocumen JsonArray users = data["ftp"]["user"].as(); for (JsonVariant u : users) { Configuration::Ftp::User us; - us.name = u["name"].as(); - us.password = u["password"].as(); + if (u.containsKey("name")) + us.name = u["name"].as(); + if (u.containsKey("password")) + us.password = u["password"].as(); conf.ftp.users.push_back(us); } if (conf.ftp.users.empty()) { @@ -79,19 +86,23 @@ void ProjectConfigurationManagement::readProjectConfiguration(DynamicJsonDocumen us.password = "ftp"; conf.ftp.users.push_back(us); } - if (data.containsKey("mqtt")) { - conf.mqtt.active = data["mqtt"]["active"] | false; - conf.mqtt.server = data["mqtt"]["server"].as(); - conf.mqtt.port = data["mqtt"]["port"].as(); - conf.mqtt.name = data["mqtt"]["name"].as(); + + conf.mqtt.active = data["mqtt"]["active"] | false; + if (data["mqtt"].containsKey("server")) + conf.mqtt.server = data["mqtt"]["server"].as(); + conf.mqtt.port = data["mqtt"]["port"] | 1883; + if (data["mqtt"].containsKey("name")) + conf.mqtt.name = data["mqtt"]["name"].as(); + if (data["mqtt"].containsKey("password")) conf.mqtt.password = data["mqtt"]["password"].as(); - conf.mqtt.topic = data["mqtt"]["topic"].as(); - } - if (data.containsKey("syslog")) { - conf.syslog.active = data["syslog"]["active"] | true; + if (data["mqtt"].containsKey("topic")) + conf.mqtt.topic = data["mqtt"]["topic"].as(); + + conf.syslog.active = data["syslog"]["active"] | true; + if (data["syslog"].containsKey("server")) conf.syslog.server = data["syslog"]["server"].as(); - conf.syslog.port = data["syslog"]["port"] | 514; - } + conf.syslog.port = data["syslog"]["port"] | 514; + if (data.containsKey("ntp_server")) conf.ntpServer = data["ntp_server"].as(); diff --git a/src/project_configuration.h b/src/project_configuration.h index 8a626c6..e32a17a 100644 --- a/src/project_configuration.h +++ b/src/project_configuration.h @@ -124,12 +124,12 @@ public: MQTT() : active(false), server(""), port(1883), name(""), password(""), topic("LoraAPRS/Data") { } - bool active; - String server; - uint16_t port; - String name; - String password; - String topic; + bool active; + String server; + int port; + String name; + String password; + String topic; }; class Syslog {