Giter Site home page Giter Site logo

fredlcore / bsb-lan Goto Github PK

View Code? Open in Web Editor NEW
207.0 21.0 82.0 698.73 MB

LAN/WiFi interface for Boiler-System-Bus (BSB) and Local Process Bus (LPB) and Punkt-zu-Punkt Schnittstelle (PPS) with a Siemens(TM) controller used by Elco Thision, Brötje and similar heating systems

C++ 39.92% Processing 0.60% C 38.42% Perl 0.32% JavaScript 20.62% HTML 0.09% Batchfile 0.02%
bsb lan heating heizung internet elco thision broetje bus pps

bsb-lan's People

Contributors

1coderookie avatar atrejut avatar budbundi avatar buzze77 avatar chamtec avatar czvacko avatar de-cr avatar derber avatar do13 avatar dspinellis avatar dukess avatar fl42 avatar fredlcore avatar fschaeck avatar github-actions[bot] avatar grubana avatar hacki11 avatar henkosch avatar hypetsch avatar ingramz avatar jbaudoux avatar konne avatar liudger avatar loetmeister avatar lucekdev avatar luposoft63 avatar michaelstaemmler avatar nrobadey avatar simplexify avatar v4n1x avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bsb-lan's Issues

Days of week strings

Hi!
WEEKDAY_[MON-SUN]_TEXT and STR[500-506]_TEXT are equal. We can save little bit space.

Posting to /JS causes Arduino reboot

Updated to latest version 0.44, and posting to JS causes my Arduino Mega 2560 to reboot. Using same config on version 0.43 issue could not be reproduced.

Post:
{"Parameter":"10001","Value":"26.1","Type":"0"}

Debug:

POST /JS HTTP/1.1
/JS
setting line: 10001 val: 06 86 00 
LAN->HEIZ INF      3E2E0215 06 86 00 
DC C2 00 0E 02 3E 2E 02 15 06 86 00 F9 81 
READY
Size of cmdtbl1: 31535
Size of cmdtbl2: 20417
free RAM:3669
Reading EEPROM...
192.168.8.210
Waiting 3 seconds to give Ethernet shield time to get ready...
LAN->HEIZ QUR 6225 Configuration -  Device family: 
DC C2 00 0B 06 3D 05 00 02 52 88 
HEIZ->LAN ANS 6225 Configuration -  Device family: 123
DC 80 42 0E 07 05 3D 00 02 00 00 7B FD 64 
#6225: 123
LAN->HEIZ QUR 6226 Configuration -  Device variant: 
DC C2 00 0B 06 3D 05 00 03 42 A9 
HEIZ->LAN ANS 6226 Configuration -  Device variant: 231
DC 80 42 0E 07 05 3D 00 03 00 00 E7 C9 E5 
#6226: 231
Device family: 123
Device variant: 231

MQTT really need leading space?

I want to replace

             char tmpSign[] = " ";
              if (temp < 0) {
                tmpSign[0] = '-';
              }
              float tmpVal = (temp < 0) ? -temp : temp;
              int tmpInt1 = tmpVal;
              float tmpFrac = tmpVal - tmpInt1;
              int tmpInt2 = trunc(tmpFrac * 100);

              float tmpVal2 = (hum < 0) ? -hum : hum;
              int tmpInt3 = tmpVal2;
              float tmpFrac2 = tmpVal2 - tmpInt3;
              int tmpInt4 = trunc(tmpFrac2 * 100);
              sprintf (smallbuf, "%s%d.%02d / %d.%02d", tmpSign, tmpInt1, tmpInt2, tmpInt3, tmpInt4);

with

              if (temp >= 0) smallbuf[0] = ' ';
              _printFIXPOINT((temp < 0) ? smallbuf : (smallbuf + 1), temp, 2);
              strcat_P(smallbuf, PSTR(" / "));
              _printFIXPOINT(smallbuf + strlen(smallbuf), hum, 2);

Or i can replace it with

              _printFIXPOINT(smallbuf, temp, 2);
              strcat_P(smallbuf, PSTR(" / "));
              _printFIXPOINT(smallbuf + strlen(smallbuf), hum, 2);

?

Compile Error

