Compare commits

...

8 Commits

Author SHA1 Message Date
Gunnar Skjold
398407350c Fixed typ-o in MQTT topic for temperature and moved voltage bootup check into compiler option SELF_POWERED 2020-04-10 08:52:56 +02:00
Gunnar Skjold
5e33a15e85 Fixed build file 2020-04-09 08:58:56 +02:00
Gunnar Skjold
7f51534e91 Fixed page title on reboot page 2020-04-09 08:56:50 +02:00
Gunnar Skjold
0f5af6b274 Fixed ESP32 crash with RemoteDebug and unformatted SPIFFS. Added battery voltage for Lolin D32 and moved ESP_VCC_CALIB_FACTOR to cover all boards 2020-04-09 08:44:25 +02:00
Gunnar Skjold
7886ce668e Fixed build file? 2020-04-07 21:16:31 +02:00
Gunnar Skjold
0f4848c872 Added missing dep 2020-04-07 20:56:49 +02:00
Gunnar Skjold
6911d203ca Merge pull request #56 from gskjold/dev-v1.2
Version 1.2
2020-04-07 20:53:39 +02:00
Gunnar Skjold
e96b5bbf1b Changes during testing 2020-03-30 21:14:58 +02:00
8 changed files with 49 additions and 25 deletions

View File

