You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
118 lines
3.2 KiB
118 lines
3.2 KiB
#include "nx/software/SystemSettings.h" |
|
#include "nx/software/SystemSettingsApi.h" |
|
#include "nx/software/AppSettings.h" |
|
#include "nx/software/AppSettingsApi.h" |
|
|
|
#include "freertos/FreeRTOS.h" |
|
#include "esp_system.h" |
|
|
|
#include "nx/firmware/Storage.h" |
|
#include "nx/firmware/Wifi.h" |
|
#include "nx/firmware/MqTriggerHttpServer.h" |
|
#include "nx/firmware/MqttClient.h" |
|
#include "nx/firmware/SntpClient.h" |
|
|
|
#include "HttpHandlers.h" |
|
|
|
#include "esp_log.h" |
|
|
|
#include <string.h> |
|
|
|
#define TAG "MAIN" |
|
|
|
#define SNTP_RETRIES 5 |
|
|
|
static const char* DEVICE_NAME_PREFIX = "mqtrigger-"; |
|
|
|
extern const char ca_crt_start[] asm("_binary_ca_crt_start"); |
|
|
|
static void startWifi(void); |
|
static void onWifiConnected(void); |
|
static void onAppSettingsUpdate(void); |
|
static void onMqttMessage(const char* msg); |
|
|
|
static SystemSettings* systemSettings = NULL; |
|
static AppSettings* appSettings = NULL; |
|
static WifiSettings wifiSettings; |
|
static MqttSettings mqttSettings; |
|
|
|
static const MqTriggerHttpCallbacks httpCallbacks = { |
|
.getRoot = rootHandler, |
|
.getJs = jsHandler, |
|
.getCss = cssHandler, |
|
.getSysSetForm = sysFormHandler, |
|
.getAppSetForm = appFormHandler, |
|
.getSysSet = nxApiGetSystemSettings, |
|
.postSysSet = nxApiUpdateSystemSettings, |
|
.getAppSet = nxApiGetAppSettings, |
|
.postAppSet = nxApiUpdateAppSettings |
|
// .postCmd = nxApiHandleLedCmd |
|
}; |
|
|
|
void app_main(void) |
|
{ |
|
nxInitStorage(); |
|
|
|
nxInitSystemSettings(nxStorageWrite, nxStorageRead); |
|
nxInitAppSettings(nxStorageWrite, nxStorageRead, onAppSettingsUpdate); |
|
|
|
systemSettings = nxGetSystemSettings(); |
|
appSettings = nxGetAppSettings(); |
|
|
|
nxSetWifiConnectedCallback(onWifiConnected); |
|
startWifi(); |
|
} |
|
|
|
// ----- |
|
|
|
static void startWifi(void) |
|
{ |
|
strcpy(systemSettings->wifiSsid, "cintra"); |
|
strcpy(systemSettings->wifiPassword, "fffefdfcfb"); |
|
systemSettings->useStaticAddr = true; |
|
systemSettings->ip4addr[3] = 91; |
|
|
|
wifiSettings = (struct WifiSettings){ |
|
.wname = systemSettings->wifiSsid, |
|
.wpass = systemSettings->wifiPassword, |
|
.devicePrefix = DEVICE_NAME_PREFIX, |
|
.usePowerSave = &(systemSettings->wifiPowerSave), |
|
.useStaticAddr = &(systemSettings->useStaticAddr), |
|
.ip4addr = systemSettings->ip4addr, |
|
.ip4gw = systemSettings->ip4gw, |
|
.ip4mask = systemSettings->ip4mask, |
|
.dns = systemSettings->dnsAddr |
|
}; |
|
|
|
ESP_LOGI(TAG, "Initializing WiFi"); |
|
nxInitWifi(&wifiSettings); |
|
} |
|
|
|
static void onWifiConnected(void) |
|
{ |
|
nxInitSntpClient(SNTP_RETRIES, systemSettings->sntpAddr, systemSettings->tzEnv); |
|
|
|
strcpy(mqttSettings.brokerAddr, appSettings->mqttHost); |
|
strcpy(mqttSettings.apiTopic, appSettings->mqttApiUri); |
|
strcpy(mqttSettings.hbTopic, appSettings->mqttHbUri); |
|
strcpy(mqttSettings.user, appSettings->mqttUser); |
|
strcpy(mqttSettings.password, appSettings->mqttPassword); |
|
mqttSettings.hbIntervalSec = appSettings->mqttHbIntervalSec; |
|
mqttSettings.caCrt = appSettings->mqttUseTls ? ca_crt_start : NULL; |
|
mqttSettings.messageCb = onMqttMessage; |
|
|
|
nxStartMqttClient(&mqttSettings); |
|
|
|
nxSetMqTriggerHttpCallbacks(&httpCallbacks); |
|
nxStartMqTriggerHttpServer(); |
|
} |
|
|
|
static void onAppSettingsUpdate(void) |
|
{ |
|
ESP_LOGI(TAG, "App settings updated"); |
|
} |
|
|
|
static void onMqttMessage(const char* msg) |
|
{ |
|
ESP_LOGI(TAG, "MQTT MESSAGE RECEIVED: %s", msg); |
|
}
|
|
|