Hi if i try to compile i get the following error:
`C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino: In function 'uint_farptr_t calc_enum_offset(uint_farptr_t, uint16_t)':

BSB_lan:802:27: error: 'pgm_read_byte_far' was not declared in this scope

 uint8_t second_char = pgm_read_byte_far(enum_addr + page + 1);

                       ^~~~~~~~~~~~~~~~~

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino:802:27: note: suggested alternative: 'pgm_read_byte_near'

 uint8_t second_char = pgm_read_byte_far(enum_addr + page + 1);

                       ^~~~~~~~~~~~~~~~~

                       pgm_read_byte_near

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino: In function 'uint32_t get_cmdtbl_cmd(int)':

BSB_lan:879:9: error: 'pgm_read_dword_far' was not declared in this scope

 c = pgm_read_dword_far(pgm_get_far_address(cmdtbl1[0].cmd) + i * sizeof(cmdtbl1[0]));

     ^~~~~~~~~~~~~~~~~~

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino:879:9: note: suggested alternative: 'pgm_read_dword_near'

 c = pgm_read_dword_far(pgm_get_far_address(cmdtbl1[0].cmd) + i * sizeof(cmdtbl1[0]));

     ^~~~~~~~~~~~~~~~~~

     pgm_read_dword_near

BSB_lan:885:9: error: 'pgm_read_dword_far' was not declared in this scope

 c = pgm_read_dword_far(pgm_get_far_address(cmdtbl2[0].cmd) + (i - entries1) * sizeof(cmdtbl2[0]));

     ^~~~~~~~~~~~~~~~~~

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino:885:9: note: suggested alternative: 'pgm_read_dword_near'

 c = pgm_read_dword_far(pgm_get_far_address(cmdtbl2[0].cmd) + (i - entries1) * sizeof(cmdtbl2[0]));

     ^~~~~~~~~~~~~~~~~~

     pgm_read_dword_near

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino: In function 'uint16_t get_cmdtbl_line(int)':

BSB_lan:899:9: error: 'pgm_read_word_far' was not declared in this scope

 l = pgm_read_word_far(pgm_get_far_address(cmdtbl1[0].line) + i * sizeof(cmdtbl1[0]));

     ^~~~~~~~~~~~~~~~~

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino:899:9: note: suggested alternative: 'pgm_read_word_near'

 l = pgm_read_word_far(pgm_get_far_address(cmdtbl1[0].line) + i * sizeof(cmdtbl1[0]));

     ^~~~~~~~~~~~~~~~~

     pgm_read_word_near

BSB_lan:905:9: error: 'pgm_read_word_far' was not declared in this scope

 l = pgm_read_word_far(pgm_get_far_address(cmdtbl2[0].line) + (i - entries1) * sizeof(cmdtbl2[0]));

     ^~~~~~~~~~~~~~~~~

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino:905:9: note: suggested alternative: 'pgm_read_word_near'

 l = pgm_read_word_far(pgm_get_far_address(cmdtbl2[0].line) + (i - entries1) * sizeof(cmdtbl2[0]));

     ^~~~~~~~~~~~~~~~~

     pgm_read_word_near

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino: In function 'uint_farptr_t get_cmdtbl_desc(int)':

BSB_lan:918:12: error: 'pgm_read_word_far' was not declared in this scope

 desc = pgm_read_word_far(pgm_get_far_address(cmdtbl1[0].desc) + i * sizeof(cmdtbl1[0]));

        ^~~~~~~~~~~~~~~~~

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino:918:12: note: suggested alternative: 'pgm_read_word_near'

 desc = pgm_read_word_far(pgm_get_far_address(cmdtbl1[0].desc) + i * sizeof(cmdtbl1[0]));

        ^~~~~~~~~~~~~~~~~

        pgm_read_word_near

BSB_lan:924:12: error: 'pgm_read_word_far' was not declared in this scope

 desc = pgm_read_word_far(pgm_get_far_address(cmdtbl2[0].desc) + (i - entries1) * sizeof(cmdtbl2[0]));

        ^~~~~~~~~~~~~~~~~

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino:924:12: note: suggested alternative: 'pgm_read_word_near'

 desc = pgm_read_word_far(pgm_get_far_address(cmdtbl2[0].desc) + (i - entries1) * sizeof(cmdtbl2[0]));

        ^~~~~~~~~~~~~~~~~

        pgm_read_word_near

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino: In function 'uint_farptr_t get_cmdtbl_enumstr(int)':

BSB_lan:937:15: error: 'pgm_read_word_far' was not declared in this scope

 enumstr = pgm_read_word_far(pgm_get_far_address(cmdtbl1[0].enumstr) + i * sizeof(cmdtbl1[0]));

           ^~~~~~~~~~~~~~~~~

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino:937:15: note: suggested alternative: 'pgm_read_word_near'

 enumstr = pgm_read_word_far(pgm_get_far_address(cmdtbl1[0].enumstr) + i * sizeof(cmdtbl1[0]));

           ^~~~~~~~~~~~~~~~~

           pgm_read_word_near

BSB_lan:943:15: error: 'pgm_read_word_far' was not declared in this scope

 enumstr = pgm_read_word_far(pgm_get_far_address(cmdtbl2[0].enumstr) + (i - entries1) * sizeof(cmdtbl2[0]));

           ^~~~~~~~~~~~~~~~~

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino:943:15: note: suggested alternative: 'pgm_read_word_near'

 enumstr = pgm_read_word_far(pgm_get_far_address(cmdtbl2[0].enumstr) + (i - entries1) * sizeof(cmdtbl2[0]));

           ^~~~~~~~~~~~~~~~~

           pgm_read_word_near

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino: In function 'uint16_t get_cmdtbl_enumstr_len(int)':

BSB_lan:956:19: error: 'pgm_read_word_far' was not declared in this scope

 enumstr_len = pgm_read_word_far(pgm_get_far_address(cmdtbl1[0].enumstr_len) + i * sizeof(cmdtbl1[0]));

               ^~~~~~~~~~~~~~~~~

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino:956:19: note: suggested alternative: 'pgm_read_word_near'

 enumstr_len = pgm_read_word_far(pgm_get_far_address(cmdtbl1[0].enumstr_len) + i * sizeof(cmdtbl1[0]));

               ^~~~~~~~~~~~~~~~~

               pgm_read_word_near

BSB_lan:962:19: error: 'pgm_read_word_far' was not declared in this scope

 enumstr_len = pgm_read_word_far(pgm_get_far_address(cmdtbl2[0].enumstr_len) + (i - entries1) * sizeof(cmdtbl2[0]));

               ^~~~~~~~~~~~~~~~~

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino:962:19: note: suggested alternative: 'pgm_read_word_near'

 enumstr_len = pgm_read_word_far(pgm_get_far_address(cmdtbl2[0].enumstr_len) + (i - entries1) * sizeof(cmdtbl2[0]));

               ^~~~~~~~~~~~~~~~~

               pgm_read_word_near

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino: In function 'uint8_t get_cmdtbl_category(int)':

BSB_lan:977:11: error: 'pgm_read_byte_far' was not declared in this scope

 cat = pgm_read_byte_far(pgm_get_far_address(cmdtbl1[0].category) + i * sizeof(cmdtbl1[0]));

       ^~~~~~~~~~~~~~~~~

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino:977:11: note: suggested alternative: 'pgm_read_byte_near'

 cat = pgm_read_byte_far(pgm_get_far_address(cmdtbl1[0].category) + i * sizeof(cmdtbl1[0]));

       ^~~~~~~~~~~~~~~~~

       pgm_read_byte_near

BSB_lan:983:11: error: 'pgm_read_byte_far' was not declared in this scope

 cat = pgm_read_byte_far(pgm_get_far_address(cmdtbl2[0].category) + (i - entries1) * sizeof(cmdtbl2[0]));

       ^~~~~~~~~~~~~~~~~

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino:983:11: note: suggested alternative: 'pgm_read_byte_near'

 cat = pgm_read_byte_far(pgm_get_far_address(cmdtbl2[0].category) + (i - entries1) * sizeof(cmdtbl2[0]));

       ^~~~~~~~~~~~~~~~~

       pgm_read_byte_near

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino: In function 'uint8_t get_cmdtbl_type(int)':

BSB_lan:996:12: error: 'pgm_read_byte_far' was not declared in this scope

 type = pgm_read_byte_far(pgm_get_far_address(cmdtbl1[0].type) + i * sizeof(cmdtbl1[0]));

        ^~~~~~~~~~~~~~~~~

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino:996:12: note: suggested alternative: 'pgm_read_byte_near'

 type = pgm_read_byte_far(pgm_get_far_address(cmdtbl1[0].type) + i * sizeof(cmdtbl1[0]));

        ^~~~~~~~~~~~~~~~~

        pgm_read_byte_near

BSB_lan:1002:12: error: 'pgm_read_byte_far' was not declared in this scope

 type = pgm_read_byte_far(pgm_get_far_address(cmdtbl2[0].type) + (i - entries1) * sizeof(cmdtbl2[0]));

        ^~~~~~~~~~~~~~~~~

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino:1002:12: note: suggested alternative: 'pgm_read_byte_near'

 type = pgm_read_byte_far(pgm_get_far_address(cmdtbl2[0].type) + (i - entries1) * sizeof(cmdtbl2[0]));

        ^~~~~~~~~~~~~~~~~

        pgm_read_byte_near

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino: In function 'uint8_t get_cmdtbl_dev_fam(int)':

BSB_lan:1015:15: error: 'pgm_read_byte_far' was not declared in this scope

 dev_fam = pgm_read_byte_far(pgm_get_far_address(cmdtbl1[0].dev_fam) + i * sizeof(cmdtbl1[0]));

           ^~~~~~~~~~~~~~~~~

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino:1015:15: note: suggested alternative: 'pgm_read_byte_near'

 dev_fam = pgm_read_byte_far(pgm_get_far_address(cmdtbl1[0].dev_fam) + i * sizeof(cmdtbl1[0]));

           ^~~~~~~~~~~~~~~~~

           pgm_read_byte_near

BSB_lan:1021:15: error: 'pgm_read_byte_far' was not declared in this scope

 dev_fam = pgm_read_byte_far(pgm_get_far_address(cmdtbl2[0].dev_fam) + (i - entries1) * sizeof(cmdtbl2[0]));

           ^~~~~~~~~~~~~~~~~

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino:1021:15: note: suggested alternative: 'pgm_read_byte_near'

 dev_fam = pgm_read_byte_far(pgm_get_far_address(cmdtbl2[0].dev_fam) + (i - entries1) * sizeof(cmdtbl2[0]));

           ^~~~~~~~~~~~~~~~~

           pgm_read_byte_near

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino: In function 'uint8_t get_cmdtbl_dev_var(int)':

BSB_lan:1034:15: error: 'pgm_read_byte_far' was not declared in this scope

 dev_var = pgm_read_byte_far(pgm_get_far_address(cmdtbl1[0].dev_var) + i * sizeof(cmdtbl1[0]));

           ^~~~~~~~~~~~~~~~~

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino:1034:15: note: suggested alternative: 'pgm_read_byte_near'

 dev_var = pgm_read_byte_far(pgm_get_far_address(cmdtbl1[0].dev_var) + i * sizeof(cmdtbl1[0]));

           ^~~~~~~~~~~~~~~~~

           pgm_read_byte_near

BSB_lan:1040:15: error: 'pgm_read_byte_far' was not declared in this scope

 dev_var = pgm_read_byte_far(pgm_get_far_address(cmdtbl2[0].dev_var) + (i - entries1) * sizeof(cmdtbl2[0]));

           ^~~~~~~~~~~~~~~~~

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino:1040:15: note: suggested alternative: 'pgm_read_byte_near'

 dev_var = pgm_read_byte_far(pgm_get_far_address(cmdtbl2[0].dev_var) + (i - entries1) * sizeof(cmdtbl2[0]));

           ^~~~~~~~~~~~~~~~~

           pgm_read_byte_near

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino: In function 'uint8_t get_cmdtbl_flags(int)':

BSB_lan:1053:13: error: 'pgm_read_byte_far' was not declared in this scope

 flags = pgm_read_byte_far(pgm_get_far_address(cmdtbl1[0].flags) + i * sizeof(cmdtbl1[0]));

         ^~~~~~~~~~~~~~~~~

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino:1053:13: note: suggested alternative: 'pgm_read_byte_near'

 flags = pgm_read_byte_far(pgm_get_far_address(cmdtbl1[0].flags) + i * sizeof(cmdtbl1[0]));

         ^~~~~~~~~~~~~~~~~

         pgm_read_byte_near

BSB_lan:1059:13: error: 'pgm_read_byte_far' was not declared in this scope

 flags = pgm_read_byte_far(pgm_get_far_address(cmdtbl2[0].flags) + (i - entries1) * sizeof(cmdtbl2[0]));

         ^~~~~~~~~~~~~~~~~

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino:1059:13: note: suggested alternative: 'pgm_read_byte_near'

 flags = pgm_read_byte_far(pgm_get_far_address(cmdtbl2[0].flags) + (i - entries1) * sizeof(cmdtbl2[0]));

         ^~~~~~~~~~~~~~~~~

         pgm_read_byte_near

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino: In function 'void loadPrognrElementsFromTable(int)':

BSB_lan:1324:29: error: 'pgm_read_byte_far' was not declared in this scope

decodedTelegram.data_type=pgm_read_byte_far(pgm_get_far_address(optbl[0].data_type) + decodedTelegram.type * sizeof(optbl[0]));

                         ^~~~~~~~~~~~~~~~~

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino:1324:29: note: suggested alternative: 'pgm_read_byte_near'

decodedTelegram.data_type=pgm_read_byte_far(pgm_get_far_address(optbl[0].data_type) + decodedTelegram.type * sizeof(optbl[0]));

                         ^~~~~~~~~~~~~~~~~

                         pgm_read_byte_near

BSB_lan:1326:27: error: 'pgm_read_float_far' was not declared in this scope

decodedTelegram.operand=pgm_read_float_far(pgm_get_far_address(optbl[0].operand) + decodedTelegram.type * sizeof(optbl[0]));

                       ^~~~~~~~~~~~~~~~~~

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino:1326:27: note: suggested alternative: 'pgm_read_float_near'

decodedTelegram.operand=pgm_read_float_far(pgm_get_far_address(optbl[0].operand) + decodedTelegram.type * sizeof(optbl[0]));

                       ^~~~~~~~~~~~~~~~~~

                       pgm_read_float_near

BSB_lan:1333:35: error: 'pgm_read_word_far' was not declared in this scope

strcpy_PF(decodedTelegram.unit, pgm_read_word_far(pgm_get_far_address(optbl[0].unit) + decodedTelegram.type * sizeof(optbl[0])));

                               ^~~~~~~~~~~~~~~~~

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino:1333:35: note: suggested alternative: 'pgm_read_word_near'

strcpy_PF(decodedTelegram.unit, pgm_read_word_far(pgm_get_far_address(optbl[0].unit) + decodedTelegram.type * sizeof(optbl[0])));

                               ^~~~~~~~~~~~~~~~~

                               pgm_read_word_near

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino: In function 'void printENUM(uint_farptr_t, uint16_t, uint16_t, int)':

BSB_lan:1939:17: error: 'pgm_read_byte_far' was not declared in this scope

   if((byte)(pgm_read_byte_far(enumstr+c+1))!=' '){

             ^~~~~~~~~~~~~~~~~

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino:1939:17: note: suggested alternative: 'pgm_read_byte_near'

   if((byte)(pgm_read_byte_far(enumstr+c+1))!=' '){

             ^~~~~~~~~~~~~~~~~

             pgm_read_byte_near

BSB_lan:1951:13: error: 'pgm_read_byte_far' was not declared in this scope

   while(pgm_read_byte_far(enumstr+c)!=0) c++;

         ^~~~~~~~~~~~~~~~~

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino:1951:13: note: suggested alternative: 'pgm_read_byte_near'

   while(pgm_read_byte_far(enumstr+c)!=0) c++;

         ^~~~~~~~~~~~~~~~~

         pgm_read_byte_near

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino: In function 'void printCustomENUM(uint_farptr_t, uint16_t, uint16_t, int)':

BSB_lan:2044:11: error: 'pgm_read_byte_far' was not declared in this scope

   val=pgm_read_byte_far(enumstr+c+1);

       ^~~~~~~~~~~~~~~~~

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino:2044:11: note: suggested alternative: 'pgm_read_byte_near'

   val=pgm_read_byte_far(enumstr+c+1);

       ^~~~~~~~~~~~~~~~~

       pgm_read_byte_near

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino: In function 'void printTelegram(byte*, int)':

BSB_lan:2645:31: error: 'pgm_read_byte_far' was not declared in this scope

             uint8_t idx = pgm_read_byte_far(enumstr_ptr+0);

                           ^~~~~~~~~~~~~~~~~

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino:2645:31: note: suggested alternative: 'pgm_read_byte_near'

             uint8_t idx = pgm_read_byte_far(enumstr_ptr+0);

                           ^~~~~~~~~~~~~~~~~

                           pgm_read_byte_near

BSB_lan:2659:31: error: 'pgm_read_byte_far' was not declared in this scope

             uint8_t idx = pgm_read_byte_far(enumstr_ptr+0);

                           ^~~~~~~~~~~~~~~~~

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino:2659:31: note: suggested alternative: 'pgm_read_byte_near'

             uint8_t idx = pgm_read_byte_far(enumstr_ptr+0);

                           ^~~~~~~~~~~~~~~~~

                           pgm_read_byte_near

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino: In function 'void printPStr(uint_farptr_t, uint16_t)':

BSB_lan:2771:27: error: 'pgm_read_byte_far' was not declared in this scope

 bigBuff[bigBuffPos] = pgm_read_byte_far(outstr+x);

                       ^~~~~~~~~~~~~~~~~

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino:2771:27: note: suggested alternative: 'pgm_read_byte_near'

 bigBuff[bigBuffPos] = pgm_read_byte_far(outstr+x);

                       ^~~~~~~~~~~~~~~~~

                       pgm_read_byte_near

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino: In function 'void LogTelegram(byte*)':

BSB_lan:3114:21: error: 'pgm_read_float_far' was not declared in this scope

         operand=pgm_read_float_far(pgm_get_far_address(optbl[0].operand) + cmd_type * sizeof(optbl[0]));

                 ^~~~~~~~~~~~~~~~~~

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino:3114:21: note: suggested alternative: 'pgm_read_float_near'

         operand=pgm_read_float_far(pgm_get_far_address(optbl[0].operand) + cmd_type * sizeof(optbl[0]));

                 ^~~~~~~~~~~~~~~~~~

                 pgm_read_float_near

BSB_lan:3115:23: error: 'pgm_read_byte_far' was not declared in this scope

         precision=pgm_read_byte_far(pgm_get_far_address(optbl[0].precision) + cmd_type * sizeof(optbl[0]));

                   ^~~~~~~~~~~~~~~~~

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino:3115:23: note: suggested alternative: 'pgm_read_byte_near'

         precision=pgm_read_byte_far(pgm_get_far_address(optbl[0].precision) + cmd_type * sizeof(optbl[0]));

                   ^~~~~~~~~~~~~~~~~

                   pgm_read_byte_near

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino: In function 'int set(int, const char*, bool)':

BSB_lan:3734:21: error: 'pgm_read_byte_far' was not declared in this scope

   uint8_t idx = pgm_read_byte_far(enumstr_ptr+0);

                 ^~~~~~~~~~~~~~~~~

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino:3734:21: note: suggested alternative: 'pgm_read_byte_near'

   uint8_t idx = pgm_read_byte_far(enumstr_ptr+0);

                 ^~~~~~~~~~~~~~~~~

                 pgm_read_byte_near

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino: In function 'void query_printHTML()':

BSB_lan:3941:25: error: 'pgm_read_byte_far' was not declared in this scope

           if((byte)(pgm_read_byte_far(decodedTelegram.enumstr+c+1))!=' ' || decodedTelegram.type == VT_BIT){         // ENUMs must not contain two consecutive spaces! Necessary because VT_BIT bitmask may be 0x20 which equals space

                     ^~~~~~~~~~~~~~~~~

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino:3941:25: note: suggested alternative: 'pgm_read_byte_near'

           if((byte)(pgm_read_byte_far(decodedTelegram.enumstr+c+1))!=' ' || decodedTelegram.type == VT_BIT){         // ENUMs must not contain two consecutive spaces! Necessary because VT_BIT bitmask may be 0x20 which equals space

                     ^~~~~~~~~~~~~~~~~

                     pgm_read_byte_near

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino: In function 'void loop()':

BSB_lan:5708:25: error: 'pgm_read_word_far' was not declared in this scope

           cat_min = pgm_read_word_far(pgm_get_far_address(ENUM_CAT_NR) + (cat*2) * sizeof(ENUM_CAT_NR[0]));

                     ^~~~~~~~~~~~~~~~~

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino:5708:25: note: suggested alternative: 'pgm_read_word_near'

           cat_min = pgm_read_word_far(pgm_get_far_address(ENUM_CAT_NR) + (cat*2) * sizeof(ENUM_CAT_NR[0]));

                     ^~~~~~~~~~~~~~~~~

                     pgm_read_word_near

BSB_lan:5739:27: error: 'pgm_read_byte_far' was not declared in this scope

             if((byte)(pgm_read_byte_far(enumstr+c+1))!=' '){

                       ^~~~~~~~~~~~~~~~~

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino:5739:27: note: suggested alternative: 'pgm_read_byte_near'

             if((byte)(pgm_read_byte_far(enumstr+c+1))!=' '){

                       ^~~~~~~~~~~~~~~~~

                       pgm_read_byte_near

BSB_lan:5740:23: error: 'pgm_read_word_far' was not declared in this scope

               val=pgm_read_word_far(enumstr+c);

                   ^~~~~~~~~~~~~~~~~

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino:5740:23: note: suggested alternative: 'pgm_read_word_near'

               val=pgm_read_word_far(enumstr+c);

                   ^~~~~~~~~~~~~~~~~

                   pgm_read_word_near

BSB_lan:6194:31: error: 'pgm_read_word_far' was not declared in this scope

                 cat_min = pgm_read_word_far(pgm_get_far_address(ENUM_CAT_NR) + (cat*2) * sizeof(ENUM_CAT_NR[0]));

                           ^~~~~~~~~~~~~~~~~

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino:6194:31: note: suggested alternative: 'pgm_read_word_near'

                 cat_min = pgm_read_word_far(pgm_get_far_address(ENUM_CAT_NR) + (cat*2) * sizeof(ENUM_CAT_NR[0]));

                           ^~~~~~~~~~~~~~~~~

                           pgm_read_word_near

BSB_lan:6213:29: error: 'pgm_read_word_far' was not declared in this scope

               cat_min = pgm_read_word_far(pgm_get_far_address(ENUM_CAT_NR) + (search_cat*2) * sizeof(ENUM_CAT_NR[0]));

                         ^~~~~~~~~~~~~~~~~

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino:6213:29: note: suggested alternative: 'pgm_read_word_near'

               cat_min = pgm_read_word_far(pgm_get_far_address(ENUM_CAT_NR) + (search_cat*2) * sizeof(ENUM_CAT_NR[0]));

                         ^~~~~~~~~~~~~~~~~

                         pgm_read_word_near

BSB_lan:6262:35: error: 'pgm_read_byte_far' was not declared in this scope

                     if((byte)(pgm_read_byte_far(enumstr+x+1))!=' ' || decodedTelegram.type == VT_BIT) {         // ENUMs must not contain two consecutive spaces! Necessary because VT_BIT bitmask may be 0x20 which equals space

                               ^~~~~~~~~~~~~~~~~

C:\Users\matthias\Downloads\BSB_lan\BSB_lan.ino:6262:35: note: suggested alternative: 'pgm_read_byte_near'

                     if((byte)(pgm_read_byte_far(enumstr+x+1))!=' ' || decodedTelegram.type == VT_BIT) {         // ENUMs must not contain two consecutive spaces! Necessary because VT_BIT bitmask may be 0x20 which equals space

                               ^~~~~~~~~~~~~~~~~

                               pgm_read_byte_near

exit status 1

'pgm_read_byte_far' was not declared in this scope

Dieser Bericht wäre detaillierter, wenn die Option
"Ausführliche Ausgabe während der Kompilierung"
in Datei -> Voreinstellungen aktiviert wäre.
`
any idears?

