From f52fe5d3968c3ec3b72405beeb1769423eeb3281 Mon Sep 17 00:00:00 2001 From: gemu2015 Date: Mon, 25 Nov 2019 19:08:05 +0100 Subject: [PATCH] sml support for 8e1 --- tasmota/xsns_53_sml.ino | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) mode change 100644 => 100755 tasmota/xsns_53_sml.ino diff --git a/tasmota/xsns_53_sml.ino b/tasmota/xsns_53_sml.ino old mode 100644 new mode 100755 index 4fa8875e2..21199ef9e --- a/tasmota/xsns_53_sml.ino +++ b/tasmota/xsns_53_sml.ino @@ -1207,7 +1207,7 @@ void sml_empty_receiver(uint32_t meters) { void sml_shift_in(uint32_t meters,uint32_t shard) { uint32_t count; - if (meter_desc_p[meters].type!='e' && meter_desc_p[meters].type!='m' && meter_desc_p[meters].type!='p') { + if (meter_desc_p[meters].type!='e' && meter_desc_p[meters].type!='m' && meter_desc_p[meters].type!='M' && meter_desc_p[meters].type!='p') { // shift in for (count=0; count=9) { @@ -1263,7 +1263,7 @@ void sml_shift_in(uint32_t meters,uint32_t shard) { } } sb_counter++; - if (meter_desc_p[meters].type!='e' && meter_desc_p[meters].type!='m' && meter_desc_p[meters].type!='p') SML_Decode(meters); + if (meter_desc_p[meters].type!='e' && meter_desc_p[meters].type!='m' && meter_desc_p[meters].type!='M' && meter_desc_p[meters].type!='p') SML_Decode(meters); } @@ -1523,7 +1523,7 @@ void SML_Decode(uint8_t index) { } } else { double dval; - if (meter_desc_p[mindex].type!='e' && meter_desc_p[mindex].type!='r' && meter_desc_p[mindex].type!='m' && meter_desc_p[mindex].type!='p') { + if (meter_desc_p[mindex].type!='e' && meter_desc_p[mindex].type!='r' && meter_desc_p[mindex].type!='m' && meter_desc_p[mindex].type!='M' && meter_desc_p[mindex].type!='p') { // get numeric values if (meter_desc_p[mindex].type=='o' || meter_desc_p[mindex].type=='c') { dval=CharToDouble((char*)cp); @@ -2061,7 +2061,7 @@ init10: } else { // serial input, init #ifdef SPECIAL_SS - if (meter_desc_p[meters].type=='m' || meter_desc_p[meters].type=='p') { + if (meter_desc_p[meters].type=='m' || meter_desc_p[meters].type=='M' || meter_desc_p[meters].type=='p') { meter_ss[meters] = new TasmotaSerial(meter_desc_p[meters].srcpin,meter_desc_p[meters].trxpin,1); } else { meter_ss[meters] = new TasmotaSerial(meter_desc_p[meters].srcpin,meter_desc_p[meters].trxpin,1,1); @@ -2072,7 +2072,12 @@ init10: if (meter_ss[meters]->begin(meter_desc_p[meters].params)) { meter_ss[meters]->flush(); } - if (meter_ss[meters]->hardwareSerial()) { ClaimSerial(); } + if (meter_ss[meters]->hardwareSerial()) { + if (meter_desc_p[meters].type=='M') { + Serial.begin(meter_desc_p[meters].params, SERIAL_8E1); + } + ClaimSerial(); + } } } @@ -2234,7 +2239,7 @@ void SML_Send_Seq(uint32_t meter,char *seq) { slen++; if (slen>=sizeof(sbuff)) break; } - if (script_meter_desc[meter].type=='m') { + if (script_meter_desc[meter].type=='m' || script_meter_desc[meter].type=='M') { *ucp++=0; *ucp++=2; // append crc