Some cleanup

This commit is contained in:
Gunnar Skjold
2020-09-05 09:40:07 +02:00
parent 17bd85ebd0
commit a332e38b97

View File

@@ -283,7 +283,6 @@ bool wifiConnected = false;
unsigned long lastTemperatureRead = 0; unsigned long lastTemperatureRead = 0;
float temperatures[32]; float temperatures[32];
unsigned long lastRead = 0;
unsigned long lastSuccessfulRead = 0; unsigned long lastSuccessfulRead = 0;
unsigned long lastErrorBlink = 0; unsigned long lastErrorBlink = 0;
@@ -332,6 +331,7 @@ void loop() {
} }
if(now - lastTemperatureRead > 15000) { if(now - lastTemperatureRead > 15000) {
unsigned long start = millis();
hw.updateTemperatures(); hw.updateTemperatures();
lastTemperatureRead = now; lastTemperatureRead = now;
@@ -368,6 +368,7 @@ void loop() {
mqtt.publish(config.getMqttPublishTopic(), msg.c_str()); mqtt.publish(config.getMqttPublishTopic(), msg.c_str());
} }
} }
debugD("Used %d ms to update temperature", millis()-start);
} }
// Only do normal stuff if we're not booted as AP // Only do normal stuff if we're not booted as AP
@@ -442,12 +443,8 @@ void loop() {
setupHanPort(config.getHanPin(), config.getMeterType()); setupHanPort(config.getHanPin(), config.getMeterType());
config.ackMeterChanged(); config.ackMeterChanged();
} }
delay(1);
if(now - lastRead > 100) { readHanPort();
yield();
readHanPort();
lastRead = now;
}
ws.loop(); ws.loop();
delay(1); // Needed for auto modem sleep delay(1); // Needed for auto modem sleep
} }
@@ -599,11 +596,6 @@ int currentMeterType = 0;
AmsData lastMqttData; AmsData lastMqttData;
void readHanPort() { void readHanPort() {
if (hanReader.read()) { if (hanReader.read()) {
// Empty serial buffer. For some reason this seems to make a difference. Some garbage on the wire after package?
while(hanSerial->available()) {
hanSerial->read();
}
lastSuccessfulRead = millis(); lastSuccessfulRead = millis();
if(config.getMeterType() > 0) { if(config.getMeterType() > 0) {
@@ -840,41 +832,33 @@ void readHanPort() {
} }
} else { } else {
// Auto detect meter if not set // Auto detect meter if not set
for(int i = 1; i <= 4; i++) { for(int i = 1; i <= 3; i++) {
String list; String list;
switch(i) { switch(i) {
case METER_TYPE_KAIFA: case 1:
list = hanReader.getString((int) Kaifa_List1Phase::ListVersionIdentifier); list = hanReader.getString((int) Kaifa_List1Phase::ListVersionIdentifier);
break; break;
case METER_TYPE_AIDON: case 2:
list = hanReader.getString((int) Aidon_List1Phase::ListVersionIdentifier); list = hanReader.getString((int) Aidon_List1Phase::ListVersionIdentifier);
break; break;
case METER_TYPE_KAMSTRUP: case 3:
list = hanReader.getString((int) Kamstrup_List1Phase::ListVersionIdentifier); list = hanReader.getString((int) Kamstrup_List1Phase::ListVersionIdentifier);
break; break;
case METER_TYPE_OMNIPOWER:
list = hanReader.getString((int) Omnipower_DLMS::ListVersionIdentifier);
break;
} }
if(!list.isEmpty()) { if(!list.isEmpty()) {
list.toLowerCase(); list.toLowerCase();
if(list.startsWith("kfm")) { if(list.startsWith("kfm")) {
config.setMeterType(METER_TYPE_KAIFA); config.setMeterType(1);
if(Debug.isActive(RemoteDebug::INFO)) debugI("Detected Kaifa meter"); if(Debug.isActive(RemoteDebug::INFO)) debugI("Detected Kaifa meter");
break;
} else if(list.startsWith("aidon")) { } else if(list.startsWith("aidon")) {
config.setMeterType(METER_TYPE_AIDON); config.setMeterType(2);
if(Debug.isActive(RemoteDebug::INFO)) debugI("Detected Aidon meter"); if(Debug.isActive(RemoteDebug::INFO)) debugI("Detected Aidon meter");
break;
} else if(list.startsWith("kamstrup")) { } else if(list.startsWith("kamstrup")) {
switch(i) { config.setMeterType(3);
case METER_TYPE_KAMSTRUP: if(Debug.isActive(RemoteDebug::INFO)) debugI("Detected Kamstrup meter");
config.setMeterType(METER_TYPE_KAMSTRUP); break;
if(Debug.isActive(RemoteDebug::INFO)) debugI("Detected Kamstrup meter");
break;
case METER_TYPE_OMNIPOWER:
config.setMeterType(METER_TYPE_OMNIPOWER);
if(Debug.isActive(RemoteDebug::INFO)) debugI("Detected Kamstrup meter");
break;
}
} }
} }
} }
@@ -890,6 +874,7 @@ void readHanPort() {
if(++currentMeterType == 4) currentMeterType = 1; if(++currentMeterType == 4) currentMeterType = 1;
setupHanPort(config.getHanPin(), currentMeterType); setupHanPort(config.getHanPin(), currentMeterType);
} }
delay(1);
} }
unsigned long wifiTimeout = WIFI_CONNECTION_TIMEOUT; unsigned long wifiTimeout = WIFI_CONNECTION_TIMEOUT;