Schreiben von Werten

Ich möchte beim iobroker Adapter das Schreiben von Werten hinzufügen und hätte ein paar Fragen. Vielleicht könnt ihr mir die ja beantworten.

Ich würde POST http:///JS benutzen.

Ist es möglich über die API zu erkennen, ob ein Wert beschreibbar oder read-only ist? (unabhängig von der Freischaltung in der Firmware) Es gibt einen Errorresponse für read-only, ich würde es aber gerne vor dem Request wissen.

Woher weiß ich, welcher Wert mit INF und welcher mit SET beschrieben werden muss?

Ihr schreibt, geschrieben werden können nur numerische Werte. Welche Datentypen zählt ihr da genau dazu? "DataType" (0 = Zahl, 1 = ENUM, 2 = Bit-Wert (Dezimalwert gefolgt von Bitmaske gefolgt von ausgewählter Option), 3 = Wochentag, 4 = Stunde/Minute, 5 = Datum/Uhrzeit, 6 = Tag/Monat, 7 = String, 8 = PPS-Uhrzeit (Wochentag, Stunde:Minute))

Vielen Dank!

how to set parameters with mqtt

In French
Hello, for English I am sorry but I use a translator, I put into service your kit (arduino version) it works very well, I have everything config in relation to my use but I have not found how set values on it or it parameter, could you tell me if this is possible and how to do it? and of course if this is not possible at the moment would it be possible for you to foresee it because I use Home-Assistant but the integration is not complete, I do not have the possibility of putting modify the parameter of the circuit refresh and unfortunately I do not have the competence to do it myself.
but thank you and you've done a great job.