@@ -20,7 +20,6 @@ jobs:
GITHUB_REF: ${{ github.ref }}
run: echo ::set-output name=tag::$(echo ${GITHUB_REF:11})
- name: Get release version for code
id: release_tag
env:
GITHUB_REF: ${{ github.ref }}
run: echo ::set-env name=GITHUB_TAG::$(echo ${GITHUB_REF##*/})

View File

@@ -4,7 +4,7 @@ extra_configs = platformio-user.ini
[common]
framework = arduino
lib_deps = HanReader@1.0.1, ArduinoJson@6.14.1, MQTT@2.4.7, DallasTemperature@3.8.1, EspSoftwareSerial@6.7.1, Base64@1.0.0, RemoteDebug@3.0.5
lib_deps = HanReader@1.0.1, ArduinoJson@6.14.1, MQTT@2.4.7, DallasTemperature@3.8.1, EspSoftwareSerial@6.7.1, Base64@1.0.0, RemoteDebug@3.0.5, Time@1.6
[env:hw1esp12e]
platform = espressif8266@2.3.3

View File

@@ -61,7 +61,6 @@ void setup() {
if(config.hasConfig()) {
config.load();
}
#if DEBUG_MODE
#if HW_ROARFRED
if(config.getMeterType() == 3) {
Serial.begin(2400, SERIAL_8N1);
@@ -70,21 +69,12 @@ void setup() {
}
#else
Serial.begin(115200);
#endif
#endif
if(config.hasConfig()) {
Debug.begin(config.getWifiHostname(), (uint8_t) config.getDebugLevel());
if(config.getAuthSecurity() > 0) {
Debug.setPassword(config.getAuthPassword());
}
if(config.hasConfig() && config.isDebugSerial()) {
Debug.setSerialEnabled(config.isDebugSerial());
if(!config.isDebugTelnet()) {
Debug.stop();
}
} else {
#if DEBUG_MODE
Debug.begin("localhost", RemoteDebug::DEBUG);
Debug.setSerialEnabled(true);
#endif
}
@@ -96,13 +86,15 @@ void setup() {
debugI("Voltage: %.2fV", vcc);
}
if (vcc > 0 && vcc < 3.1) {
#if SELF_POWERED
if (vcc > 2.5 && vcc < 3.25) { // Only sleep if voltage is realistic and too low
if(Debug.isActive(RemoteDebug::INFO)) {
debugI("Votltage is too low, sleeping");
Serial.flush();
}
ESP.deepSleep(10000000); //Deep sleep to allow output cap to charge up
}
#endif
#if HAS_RGB_LED
// Initialize RGB LED pins
@@ -119,7 +111,16 @@ void setup() {
WiFi.softAPdisconnect(true);
WiFi.mode(WIFI_OFF);
if(SPIFFS.begin()) {
bool spiffs = false;
#if defined(ESP32)
debugD("ESP32 SPIFFS");
spiffs = SPIFFS.begin(true);
#else
debugD("ESP8266 SPIFFS");
spiffs = SPIFFS.begin();
#endif
if(spiffs) {
bool flashed = false;
if(SPIFFS.exists("/firmware.bin")) {
if(Debug.isActive(RemoteDebug::INFO)) debugI("Found firmware");
@@ -297,10 +298,18 @@ void loop() {
if (WiFi.status() != WL_CONNECTED) {
wifiConnected = false;
Debug.stop();
WiFi_connect();
} else {
if(!wifiConnected) {
wifiConnected = true;
if(config.getAuthSecurity() > 0) {
Debug.setPassword(config.getAuthPassword());
}
Debug.begin(config.getWifiHostname(), (uint8_t) config.getDebugLevel());
if(!config.isDebugTelnet()) {
Debug.stop();
}
if(Debug.isActive(RemoteDebug::INFO)) {
debugI("Successfully connected to WiFi!");
debugI("IP: %s", WiFi.localIP().toString().c_str());
@@ -698,7 +707,7 @@ void sendSystemStatusToMqtt() {
}
mqtt.publish(config.getMqttPublishTopic() + "/rssi", String(hw.getWifiRssi()));
if(temperature != DEVICE_DISCONNECTED_C) {
mqtt.publish(config.getMqttPublishTopic() + "/vcc", String(temperature, 2));
mqtt.publish(config.getMqttPublishTopic() + "/temperature", String(temperature, 2));
}
}

View File

@@ -1,16 +1,20 @@
#include "HwTools.h"
double HwTools::getVcc() {
double volts = 0.0;
#if defined(ARDUINO_ESP8266_WEMOS_D1MINI)
return (((double) ESP.getVcc()) / 900); // This board has a voltage divider on VCC. Yes, 900 is correct
volts = (((double) ESP.getVcc()) / 900.0); // This board has a voltage divider on VCC.
#elif defined(ARDUINO_LOLIN_D32)
volts = (analogRead(GPIO_NUM_35) / 4095.0) * 3.3 * 2.25; // We are actually reading battery voltage here
#elif defined(ESP8266)
#if defined(ESP_VCC_CALIB_FACTOR)
return ((double) ESP.getVcc()) / 1024 * ESP_VCC_CALIB_FACTOR;
#else
return ((double) ESP.getVcc()) / 1024;
#endif
volts = ((double) ESP.getVcc()) / 1024.0;
#endif
#if defined(ESP_VCC_CALIB_FACTOR)
return volts * ESP_VCC_CALIB_FACTOR;
#else
return volts;
#endif
return -1;
}
double HwTools::getTemperature() {

View File

@@ -31,6 +31,9 @@ public:
int getWifiRssi();
HwTools() {
#if defined(ARDUINO_LOLIN_D32)
pinMode(GPIO_NUM_35, INPUT);
#endif
oneWire = new OneWire(TEMP_SENSOR_PIN);
tempSensor = new DallasTemperature(this->oneWire);
};

View File

@@ -248,6 +248,9 @@ void AmsWebServer::configMqttHtml() {
html.replace("${config.mqttUser}", config->getMqttUser());
html.replace("${config.mqttPassword}", config->getMqttPassword());
html.replace("${config.mqttPayloadFormat}", String(config->getMqttPayloadFormat()));
for(int i = 0; i<2; i++) {
html.replace("${config.mqttPayloadFormat" + String(i) + "}", config->getMqttPayloadFormat() == i ? "selected" : "");
}
server.setContentLength(html.length());
server.send(200, "text/html", html);
@@ -496,7 +499,9 @@ void AmsWebServer::handleSave() {
if(config->getAuthSecurity() > 0) {
config->setAuthUser(server.arg("authUser"));
config->setAuthPassword(server.arg("authPassword"));
debugger->setPassword(config->getAuthPassword());
} else {
debugger->setPassword("");
config->clearAuth();
}
}
@@ -505,12 +510,15 @@ void AmsWebServer::handleSave() {
config->setDebugTelnet(server.hasArg("debugTelnet") && server.arg("debugTelnet") == "true");
config->setDebugSerial(server.hasArg("debugSerial") && server.arg("debugSerial") == "true");
config->setDebugLevel(server.arg("debugLevel").toInt());
debugger->stop();
debugger->begin(config->getWifiHostname(), (uint8_t) config->getDebugLevel());
if(config->getAuthSecurity() > 0) {
debugger->setPassword(config->getAuthPassword());
} else {
debugger->setPassword("");
}
debugger->setSerialEnabled(config->isDebugSerial());
debugger->begin(config->getWifiHostname(), (uint8_t) config->getDebugLevel());
if(!config->isDebugTelnet()) {
debugger->stop();
}

View File

@@ -41,6 +41,7 @@
<form method="post" action="/save">
<input type="hidden" name="sysConfig" value="true"/>
<div class="my-3 p-3 bg-white rounded shadow">
<div class="alert alert-warning">!!WARNING!!<br/>Remote debugging is considered insecure and should not be left enabled when not debugging</div>
<div class="row">
<div class="col-md-3">
<label><input type="checkbox" name="debugTelnet" value="true" ${config.debugTelnet}/> Telnet debugger</label>

View File

@@ -2,7 +2,7 @@
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>AMS reader - Meter configuration</title>
<title>AMS reader - Restarting, please wait</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="stylesheet" type="text/css" href="boot.css"/>
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>