diff --git a/src/AmsToMqttBridge.ino b/src/AmsToMqttBridge.ino
index 2634e56e..8c0a4d5a 100644
--- a/src/AmsToMqttBridge.ino
+++ b/src/AmsToMqttBridge.ino
@@ -140,21 +140,11 @@ void setup() {
bool shared = false;
config.getMeterConfig(meterConfig);
+ Serial.flush();
+ Serial.end();
if(gpioConfig.hanPin == 3) {
shared = true;
- switch(meterConfig.type) {
- case METER_TYPE_KAMSTRUP:
- case METER_TYPE_OMNIPOWER:
- Serial.begin(2400, SERIAL_8N1);
- break;
- default:
- Serial.begin(2400, SERIAL_8E1);
- break;
- }
- }
-
- if(!shared) {
- Serial.begin(115200);
+ setupHanPort(gpioConfig.hanPin, meterConfig.type);
}
DebugConfig debug;
@@ -459,9 +449,11 @@ void setupHanPort(int pin, int newMeterType) {
debugI("Setting up HAN on pin %d for meter type %d", pin, newMeterType);
HardwareSerial *hwSerial = NULL;
- if(pin == 3) {
+ if(pin == 3 || pin == 113) {
hwSerial = &Serial;
}
+
+
#if defined(ESP32)
if(pin == 9) {
hwSerial = &Serial1;
@@ -478,7 +470,9 @@ void setupHanPort(int pin, int newMeterType) {
if(hwSerial != NULL) {
debugD("Hardware serial");
- Serial.flush();
+ hwSerial->flush();
+ hwSerial->end();
+
switch(newMeterType) {
case METER_TYPE_KAMSTRUP:
case METER_TYPE_OMNIPOWER:
@@ -488,6 +482,17 @@ void setupHanPort(int pin, int newMeterType) {
hwSerial->begin(2400, SERIAL_8E1);
break;
}
+
+ #if defined(ESP8266)
+ if(pin == 3) {
+ debugI("Switching UART0 to pin 1 & 3");
+ Serial.pins(1,3);
+ } else if(pin == 113) {
+ debugI("Switching UART0 to pin 15 & 13");
+ Serial.pins(15,13);
+ }
+ #endif
+
hanSerial = hwSerial;
} else {
debugD("Software serial");
@@ -505,6 +510,7 @@ void setupHanPort(int pin, int newMeterType) {
}
hanSerial = swSerial;
+ Serial.end();
Serial.begin(115200);
}
diff --git a/src/web/AmsWebServer.cpp b/src/web/AmsWebServer.cpp
index eb0418bc..9cb59a38 100644
--- a/src/web/AmsWebServer.cpp
+++ b/src/web/AmsWebServer.cpp
@@ -1211,6 +1211,11 @@ String AmsWebServer::getSerialSelectOptions(int selected) {
#elif defined(ESP8266)
int numGpio = 9;
int gpios[] = {4,5,9,10,12,13,14,15,16};
+ if(selected == 113) {
+ gpioOptions += "";
+ } else {
+ gpioOptions += "";
+ }
#endif
for(int i = 0; i < numGpio; i++) {