En Français
Bonjour, pour l'anglais je suis désolé mais j'utilise un traducteur, j'ai mis en service votre kit (version arduino) il fonctionne très bien, j'ai tout config par rapport a mon utilisation mais je n'ai pas trouvé comment set des valeurs sur t'elle ou t'elle paramètre, pouvais vous me dire si cela est possible et comment le faire? et bien sur si cela n'est pas possible a l'heure actuelle serais t'il possible de le prévoir car j'utilise Home-Assistant mais l’intégration n'est pas complète, je n'ai pas la possibilité de mettre de modifier le paramètre du circuit rafraîchissent et malheureusement je n'ai pas les compétence pour le faire moi même.
mais je vous remercie et vous avez fait une excellent travail.

image
image
image

Graph funktioniert nicht / Graph not working

BSB-LAN Web, Version 0.44.14-20200508002617

Wenn ich /DG öffne, wird bei mir kein Graph angezeigt. In der Browser Console kann ich folgenden Javascript Fehler sehen:
When opening /DG I don't get any graphed data. I can see the following error in the browser's console:

d3.v3.min.js:1 Uncaught TypeError: Cannot read property 'length' of undefined
at e (d3.v3.min.js:1)
at t.parse (d3.v3.min.js:1)
at DG:104
at Array.forEach ()
at DG:103
at d3.v3.min.js:1
at Object. (d3.v3.min.js:1)
at Object.t (d3.v3.min.js:1)
at XMLHttpRequest.i (d3.v3.min.js:1)

