From 04d31200cbcf1db02f30ac7fcbd4eb16cfdeda5a Mon Sep 17 00:00:00 2001 From: lumapu Date: Mon, 25 Apr 2022 23:28:59 +0200 Subject: [PATCH] * NRF24 amlifierer power level can be configured in web setup * fixed MQTT status (was inverted) * fixed interval uint from seconds to ms --- tools/esp8266/app.cpp | 22 ++++++++++++++++++++-- tools/esp8266/defines.h | 8 ++++++-- tools/esp8266/hmRadio.h | 12 ++++++++++-- tools/esp8266/html/h/setup_html.h | 2 +- tools/esp8266/html/setup.html | 6 +++++- 5 files changed, 42 insertions(+), 8 deletions(-) diff --git a/tools/esp8266/app.cpp b/tools/esp8266/app.cpp index 4c81e95d..6d4056c2 100644 --- a/tools/esp8266/app.cpp +++ b/tools/esp8266/app.cpp @@ -68,6 +68,9 @@ void app::setup(const char *ssid, const char *pwd, uint32_t timeout) { mEep->read(ADDR_PINOUT+2, &mSys->Radio.pinIrq); + // nrf24 amplifier power + mEep->read(ADDR_RF24_AMP_PWR, &mSys->Radio.AmplifierPower); + // mqtt uint8_t mqttAddr[MQTT_ADDR_LEN]; char mqttUser[MQTT_USER_LEN]; @@ -93,7 +96,7 @@ void app::setup(const char *ssid, const char *pwd, uint32_t timeout) { mSys->setup(); - if(!mSettingsValid) + if(!mWifiSettingsValid) Serial.println("Warn: your settings are not valid! check [IP]/setup"); } @@ -285,6 +288,17 @@ void app::showSetup(void) { html.replace("{PINOUT}", String(pinout)); + // nrf24l01+ + String rf24; + for(uint8_t i = 0; i <= 3; i++) { + rf24 += ""; + } + html.replace("{RF24}", String(rf24)); + + if(mSettingsValid) { mEep->read(ADDR_INV_INTERVAL, &interval); html.replace("{INV_INTERVAL}", String(interval)); @@ -409,7 +423,7 @@ void app::showLiveData(void) { //----------------------------------------------------------------------------- void app::showMqtt(void) { String txt = "connected"; - if(mMqtt.isConnected()) + if(!mMqtt.isConnected()) txt = "not " + txt; mWeb->send(200, "text/plain", txt); } @@ -456,6 +470,10 @@ void app::saveValues(bool webSend = true) { } + // nrf24 amplifier power + mSys->Radio.AmplifierPower = mWeb->arg(String(pinArgNames[i])).toInt() & 0x03; + mEep->write(ADDR_RF24_AMP_PWR, mSys->Radio.AmplifierPower); + // mqtt uint8_t mqttAddr[MQTT_ADDR_LEN] = {0}; char mqttUser[MQTT_USER_LEN]; diff --git a/tools/esp8266/defines.h b/tools/esp8266/defines.h index c94668cc..74bb4f90 100644 --- a/tools/esp8266/defines.h +++ b/tools/esp8266/defines.h @@ -25,7 +25,7 @@ //------------------------------------- #define VERSION_MAJOR 0 #define VERSION_MINOR 2 -#define VERSION_PATCH 6 +#define VERSION_PATCH 7 //------------------------------------- @@ -50,6 +50,8 @@ typedef struct { #define PINOUT_LEN 3 // 3 pins: CS, CE, IRQ +#define RF24_AMP_PWR_LEN 1 + #define MQTT_ADDR_LEN 4 // IP #define MQTT_USER_LEN 16 #define MQTT_PWD_LEN 32 @@ -66,7 +68,9 @@ typedef struct { #define ADDR_PINOUT ADDR_START_SETTINGS -#define ADDR_INV_ADDR ADDR_PINOUT + PINOUT_LEN +#define ADDR_RF24_AMP_PWR ADDR_PINOUT + PINOUT_LEN + +#define ADDR_INV_ADDR ADDR_RF24_AMP_PWR + RF24_AMP_PWR_LEN #define ADDR_INV_NAME ADDR_INV_ADDR + INV_ADDR_LEN #define ADDR_INV_TYPE ADDR_INV_NAME + INV_NAME_LEN #define ADDR_INV_INTERVAL ADDR_INV_TYPE + INV_TYPE_LEN diff --git a/tools/esp8266/hmRadio.h b/tools/esp8266/hmRadio.h index ea0120fc..02989ec9 100644 --- a/tools/esp8266/hmRadio.h +++ b/tools/esp8266/hmRadio.h @@ -13,6 +13,10 @@ #define DUMMY_RADIO_ID ((uint64_t)0xDEADBEEF01ULL) +const char* const rf24AmpPower[] = {"MIN", "LOW", "HIGH", "MAX"}; + + + //----------------------------------------------------------------------------- // MACROS //----------------------------------------------------------------------------- @@ -54,7 +58,8 @@ class HmRadio { pinCe = CE_PIN; pinIrq = IRQ_PIN; - mSendCnt = 0; + AmplifierPower = 1; + mSendCnt = 0; } ~HmRadio() {} @@ -79,7 +84,8 @@ class HmRadio { // enable only receiving interrupts mNrf24.maskIRQ(true, true, false); - mNrf24.setPALevel(RF24_PA_MAX); + Serial.println("RF24 Amp Pwr: RF24_PA_" + String(rf24AmpPower[AmplifierPower])); + mNrf24.setPALevel(AmplifierPower & 0x03); mNrf24.startListening(); Serial.println("Radio Config:"); @@ -180,6 +186,8 @@ class HmRadio { uint8_t pinCe; uint8_t pinIrq; + uint8_t AmplifierPower; + private: void sendPacket(uint64_t invId, uint8_t buf[], uint8_t len) { //Serial.println("sent packet: #" + String(mSendCnt)); diff --git a/tools/esp8266/html/h/setup_html.h b/tools/esp8266/html/h/setup_html.h index 0fb05a10..83000eb7 100644 --- a/tools/esp8266/html/h/setup_html.h +++ b/tools/esp8266/html/h/setup_html.h @@ -1,4 +1,4 @@ #ifndef __SETUP_H__ #define __SETUP_H__ -const char setup_html[] PROGMEM = "Setup - {DEVICE}

Setup

Enter the credentials to your prefered WiFi station. After rebooting the device tries to connect with this information.

WiFi

Device Host Name

ERASE SETTINGS (not WiFi)

Inverter

{INVERTERS}

General

Pinout (Wemos)

{PINOUT}

MQTT

 

Home

Update Firmware

AHOY - {VERSION}

"; +const char setup_html[] PROGMEM = "Setup - {DEVICE}

Setup

Enter the credentials to your prefered WiFi station. After rebooting the device tries to connect with this information.

WiFi

Device Host Name

ERASE SETTINGS (not WiFi)

Inverter

{INVERTERS}

General

Pinout (Wemos)

{PINOUT}

Radio (NRF24L01+)

MQTT

 

Home

Update Firmware

AHOY - {VERSION}

"; #endif /*__SETUP_H__*/ diff --git a/tools/esp8266/html/setup.html b/tools/esp8266/html/setup.html index b78608f3..93f91b6e 100644 --- a/tools/esp8266/html/setup.html +++ b/tools/esp8266/html/setup.html @@ -34,6 +34,10 @@

Pinout (Wemos)

{PINOUT} +

Radio (NRF24L01+)

+ + +

MQTT

@@ -43,7 +47,7 @@ - +