Meine Logdatei einthält aktuell die folgenden Einträge:
My logfile contains this data currently:

3600000;09.05.2020 20:35:51;8700;Außentemperatur;17.5;°C
3600237;09.05.2020 20:35:51;8743;Vorlauftemperatur 1;---;°C
3600444;09.05.2020 20:35:51;8314;Kesselrücklauftemperatur Ist;---;°C
3600660;09.05.2020 20:35:51;20000;Brennerlaufzeit Stufe 1;193
3600663;09.05.2020 20:35:51;20001;Brennertakte Stufe 1;2
3600665;09.05.2020 20:35:51;20002;Brennerlaufzeit Stufe 2;545
3600667;09.05.2020 20:35:51;20003;Brennertakte Stufe 2;2
7200685;09.05.2020 21:36:47;8700;Außentemperatur;15.5;°C
7200917;09.05.2020 21:36:47;8743;Vorlauftemperatur 1;---;°C
7201107;09.05.2020 21:36:48;8314;Kesselrücklauftemperatur Ist;---;°C
7201312;09.05.2020 21:36:48;20000;Brennerlaufzeit Stufe 1;193
7201315;09.05.2020 21:36:48;20001;Brennertakte Stufe 1;2
7201317;09.05.2020 21:36:48;20002;Brennerlaufzeit Stufe 2;545
7201319;09.05.2020 21:36:48;20003;Brennertakte Stufe 2;2

BSB-LAN adapter connect RVS21.827/127

Hello,

I have a Siemens RVS21.827/127 heat pump controller Atlantic Alfea Excellia Duo. I made a BSB-LPB-LAN adapter. Please advise how to physically connect the BSB-LPB adapter to it.
IMG_20191116_134955
IMG_20191116_135008
IMG_20191117_130149

GitHub Actions / CI creating problems

Guys, (@fl42, @dukess and others), I have not used GitHub Actions / CI before, and I'm fine with anything new as long as it does not disturb my workflow. But in addition to the breaking errors we've had recently, I now get this result when pushing minor changes in BSB_lan_defs.h (code compiles fine locally):
https://github.com/fredlcore/bsb_lan/actions/runs/322877524

I don't know what these errors mean and where I should start fixing them, but other than that it might be a cool feature, so far I have not seen any benefits in having these GitHub Actions / CI added to the project, especially when we are actually working on several major changes which in itself will probably require our attention in the near future to get them all running properly.

Unless I have overseen some little bug or switch I now have to use, I would suggest we revert to the pre-CI area. Or is this not feasible?

Cheers,

F.

Housing for BSB LAN Gateway

Hi,

just wanted to know if you can recommend any housing/case for the hardware.
Doesn't matter if print by myself or if there is already a product available

DS18B20 T° sensors calls may be optimised

Hi,
here is my setup :

  • I have 10 DS18B20 sensors connected on the arduino board
  • I have 17 log_parameters total (DS18B20 included)
  • I've set BSB-lan to log parameters with a log_interval of 10 seconds (it's short, but it's for testing)

When I hook up my oscilloscope on the 1-wire, I can see this :
201108_115647

Timing are (19.92s total cycle time) :

  • 8.08s 1-wire data
  • 800ms doing something else (or waiting)
  • 720ms 1-wire data
  • 1.84s doing something else (or waiting)
  • 960ms 1-wire data
  • 7.52s doing something else (or waiting)

I suspect the LONG polling time of 8.08s is issuing a sensors.requestTemperatures(); each time one of the 10 sensors are to be polled, I think it could be done once, not multiple times.

bug after recent changes in BSB_lan_config.h ?

BSB_lan_defs.h:8877:62: error: 'STR8317' was not declared in this scope
{0x113D0F64, CAT_DIAG_ERZEUGER, VT_TEMP, 8317, STR8317, 0, NULL, FL_RONLY, DEV_ALL}, // Baxi Luna Platinum+ [°C ] - Diagnose Erzeuger -Schaltpunkt TWW-Betrieb
^
BSB_lan_defs.h:8882:62: error: 'STR8321_2' was not declared in this scope
{0x053D1071, CAT_DIAG_ERZEUGER, VT_TEMP, 8321, STR8321_2,0, NULL, FL_RONLY, DEV_123_ALL}, // [°C ] - Diagnose Erzeuger -
^
exit status 1
'STR8317' was not declared in this scope

Backwards Compatibility for ioBroker BSB Adapter

Hi there,

really happy to see that great work and effort that is put into the last months!

I am the developer of the ioBroker BSB LAN Adapter to integrate your adapter into iobroker. https://github.com/hacki11/ioBroker.bsblan

Are you looking to maintain backwards compatibility or are there some breaking changes we will run into?
If not i will be independent of your pace and can provide a new version if i find some time.
But if we have some breaking changes, we should synchronize our release plans and document some apis or make a api definition.

Best, hacki11

Parameters vs Codes

Greetings.
I ahve received and successfully connected a BSB Lan adapter to an LPB bus, thanks for that.
I was able to read couple of Parameters and learned that there is a mapping between standardized Parameters and device specific codes. I have a technical list of codes with descriptions matching my device and was wondering if there is a raw level access possibility to retrieve raw data based on codes.

Actual requests:

  1. If not available i would like to request this as a feature for both, the general purpose access capability as well as supporting identification and interpretation of new parameters.

  2. Generally i was wondering if the mapping internal to the BSB lan "device" (ie the total combination of Arduino, Network Interface and BSB LAN module) is the right engineering decision, both from a support and technical view. Technically having this mapping inside the device eats up resources which apparently has been a topic at some point during development. Secondly moving this intelligence into an external library allows for esier / faster development for reasons in request 1 and simpler updates / additions as no raw code needs to be edited, compiled and flashed.

While 2 is more of a personal preference, request 1 i think would generally be important as when ther e is documentation available but no support in BSB LAN internal mapping, then the device logic appears like an unneccesary block in the road.

In any case thanks for the work that has been invested in this project.

Enhance network performance and code reusability

Hi,

based on the discussion around #97 I'm opening this issue to not loose some of the good ideas to enhance network traffic and source code clean up, that could be beneficial in future features.
E.g. the consistent use of output buffering, before transmitting the data to the network module could reduce the amount of packets (and TCP packet overhead) in scales of 155% easily.

Comrades, I decided to stretch my brain and redo the program as I described above. A little testing showed that the idea works, but there may be errors in the code.
dukess@8344657

Benefits: + 300 free bytes of RAM.
Disadvantages: -100 bytes of flash

Originally posted by @dukess in #97 (comment)

PS: Revolution, baby! ;-)

cheers

Send alphanumeric values over MQTT

Aktuell werden über MQTT nur rein numerische Werte übertragen. Im Forum hat es dazu auch schon Rückmeldungen gegeben: https://forum.fhem.de/index.php/topic,29762.msg901497.html#msg901497

Du hast es "Abhacken bei den ENUMs" genannt.

6801 Historie 01 Fehlercode: 110 (MQTT)
6801 Historie 01 Fehlercode: 110 - STB Störabschaltung (HTTPMOD)
Betriebsart: 1 (MQTT)
Betriebsart: 1 - Automatik (HTTPMOD)
Brennerstufe_1: 0 (MQTT)
Brennerstufe_1: 0 - Aus (HTTPMOD)

Auch ich würde mich sehr freuen, wenn über MQTT die gleichen Ausgaben übertragen werden könnten, wie auf der Weboberfläche angezeigt.

Danke.

Thision S Plus 19

ich bitte um Hinzufügung folgender Zeilen in die BSB_LAN_defs.h
ich habe dies so in meine eingefügt, und /Q bringt keine Fehlermeldungen mehr.
Die meisten Meldungen konnte ich nicht prüfen, da diese Nummern nicht im Bedienfeld auftauchen (OEM?)
Der Rest stimmt.
Ich hoffe das reicht so.
Gruß Luposoft

#define DEV_188_ALL 188,255 // AVS37.296/141

{0x213D0B43, CAT_HK1, VT_BYTE, 857, STR857, 0, NULL, DEFAULT_FLAG, DEV_195_ALL}, // [ Tage ] - Heizkreis 1 - Estrich Tage erfüllt //FUJITSU
{0x223D0B43, CAT_HK2, VT_DAYS, 1157, STR1157, 0, NULL, FL_RONLY, DEV_195_ALL}, // Estrich Tag erfüllt? logged from ACS700 diagnosis software
{0x113D11A4, CAT_KESSEL, VT_MINUTES_SHORT, 2250, STR2250, 0, NULL, FL_OEM, DEV_195_ALL}, // [ min] Kessel - Pumpennachlaufzeit
{0x093D0F31, CAT_SITHERM, VT_CURRENT, 2700, STR2700_2,0, NULL, FL_RONLY, DEV_195_ALL}, // Ion'strom gefiltert
{0x053D3042, CAT_SITHERM, VT_SINT, 2702, STR2702_2,0, NULL, FL_RONLY, DEV_195_ALL}, // Position Schrittmotor // todo VT_SINT verifizieren
{0x053D3043, CAT_SITHERM, VT_SINT, 2703, STR2703_2,0, NULL, FL_RONLY, DEV_195_ALL}, // Lernwert Gasqualität // todo VT_SINT verifizieren
{0x093D0F26, CAT_SITHERM, VT_SINT, 2705, STR2705_2,0, NULL, FL_RONLY, DEV_195_ALL}, // R-Wert
{0x053D1388, CAT_KONFIG, VT_BYTE, 6221, STR6221, 0, NULL, DEFAULT_FLAG, DEV_195_ALL}, // Thision 6221 Entwicklungs-Index [?]
{0x053D1193, CAT_KONFIG, VT_UINT, 6230, STR6230_2,0, NULL, FL_RONLY, DEV_195_ALL}, // Konfiguration - Info 1 OEM
{0x053D1193, CAT_KONFIG, VT_UINT, 6300, STR6300_2,0, NULL, DEFAULT_FLAG, DEV_195_ALL}, // Info 1 OEM
{0x053D1AC1, CAT_STATUS, VT_ENUM, 8023, STR8023, sizeof(ENUM8009), ENUM8009, FL_RONLY, DEV_195_ALL}, // Status Sitherm Pro
{0x053D19F0, CAT_DIAG_ERZEUGER, VT_PRESSURE_WORD, 8327, STR8327, 0, NULL, FL_RONLY, DEV_195_ALL}, // Wasserdruck
{0x053D0006, CAT_LPB, VT_YESNO, 6610, STR6610, 0, NULL, FL_OEM, DEV_188_ALL}, // Anzeige Systemmeldungen

Feature request: send value to user variables

User variables obtained with /U (custom_float and custom_long) that were recently introduced are a great idea.

In addition, it would nice to get the possibility to send a value from the web interface. For example, something like /U=.

Thanks in advance

Wrong command_ref for GPIO

It looks like the Cheatsheet URL-commands are not good for GPIO.

Indeed, the syntax with comma was not working. This example works : /G5=1

unwanted 50Hz interaction on RX/TX

Hello together,

I tried to simplify and build my own BSB/LPB board for the communication with an Elco boiler control. Because I wanted to use an Arduino I deleted the following parts from the original board: R11, R12, R13, Q11 and Q12. Attached you will find my new layout.

Now I connect DB/MB from the LBP and RX/TX to a logic analyser. If I connect 5V/GND over an TTL/USB adapter to a power bank or my laptop an expected signal will be transmitted. But if I connect 5V/GND to the Arduino (powered by cable) or if I connect my notebook/the power bank to the power outlet I get a wrong signal with some sort of 50Hz noise. Around every 20ms on channel 0 there is a signal but nothing happens on channel 1.

Is there a problem with the simplification of my board? I would be very happy, if somebody could help me with this problem. How can I get rid of this interaction between power adapter and signal? Thank you very much!

Uploading signal analyzer ok and 50Hz noise.PNG…

Bug in displaying PPS time programs

@dukess , I hope you can help me here:
Since a few versions back, the displaying of the time programs is no longer working properly for PPS bus.
Just to recall: the encoding for hour/minutes is different from BSB and is counted in 10 minutes intervals. The time "23:30" therefore is encoded as 141 (0x8D), to decode it one has to divide it by six to get the hours and multiply the remainder with 10 to get the minutes, i.e. 141/6 = 23(,5) and 141 mod 6 = 3 ( * 10 = 30 minutes).
The thing now is that it still works in the webinterface if you use full hours (i.e. 23:00). Also, the value to be sent to the heater is correctly calculated in all cases, so the above mentioned 141 is sent correctly to the heater.

But in the web interface, it seems that this is what goes wrong: The 141 is divided by 6 (= 23) and to that the remainder times 10 (= 30) is added to the hour, so it is displayed as "53:00".

I have tried to figure out where to change this, but since I haven't had time to familiarize myself with the new approach with decodedTelegram.value etc., I couldn't figure out where this failed conversion takes place.

It would be great if we could fix this error before we merge the major changes you have been working on in the past few weeks, so that I can make a stable current release before merging the new. Thanks!

feature request: Aktuelle Einstellungen/Werte Export/Import Funktion

Bei der Integration des Adapters in Loxone schreibe ich mir momentan die Aktuellen Werten von Hand raus, um bei einer fehlüberlegung die letzten Korrekt arbeiteten Werte einzutragen.

Ich vermisse hier eine Möglichkeit die aktuellen Einstellungen auf die SD Karte zu Exportieren.
Um diese natürlich auch wider einspielen zu können darf auch eine Import Funktion nicht fehlen.

Thision S 19 Plus - neue Parameter

Hallo,

ich bin die Q-Liste durchgegangen, davon kann ich nur 3 verifizieren. Der Rest erscheint auf meinem Display nicht.
Ansonsten bin ich für weitere Gruppen durchs Display gegangen.
Anbei meine Änderungswünsche.

Lieben Dank
Eiko

Parameter.txt

DateTime über MQTT

In einigen Parameter (bei mir 6800, 6810, 6820, 6830, etc.) hat meine Therme Datums- und Uhrzeit gespeichert. Über die Weboberfläche wird die Uhrzeit auch angezeigt. Über MQTT wird leider nur das Datum übertragen.

Könnte man bitte über MQTT Datum und Zeit übermitteln?

Danke.

Rounding/type cast issue with parameters of type VT_HOURS

Recently I noticed that parameter 8570 (Betriebsstunden Feststoffkessel) shows a different value in BSB LAN web interface than in the heating system itself.

The value shown in the web UI is 748 whereas the heating controller shows 749.
I traced the data sent by the system:

DISP->HEIZ QUR 8570 Diagnose Erzeuger -  Betr'std Feststoffkessel: 
DC 8A 00 0B 06 3D 51 08 92 32 9C 
HEIZ->DISP ANS 8570 Diagnose Erzeuger -  Betr'std Feststoffkessel: 748 h
DC 80 0A 10 07 51 3D 08 92 00 00 29 20 20 56 FB

It seems there is a rounding issue / type cast issue when interpreting the value:

  hex: 0x292020 -> dec: 2695200
  2695200 / 3600 = 748,666

I think the issue is in line BSB_lan.ino:1262 where the value is calculated as

lval=((long(msg[pl_start+1])<<24)+(long(msg[pl_start+2])<<16)+(long(msg[pl_start+3])<<8)+long(msg[pl_start+4]))/divider;

As VT_MINUTES also uses printDWORD(...) with divider != 1 it might also be affected.

Move all configuration from BSB_lan_config.h to webinterface, stored on EEPROM

In order to be able to distribute compiled binaries of BSB-LAN, the complete configuration should be possible via the webinterface. Most parameters can already be configured during runtime via URL commands, so these could be called in the background via JavaScript etc.
More problematic could be the various #define configurations, but since we now have enough space on the Due, all functional parts (de-)activated via #defines should be enabled by default and could then be disabled on the Mega if necessary.

All data should be stored on EEPROM which is provided for the Due on the V3 BSB-LAN boards and has the same size as the one built-in in the Mega: 4096 bytes.

The EEPROM storage should be divided into two sections:
First section: Fixed length configuration options, such as pin numbers for OneWire bus, DHT22, IP-address, PPS parameters etc.
Second section: Divided into two parts for configuration options of (at compile time) unknown length, such as log_parameters array, passkey, exclude_GPIO. First part is a table layouted like this:
Byte 1+2: Offset to actual data
Byte 3: Type of data (may not be necessary if EEPROM.get() is able to determine this in all cases)
Byte 4: Length of data (or length of entries, if EEPROM.put()/get() can be used at all times)
Byte 5 to Byte 5+length: actual data

Since all configuration data is always written at the same time, the actual distribution of data in the second part of the second section can vary, but due to the lookup-table, data can easily be located.

In order to maintain backward compatibility, variables set via BSB_lan_config.h should be written to EEPROM during setup, and then a warning should be printed in the web-configuration that all changes will be overwritten upon reboot as long as the entries in BSB_lan_config.h remain.

Most of the entries probably do not need default values, but for the network part, it would be best to set the device to DHCP mode instead of setting some kind of fixed IP address (although this would probably also be acceptable).

I hope I've covered all caveats, but I guess I have not ;)...

feature request: json request for MAC address and firmware version

For home-assistant integration I need an identifier so I can check if the integration is already setup or not. For this often a Mac address is used. So it would be handy to get the Mac address just from a json request . (or is this already possible without me knowing?)

Also the firmware would be nice to pull this way. If this is possible it would be awesome.

Now I use the model nr. of the heating system, but it's not the correct way to do it. You could have multiple heating systems and than this setup wouldn't work anymore.

Split up cmdtbl even further because almost 64k are reached

It's quite impressive that not even two years ago, I had to split up the cmdtbl struct in two pieces because it went beyond the 32kB limit that exists on the Arduino Mega. Now both cmdtbl1 and cmdtbl2 each reach 32kB, meaning the number of supported parameters we found for various heating systems has doubled, which nicely shows the collaborative effort and success of this project.
We now have to think about whether we should make a departure here from the Mega and stop splitting up cmdtbl further, or if we make the effort and split cmdtbl into three parts. This will most likely be the last time we would have to do this because once we have filled another 32kB of parameter data, the memory of the Mega 2560 will be maxed out anyway. But the way the split up is handled now is quite inefficient (code-wise), as I had to do it in a hurry back then. It probably would be worth it to do the calculation in just one function and not do it each time in each get_cmdtbl_xxx function.

What do you guys think?

put translations in a separate library

Hi all,

Isn't it an idea to put the translation in a separate json files? So you don't need to update the firmware for new translations. Only the dependancy version?

Also we could reuse these files in all platforms? For example: when users from homeassistant get German translation they contact me I need to send it to this project and than it needs to update here get released and the user need to update the firmware etc. ( I see this bsblan module more as a hub and I guess the translations should be done by the platforms.)

So I could start doing the translations on Home-assistant and ignore the desc output. But this would be double the work and bsblan also doesn't get these translations. So maybe centralising would be a good idea?

What do you think?

Expanding /D and /L URL commands

I prepare new patch with these functions:
/DJ0 - remove journal.txt only
/DD0 - remove datalog.txt only
/DJ - dump journal.txt
/DD - dump datalog.txt
/LE - enable telegrams logging to journal.txt
/LD - disable telegrams logging
New option in BSB_lan_config.h: logTelegram. False - disabled on start, true - enabled on start.
Logging enabling through progNr 30000, /D0 and /D still used for compatibility

What you think?

Problem in OpenHAB with bsbinput_string.js

Hello,

can you help me with this exception which has thrown by OpenHAB?

2020-01-25 15:21:09.732 [WARN ] [ab.binding.http.internal.HttpBinding] - Transformation 'JS(bsbinput_string.js)' threw an exception. [response=<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>BSB-LAN Web</title>
<style>A:link  {color:blue;text-decoration: none;} A:visited {color:blue;text-decoration: none;} A:hover {color:red;text-decoration: none;background-color:yellow} A:active {color:blue;text-decoration: none;} A:focus {color:red;text-decoration: none;}
input {width: 100%; box-sizing: border-box;} select {width: 100%;}</style>
</head><body>
<script>function set(line){
var value = document.getElementById('value'+line).value.replace(":", ".");
if(isNaN(value)==false){
window.open(document.getElementById('main_link').href+'S'+line+'='+document.getElementById('value'+line).value,'_self');
}}
function setbit(line){
var x=document.getElementById('value'+line); var value=0;
for (var i=0; i<x.options.length; i++) {
if(x.options[i].selected){
value=value+eval(x.options[i].value);
}}
window.open(document.getElementById('main_link').href+'S'+line+'='+value,'_self');
}</script>

<font face='Arial'>
<center><h1><A ID=main_link HREF='/'>BSB-LAN Web</A></h1></center>
<table width=80% align=center><tr bgcolor=#f0f0f0><td width=20% align=center><a href='/K'>Heizungsfunktionen</a></td><td width=20% align=center><font color=#000000>DS18B20 Sensoren</font></td><td width=20% align=center><font color=#000000>DHT22 Sensoren</font></td><td width=20% align=center><font color=#000000>Ausgabe Logdatei</font></td></tr><tr bgcolor=#f0f0f0><td width=20% align=center><a href='/C'>Einstellungen</a></td><td width=20% align=center><a href='http://github.com/fredlcore/bsb_lan/blob/master/command_ref/command_ref_DE.md'>URL-Befehle</a></td><td width=20% align=center><a href='http://github.com/fredlcore/bsb_lan/blob/master/HOWTO.md' target='new'>HowTo</a></td><td width=20% align=center><a href='http://github.com/fredlcore/bsb_lan/blob/master/FAQ.md' target='_new'>FAQ</a></td></tr></table><p></p><table align=center width=80%><tr><td>

<tr><td>
8005 Status -  Status Kessel: 175 - Freigegeben für HK
</td><td>
<select id='value8005'>
<option value='0'>---</option>
<option value='1'>STB angesprochen</option>
<option value='2'>Störung</option>
<option value='3'>Wächter angesprochen</option>
<option value='4'>Handbetrieb aktiv</option>
<option value='5'>Schornsteinfegerfkt, Vollast</option>
<option value='6'>Schornsteinfegerfkt, Teillast</option>
<option value='7'>Schornsteinfegerfkt aktiv</option>
<option value='8'>Gesperrt, Manuell</option>
<option value='9'>Gesperrt, Automatisch</option>
<option value='10'>Gesperrt</option>
<option value='11'>Anfahrentlastung</option>
<option value='12'>Anfahrentlastung, Teillast</option>
<option value='13'>Rückl’begrenzung</option>
<option value='14'>Rückl’begrenzung, Teillast</option>
<option value='15'>Freigegeben</option>
<option value='16'>Freigegeben, Teillast</option>
<option value='17'>Nachlauf aktiv</option>
<option value='18'>In Betrieb</option>
<option value='19'>Freigegeben</option>
<option value='20'>Minimalbegrenzung</option>
<option value='21'>Minimalbegrenzung, Teillast</option>
<option value='22'>Minimalbegrenzung aktiv</option>
<option value='23'>Anlagenfrostschutz aktiv</option>
<option value='24'>Frostschutz aktiv</option>
<option value='25'>Aus</option>
<option value='59'>Ladung Pufferspeicher</option>
<option value='123'>STB Test aktiv</option>
<option value='166'>In Betrieb für Heizkreis</option>
<option value='167'>In Teillastbetrieb für HK</option>
<option value='168'>In Betrieb für Trinkwasser</option>
<option value='169'>In Teillastbetrieb für TWW</option>
<option value='170'>In Betrieb für HK, TWW</option>
<option value='171'>In Teillastbetrieb für HK, TWW</option>
<option value='172'>Gesperrt, Feststoffkessel</option>
<option value='173'>Freigegeben für HK, TWW</option>
<option value='174'>Freigeben für TWW</option>
<option value='175'>Freigegeben für HK</option>
<option value='176'>Gesperrt, Außentemperatur</option>
<option value='198'>Gesperrt, Ökobetrieb</option>
</select></td><td></td></tr>
</td></tr></table>
</body>
</html>
]
org.openhab.core.transform.TransformationException: An error occurred while executing script. TypeError: Cannot read property "indexOf" from undefined in <eval> at line number 18
	at org.openhab.core.transform.TransformationHelper$TransformationServiceDelegate.transform(TransformationHelper.java:71) ~[bundleFile:?]
	at org.openhab.binding.http.internal.HttpBinding.execute(HttpBinding.java:218) [bundleFile:?]
	at org.openhab.core.binding.AbstractActiveBinding$BindingActiveService.execute(AbstractActiveBinding.java:146) [bundleFile:?]
	at org.openhab.core.service.AbstractActiveService$RefreshThread.run(AbstractActiveService.java:169) [bundleFile:?]

This error always occurs when the "Status Kessel" has the value 175.

Regards

Sebastian

Bad JSON in MQTT message

Hi,

I tried to publish some values using MQTT with JSON.

Unfortunately the published JSON looks invalid:

{"BSB-LAN":{"status":{"8700":"17.6","8830":"51.9","8310":"57.8","8744":"---","8950":"57.8","8331":"14568",}}

(note the missing '}')

My broker is mosquitto version 1.6.12
I'm using BSB Lan version 1.1.39-20201005105852 on Arduino Due.

My config (logging part):

/* activate logging on SD-card. Requires a FAT32-formatted Micro-SD card inserted into the Ethernet-Shield's card slot */
// #define LOGGER
// Logging von "rohen" Bus-Datentelegrammen
// Telegrams logging. False - disabled on start, true - enabled on start.
#define LOGTELEGRAM false
// You can enable logging with URL /LE command or disable it with /LD command when run time.
// Data will be write to "journal.txt"
boolean log_unknown_only = 1;         // should we log only unknown commands when logging bus telegrams?
boolean log_bc_only = 0;              // should we log only broadcast commands (dest = 0x7f) when logging bus telegrams?


// Logging data from parameters
// Interval and list of parameters can be redefined through /L command when run time
// Data will be write to "datalog.txt"
int log_parameters[20] = {
  8700,
  8830,
  8310,
  8744,
  8950,
  8331
};
unsigned long log_interval = 30;    // logging interval in seconds

// Activate sending log_parameters to MQTT broker every log_interval seconds
#define MQTTBrokerIP 192,168,2,1	// Please use commas instead of dots!!!
//#define MQTTUsername "User" // Set username for MQTT broker here or comment out if no username/password is used.
//#define MQTTPassword "Pass" // Set password for MQTT broker here or comment out if no password is used.
#define MQTTTopicPrefix "bsb_lan" 	// Optional: Choose the "topic" for MQTT messages here
#define MQTT_JSON 					// Optional: Use this if you want a json package of your logging information printed to the mqtt topic
//#define MQTTDeviceID "MyHeater"	// Optional: Define a device name to use as header in json payload. If not defined, BSB-LAN will be used.
// Payload will be of the structure: {"MQTTDeviceID": {"status":{"log_param1":"value1","log_param2":"value2"}, ...}}

Have any of you ever had the problem?
How can I help identify the root cause?

Many thanks

Print list of installed modules

Frederick, are you interested in a patch for the /C command that prints a list of installed modules?
Output like this:

Installed modules:
WEBSERVER, IPWE, RESET, DebugTelnet, LOGGER, VERSION_CHECK

Unable to query parameter 8982 via JSON API

Hi,

I am currently implementing an openhab binding which uses the JSON API to periodically query values from the BSB-LAN device. During some tests I noticed that I am unable to query parameter 8982 while it is showing correctly in the web interface.

Executing a /JQ=8982 just returns an empty JSON. It is also missing in the /JK=39 output:

...
"8980": {
    "name": "Pufferspeichertemperatur 1",
    "possibleValues": [

    ],
    "dataType": 0
  },
  "8981": {
    "name": "Pufferspeichersollwert",
    "possibleValues": [

    ],
    "dataType": 0
  },
  "9000": {
    "name": "Vorlaufsollwert H1",
    "possibleValues": [

    ],
    "dataType": 0
  },
...

I assume this is because findline(...) cannot find the parameter although it is defined. The cause might be the misordered line https://github.com/fredlcore/bsb_lan/blob/9e36a840ffeef146a3ae4f938996d863c397c996/BSB_lan_defs.h#L7934

Without having it tried I think the same issue exists for
https://github.com/fredlcore/bsb_lan/blob/9e36a840ffeef146a3ae4f938996d863c397c996/BSB_lan_defs.h#L7405

Note: My device is currently flashed the branch from #37 so it might be that it is not reproducible with master due to the different number of lines in the command tables.

regards
Peter

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.