Advertisement
Guest User

eww

a guest
Apr 21st, 2019
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 29.33 KB | None | 0 0
  1. void configureE2230() {
  2.  
  3.   node.writeSingleRegister(0xFF, 0);
  4.  
  5.   node.writeSingleRegister(0xA2, 65496);
  6.   node.writeSingleRegister(0xA8, 10);
  7.  
  8.   node.writeSingleRegister(0x11,42330);
  9.  
  10. }
  11.  
  12. void send_config_page_setup_logger (boolean timeconfigure,int yearconfigure,int monthconfigure,int dayconfigure,int hourconfigure,int minuteconfigure,int secondconfigure){
  13.  
  14.   uint16_t setupvalue;
  15.   if (logstatewrite){
  16.     bitWrite(setupvalue,2,1);
  17.   }else{
  18.     bitWrite(setupvalue,2,0);
  19.   }
  20.  
  21.   node.writeSingleRegister(0xFF, 0);
  22.    
  23.   node.writeSingleRegister(0xFF,setupvalue);
  24.  
  25.   if (timeconfigure){
  26.     //Year
  27.     node.writeSingleRegister(0x104, yearconfigure);
  28.     //Month
  29.     node.writeSingleRegister(0x105, monthconfigure);
  30.     //Day
  31.     node.writeSingleRegister(0x106, dayconfigure);
  32.     //Hours
  33.     node.writeSingleRegister(0x107, hourconfigure);
  34.     //Minutes
  35.     node.writeSingleRegister(0x108, minuteconfigure);
  36.     //Seconds
  37.     node.writeSingleRegister(0x109, secondconfigure);
  38.   }
  39.  
  40.   node.writeSingleRegister(0x10,logginginterval);
  41.  
  42.   node.writeSingleRegister(0x11,42330);
  43.   delay(Mdelay);
  44. }
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51. void send_configure_logger_html()
  52. {
  53.  
  54.   if (server.args() > 0 )  // Save Settings
  55.   {    
  56.     log_user_time = false;
  57.    
  58.     for ( uint8_t i = 0; i < server.args(); i++ ) {
  59.       if (server.argName(i) == "x_configuretime") log_user_time = true;
  60.       if (server.argName(i) == "x_year") log_year = (server.arg(i).toInt());
  61.       if (server.argName(i) == "x_month") log_month = server.arg(i).toInt();
  62.       if (server.argName(i) == "x_day") log_day = server.arg(i).toInt();
  63.       if (server.argName(i) == "x_hour") log_hour = server.arg(i).toInt();
  64.       if (server.argName(i) == "x_minute") log_minute = server.arg(i).toInt();
  65.       if (server.argName(i) == "x_second") log_second = server.arg(i).toInt();
  66.     }
  67.   }
  68.  
  69.    
  70.   server.send ( 200, "text/html", PAGE_Root_configloginternal );
  71.    if (config.serial == true){
  72.      Serial.println(__FUNCTION__);
  73.    }
  74.  
  75. }
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83.  
  84. void send_configure_html()
  85. {
  86.  
  87.   if (server.args() > 0 )  // Save Settings
  88.   {    
  89.     logstatewrite = false;
  90.     boolean configuretime = false;
  91.     int yearconfig;
  92.     int monthconfig;
  93.     int dayconfig;
  94.     int hourconfig;
  95.     int minuteconfig;
  96.     int secondconfig;
  97.    
  98.     for ( uint8_t i = 0; i < server.args(); i++ ) {
  99.       if (server.argName(i) == "x_logginginterval") logginginterval = server.arg(i).toInt();
  100.       if (server.argName(i) == "x_loggingstate") logstatewrite = true;
  101.       if (server.argName(i) == "x_configuretime") configuretime = true;
  102.       if (server.argName(i) == "x_year") yearconfig = (server.arg(i).toInt()-2000);
  103.       if (server.argName(i) == "x_month") monthconfig = server.arg(i).toInt();
  104.       if (server.argName(i) == "x_day") dayconfig = server.arg(i).toInt();
  105.       if (server.argName(i) == "x_hour") hourconfig = server.arg(i).toInt();
  106.       if (server.argName(i) == "x_minute") minuteconfig = server.arg(i).toInt();
  107.       if (server.argName(i) == "x_second") secondconfig = server.arg(i).toInt();
  108.     }
  109.     server.send ( 200, "text/html", PAGE_WaitAndReload_loggerconf);    
  110.     send_config_page_setup_logger(configuretime,yearconfig,monthconfig,dayconfig,hourconfig,minuteconfig,secondconfig);
  111.   }
  112.  
  113.    
  114.   server.send ( 200, "text/html", PAGE_Root_configlog );
  115.    if (config.serial == true){
  116.      Serial.println(__FUNCTION__);
  117.    }
  118.  
  119. }
  120.  
  121.  
  122. void send_root_page_clearmem (){
  123.   // Enable admin mode
  124.   node.writeSingleRegister(0xFF, 0);
  125.   delay(Mdelay);
  126.   node.writeSingleRegister(0x118, 42330);
  127.   delay(Mdelay);
  128. }
  129.  
  130. void send_root_page_setup (){
  131.   // Enable admin mode
  132.   node.writeSingleRegister(0xFF, 0);
  133.   delay(Mdelay);
  134.   // start from beginning
  135.   node.writeSingleRegister(0x119, 0);
  136.   delay(Mdelay);
  137.   if (recordvalue >= 1){
  138.     node.writeSingleRegister(0x11A, (recordvalue-1)*16);
  139.   }else{
  140.     node.writeSingleRegister(0x11A, 0);
  141.   }
  142.   delay(Mdelay);
  143. }
  144.  
  145. void send_root_page_reboot (){
  146.   recordvalue = 0;
  147.   node.writeSingleRegister(0x11,42330);
  148.   delay(Mdelay);
  149. }
  150.  
  151. void send_root_page_download ()
  152. {
  153.  
  154.   byte i;
  155.   byte y;
  156.   int j;
  157.   int mask;
  158.   int seconds[5];
  159.   int minutes[5];
  160.   int hours[4];
  161.   int days[4];
  162.   int months[3];
  163.   int years[5];
  164.   unsigned long unixtimestamp;
  165.   unsigned int unixfirst;
  166.   unsigned int unixsecond;
  167.   unsigned long timestamp;
  168.   unsigned int timefirst;
  169.   unsigned int timesecond;
  170.   float temperature;
  171.   float humidity;
  172.   unsigned int CO2;
  173.   uint8_t seconds_final = 0;
  174.   uint8_t minutes_final = 0;
  175.   uint8_t hours_final = 0;
  176.   uint8_t days_final = 0;
  177.   uint8_t months_final = 0;
  178.   uint8_t years_final = 0;
  179.   uint8_t result;
  180.   float humidityvalid;
  181.   float temperaturevalid;
  182.    
  183.   node.clearTransmitBuffer();
  184.  
  185.   result = node.readHoldingRegisters(0x11B, 8);
  186.   delay(300);
  187.  
  188.  if (result == node.ku8MBSuccess){
  189.       timefirst = node.getResponseBuffer(0);
  190.       timesecond = node.getResponseBuffer(1);
  191.      
  192.       timestamp = timefirst << 16 | timesecond;
  193.       //Create seconds
  194.       for ( i = 0, y = 0; i <= 5; i++) {
  195.         seconds[y] = bitRead(timestamp, i);
  196.         y++;
  197.       }
  198.  
  199.     unixfirst = node.getResponseBuffer(5);
  200.     unixsecond = node.getResponseBuffer(6);
  201.  
  202.     unixtimestamp = unixfirst << 16 | unixsecond;
  203.    
  204.     mask = 0x1;
  205.    
  206.     for(j = 0; j <= 5; j++){
  207.         if( seconds[j] == 1) seconds_final |= mask;
  208.       mask = mask << 1;
  209.     }
  210.    
  211.       //Create minutes
  212.       for ( i = 6,  y = 0; i <= 11; i++) {
  213.         minutes[y] = bitRead(timestamp, i);
  214.         y++;
  215.       }
  216.    
  217.     mask = 0x1;
  218.  
  219.   for(j = 0; j <= 5; j++){
  220.       if( minutes[j] == 1) minutes_final |= mask;
  221.     mask = mask << 1;
  222.   }
  223.  
  224.     //Create hours
  225.     for ( i = 12, y = 0; i <= 16; i++) {
  226.       hours[y] = bitRead(timestamp, i);
  227.       y++;
  228.     }
  229.  
  230.  
  231.   mask = 0x1;
  232.  
  233.   for(j = 0; j <= 4; j++){
  234.       if( hours[j] == 1) hours_final |= mask;
  235.     mask = mask << 1;
  236.   }
  237.  
  238.  
  239.     //Create days
  240.     for ( i = 17, y = 0; i <= 21; i++) {
  241.       days[y] = bitRead(timestamp, i);
  242.       y++;
  243.     }
  244.  
  245.  
  246.  
  247.   mask = 0x1;
  248.  
  249.   for(j = 0; j <= 4; j++){
  250.       if( days[j] == 1) days_final |= mask;
  251.     mask = mask << 1;
  252.   }
  253.  
  254.     //Create months
  255.     for ( i = 22,y = 0; i <= 25;  i++  ) {
  256.       months[y] = bitRead(timestamp, i);
  257.       y++;
  258.     }
  259.  
  260.  
  261.   mask = 0x1;
  262.  
  263.   for(j = 0; j <= 3; j++){
  264.       if( months[j] == 1) months_final |= mask;
  265.     mask = mask << 1;
  266.   }
  267.    
  268.     //Create years
  269.     for ( i = 26, y = 0; i <= 31; i++ ) {
  270.       years[y] = bitRead(timestamp, i);
  271.       y++;
  272.     }
  273.  
  274.  
  275.   mask = 0x1;
  276.  
  277.   for(j = 0; j <= 5; j++){
  278.       if( years[j] == 1) years_final |= mask;
  279.     mask = mask << 1;
  280.   }
  281.     temperature = node.getResponseBuffer(2);
  282.     humidity = node.getResponseBuffer(3);
  283.     CO2 = node.getResponseBuffer(4);
  284.    
  285.     if (config.serial) {
  286.  
  287.       Serial.print("Time 0 byte: ");
  288.       Serial.println(timefirst,HEX);
  289.       Serial.print("Time 1 byte: ");
  290.       Serial.println(timesecond,HEX);
  291.      
  292.       Serial.print("Time 4 byte: ");
  293.       Serial.println(timestamp);
  294.  
  295.       Serial.print("UNIX 0 byte: ");
  296.       Serial.println(unixfirst);
  297.       Serial.print("UNIX 1 byte: ");
  298.       Serial.println(unixsecond);
  299.  
  300.       Serial.print("UNIX 4 byte: ");
  301.       Serial.println(unixtimestamp);
  302.      
  303.       Serial.print(" Time : ");
  304.       Serial.print(years_final+2000);
  305.       Serial.print("/");
  306.       Serial.print(months_final);
  307.       Serial.print("/");
  308.       Serial.print(days_final);
  309.       Serial.print("  ");
  310.       Serial.print(hours_final);
  311.       Serial.print(":");
  312.       Serial.print(minutes_final);
  313.       Serial.print(":");
  314.       Serial.println(seconds_final);
  315.       Serial.print("Temperature raw: ");
  316.  
  317.       Serial.println(temperature);
  318.       Serial.print("Humidity raw: ");
  319.  
  320.       Serial.println(humidity);
  321.       Serial.print("CO2 raw: ");
  322.  
  323.       Serial.println(CO2);
  324.       Serial.print("CRC: ");
  325.       Serial.println(node.getResponseBuffer(7));    
  326.     }
  327.    
  328.     humidityvalid = humidity / 100;
  329.     temperaturevalid = temperature / 100;
  330.     if (result == node.ku8MBSuccess){
  331.       String values ="";
  332.       values += "x_temperature|" + String(temperaturevalid,1) +  "|div\n";
  333.       values += "x_humidity|" + String(humidityvalid,1) +  "|div\n";
  334.       values += "x_CO2|" + (String) CO2 +  "|div\n";
  335.       values += "x_timestamp|" + (String) unixtimestamp + "|div\n";  
  336.       server.send ( 200, "text/plain", values);
  337.     }
  338.    
  339.     node.clearResponseBuffer();
  340.     //Restart
  341.     //node.writeSingleRegister(0x11, 42330);
  342.  }
  343.  
  344. }
  345.  
  346.  
  347.  
  348. void sync (){
  349.  
  350.           NTPRefresh();
  351.          
  352.           Second_Tick();
  353.          
  354.           node.clearTransmitBuffer();
  355.           // Enable admin mode
  356.           node.writeSingleRegister(0xFF, 0);
  357.           //Year
  358.           node.writeSingleRegister(0x104, (DateTime.year-2000));
  359.           //Month
  360.           node.writeSingleRegister(0x105, DateTime.month);
  361.           //Day
  362.           node.writeSingleRegister(0x106, DateTime.day);
  363.           //Hours
  364.           node.writeSingleRegister(0x107, DateTime.hour);
  365.           //Minutes
  366.           node.writeSingleRegister(0x108, DateTime.minute);
  367.           //Seconds
  368.           node.writeSingleRegister(0x109, DateTime.second);
  369.           //Restart
  370.           node.writeSingleRegister(0x11, 42330);
  371.  
  372. }
  373.  
  374. void send_first_data_modbus()
  375. {
  376.  
  377.   uint8_t result;
  378.   unsigned int firstpart;
  379.   unsigned int secondpart;
  380.   float percentage;
  381.   float responsemem[3];
  382.  
  383.   result = node.readHoldingRegisters(0x19C, 11);
  384.  
  385.   if (result == node.ku8MBSuccess){
  386.       firstpart = node.getResponseBuffer(0);
  387.  
  388.       secondpart = node.getResponseBuffer(1);
  389.      
  390.       node.clearResponseBuffer();
  391.      
  392.       // How much data?
  393.       responsemem[0] = firstpart >> 16 | secondpart;
  394.  
  395.       percentage = responsemem[0] / 32768 * 100;
  396.      
  397.       String values ="";
  398.      
  399.       values += "x_savedrecords|" + String(responsemem[0],0) +  "|div\n";
  400.    
  401.       values += "x_saveddata|" + String(percentage,3) +  "|div\n";
  402.      
  403.       values += "x_recordvalue|" +  (String) recordvalue + "|input\n";
  404.  
  405.       server.send ( 200, "text/plain", values);
  406.   }
  407. }
  408.  
  409.  
  410. void send_logger_config_page (){
  411.       String values = "";
  412.  
  413.      
  414.       File csvlogfile = SPIFFS.open("/data.csv", "r");
  415.       if (csvlogfile){
  416.        String fsize = String (csvlogfile.size());
  417.        float convertedfsize = fsize.toFloat()/1000;
  418.        float percentage = convertedfsize / 200 * 100;
  419.        csvlogfile.close();
  420.        values += "x_fsize|" + (String) convertedfsize + "|div\n";
  421.        values += "x_fpercentage|" + (String) percentage + "|div\n";
  422.       }
  423.      
  424.      
  425.  
  426.  
  427.  
  428.      
  429.       values += "x_configuretime|" +  (String) (log_user_time ? "checked" : "") + "|chk\n";
  430.      
  431.       values += "x_ntptime|" +  (String) DateTime.hour + ":" + (String) + DateTime.minute +  ":"  + (String)  DateTime.second +  "|div\n";;
  432.       values += "x_ntpdate|" +  (String)  DateTime.year + "-" + (String)  DateTime.month + "-" + (String)  DateTime.day +  "|div\n";
  433.  
  434.       values += "x_timestamp_hh_mm_ss|" ;
  435.      
  436.       values += (String) log_hour +  (String) ":" ;
  437.       values += (String) log_minute +  (String)  ":" ;
  438.       values += (String) log_second + "|div\n";
  439.      
  440.       values += "x_timestamp_yyyy_mm_dd|";
  441.      
  442.       values += (String) log_year +  (String) "-" ;
  443.       values += (String) log_month +  (String) "-" ;
  444.       values += (String) log_day +  "|div\n";
  445.  
  446.       server.send ( 200, "text/plain", values);
  447.  
  448. }
  449.  
  450.  
  451. void send_config_page_modbus ()
  452. {
  453.  
  454. float response[7];
  455. float responsemem[3];
  456. float datemem[5];
  457.  
  458. float datalogginginterval;
  459.  
  460. float loggertemp;
  461. float loggerhum;
  462. int firstregs;
  463.  
  464. unsigned int firstpart;
  465. unsigned int secondpart;
  466.  
  467. uint8_t result;
  468. uint8_t results;
  469.  
  470. result = node.readHoldingRegisters(0xFF, 11);
  471. if (result == node.ku8MBSuccess){
  472.   if(config.serial){
  473.     Serial.print("[0] ");
  474.     Serial.print(node.getResponseBuffer(0));
  475.   }
  476.   response[0] = node.getResponseBuffer(0);
  477.   if(config.serial){
  478.     Serial.print(" ");
  479.   }
  480.  
  481.   if(config.serial){
  482.     Serial.print(" [1] ");
  483.     Serial.print(node.getResponseBuffer(1));
  484.   }
  485.   response[1] = (node.getResponseBuffer(1)) ;
  486.   if(config.serial){
  487.     Serial.print(" ");
  488.   }
  489.  
  490.   if(config.serial){
  491.     Serial.print(" [2] ");
  492.     Serial.print(node.getResponseBuffer(2));
  493.   }
  494.   response[2] = (node.getResponseBuffer(2));
  495.   if(config.serial){
  496.     Serial.print(" ");
  497.   }
  498.  
  499.   if(config.serial){
  500.     Serial.print(" [3] ");
  501.     Serial.println(node.getResponseBuffer(3));
  502.   }
  503.   response[3] = node.getResponseBuffer(3);
  504.   if(config.serial){
  505.     Serial.print(" ");
  506.   }
  507.  
  508.   if(config.serial){
  509.     Serial.print(" [4] ");
  510.     Serial.println(node.getResponseBuffer(4));
  511.   }
  512.  
  513.   datalogginginterval = node.getResponseBuffer(4);
  514.   if(config.serial){
  515.     Serial.print(" ");
  516.   }
  517.  
  518.   //Years
  519.   response[4] = node.getResponseBuffer(5) + 2000;
  520.   //Months
  521.   response[5] = node.getResponseBuffer(6);
  522.   //Days
  523.   response[6] = node.getResponseBuffer(7);
  524.   //Hours
  525.   response[7] = node.getResponseBuffer(8);
  526.   //Minutes
  527.   response[8] = node.getResponseBuffer(9);
  528.   //Seconds
  529.   response[9] = node.getResponseBuffer(10);
  530. }
  531. node.clearResponseBuffer();
  532. delay(1200);
  533.  
  534.  
  535. results = node.readHoldingRegisters(0x19C, 11) ;
  536. if (results == node.ku8MBSuccess){
  537.  
  538.  
  539.   firstpart = node.getResponseBuffer(0);
  540.  
  541.   secondpart = node.getResponseBuffer(1);
  542.  
  543.   // How much data?
  544.   responsemem[0] = firstpart >> 16 | secondpart;
  545.  
  546.   // Temperature
  547.   responsemem[1] = node.getResponseBuffer(2);
  548.   // Humidity
  549.   responsemem[2] = node.getResponseBuffer(3);
  550.   // CO2
  551.   responsemem[4] = node.getResponseBuffer(4);
  552.  
  553.   // Year
  554.   datemem[0] = node.getResponseBuffer(5);
  555.   //Month
  556.   datemem[1] = node.getResponseBuffer(6);
  557.   //Day
  558.   datemem[2] = node.getResponseBuffer(7);
  559.  
  560.   //Hours
  561.   datemem[3] = node.getResponseBuffer(8);
  562.   //Minutes
  563.   datemem[4] = node.getResponseBuffer(9);
  564.   //Seconds
  565.   datemem[5] = node.getResponseBuffer(10);
  566. }
  567.  
  568. node.clearResponseBuffer();
  569.  
  570. delay(Mdelay);
  571.  
  572. loggertemp = response[1]/100;
  573. loggerhum = response[2]/100;
  574.  
  575.     String values ="";
  576.     bool datalogging;
  577.     bool overwriting;
  578.     unsigned int statusbar;
  579.    
  580.     String yearstring;
  581.     String monthstring;
  582.     String daystring;
  583.  
  584.     String secondstring;
  585.     String minutestring;
  586.     String hourstring;
  587.  
  588.     float percentage;
  589.  
  590.     float tempfrommemory;
  591.     float humfrommemory;
  592.  
  593.     tempfrommemory = responsemem[1] / 100;
  594.  
  595.     humfrommemory = responsemem[2] / 100;
  596.    
  597.     percentage = responsemem[0] / 32768 * 100;
  598.     if (results == node.ku8MBSuccess && result == node.ku8MBSuccess){
  599.       values += "x_logginginterval|" +  String(datalogginginterval,0) + "|input\n";
  600.      
  601.       values += "x_savedrecords|" + String(responsemem[0],0) +  "|div\n";
  602.      
  603.       values += "x_saveddata|" + String(percentage,3) +  "|div\n";
  604.  
  605.       if (responsemem[1] != 0){
  606.         values += "x_latestmemC|" + String(tempfrommemory,2) +  "|div\n";
  607.       }else{
  608.         values += "x_latestmemC|" + (String) "-" +  "|div\n";
  609.       }    
  610.  
  611.       if (responsemem[2] != 0){
  612.         values += "x_latestmemRH|" + String(humfrommemory,2) +  "|div\n";
  613.       }else{
  614.         values += "x_latestmemRH|" + (String) "-" +  "|div\n";
  615.       }
  616.  
  617.       if (responsemem[4] != 0){
  618.         values += "x_latestmemPPM|" + String(responsemem[4],0) +  "|div\n";
  619.       }else{
  620.         values += "x_latestmemPPM|" + (String) "-" +  "|div\n";
  621.       }    
  622.      
  623.       if (datemem[0] >= 0){
  624.         values += "x_latestmemdate|" + String((datemem[0]+2000),0) +  " - ";
  625.       }else{
  626.         values += "x_latestmemdate|" + (String) "0" +  (String) " - ";
  627.       }
  628.  
  629.       if (datemem[1] < 10){
  630.         values += "0" + String(datemem[1],0) +  (String) " - " ;
  631.       }else{
  632.         values += String(datemem[1],0) +  (String) " - " ;
  633.       }
  634.  
  635.       if (datemem[2] < 10){
  636.         values += "0" + String(datemem[2],0) + "|div\n";
  637.       }else{
  638.         values += String(datemem[2],0) + "|div\n";
  639.       }    
  640.  
  641.       if (datemem[3] < 10){
  642.         values += "x_latestmemtime|" + (String) "0" + String(datemem[3],0) +  " : ";
  643.       }else{
  644.         values += "x_latestmemtime|" + String(datemem[3],0)  + " : ";
  645.       }
  646.  
  647.       if (datemem[4] < 10){
  648.         values += "0" + String(datemem[4],0) +  (String) " : " ;
  649.       }else{
  650.         values += String(datemem[1],0) +  (String) " : " ;
  651.       }
  652.  
  653.       if (datemem[5] < 10){
  654.         values += "0" + String(datemem[5],0) + "|div\n";
  655.       }else{
  656.         values += String(datemem[2],0) + "|div\n";
  657.       }  
  658.      
  659.       if (response[0] != 0){
  660.         values += "x_temperature|" + String(loggertemp,2) +  "|div\n";
  661.       }else{
  662.         values += "x_temperature|" + (String) "-" +  "|div\n";
  663.       }
  664.  
  665.       if (response[0] != 0){
  666.         values += "x_humidity|" + String(loggerhum,2) +  "|div\n";
  667.       }else{
  668.         values += "x_humidity|" + (String) "-" +  "|div\n";
  669.       }
  670.      
  671.       if (response[0] != 0){
  672.         values += "x_dewpoint|" + String(response[3],0) +  "|div\n";
  673.       }else{
  674.         values += "x_dewpoint|" + (String) "-" +  "|div\n";
  675.       }
  676.      
  677.       if (response[0] == 290){
  678.           datalogging = true;
  679.           overwriting = true;
  680.         }
  681.  
  682.       statusbar = response[0];
  683.        
  684.       if (bitRead(statusbar,8) == 1){  
  685.         values += "x_loggerstate|" + (String) "Logging" +  "|div\n";
  686.       }else{
  687.         values += "x_loggerstate|" + (String) "Configuration" +  "|div\n";
  688.       }
  689.  
  690.       boolean logstate;
  691.  
  692.       if (bitRead(statusbar,2) == 1){
  693.         logstate = true;
  694.       }else{
  695.         logstate = true;
  696.       }
  697.      
  698.       values += "x_loggingstate|" +  (String) (logstate ? "checked" : "") + "|chk\n";
  699.  
  700.       if (bitRead(statusbar,5) == 1){
  701.         values += "x_memoryfull|" + (String) "True" +  "|div\n";
  702.       }else{
  703.         values += "x_memoryfull|" + (String) "False" +  "|div\n";
  704.       }    
  705.      
  706.       if (response[4] > 0){
  707.         yearstring = String((response[4]),0);
  708.       }else{
  709.         yearstring = String(response[4],0);
  710.       }
  711.      
  712.       if (response[5] < 10){
  713.         monthstring =  (String) "0" +String(response[5],0);
  714.       }else{
  715.         monthstring = String(response[5],0);
  716.       }
  717.       monthstring.trim();
  718.  
  719.       if (response[6] < 10){
  720.         daystring =  (String) "0"+String(response[6],0);
  721.       }else{
  722.         daystring = String(response[6],0);
  723.       }
  724.       daystring.trim();
  725.  
  726.      
  727.  
  728.       if (response[9] < 10){
  729.         secondstring =  (String) "0"+String(response[9],0);
  730.       }else{
  731.         secondstring = String(response[9],0);
  732.       }
  733.       secondstring.trim();
  734.  
  735.       if (response[8] < 10){
  736.         minutestring =  (String) "0"+String(response[8],0);
  737.       }else{
  738.         minutestring = String(response[8],0);
  739.       }
  740.       minutestring.trim();
  741.  
  742.       if (response[7] < 10){
  743.         hourstring = (String) "0"+String(response[7],0);
  744.       }else{
  745.         hourstring = String(response[7],0);
  746.       }
  747.       hourstring.trim();
  748.  
  749.        
  750.      
  751.       values += "x_timestamp_hh_mm_ss|" ;
  752.      
  753.       values += hourstring +  (String) ":" ;
  754.       values += minutestring +  (String)  ":" ;
  755.       values += secondstring + "|div\n";
  756.      
  757.       values += "x_timestamp_yyyy_mm_dd|";
  758.      
  759.       values += yearstring +  (String) "-" ;
  760.       values += monthstring +  (String) "-" ;
  761.       values += daystring +  "|div\n";
  762.     }
  763.     values += "x_ntptime|" ;
  764.     if (DateTime.hour < 10){
  765.       values += (String) "0" + (String) DateTime.hour + ":" ;
  766.     }else{
  767.       values += (String) DateTime.hour + ":" ;
  768.     }
  769.     if (DateTime.minute < 10){
  770.       values += (String) "0" + (String) DateTime.minute +  ":" ;
  771.     }else{
  772.       values += (String) DateTime.minute +  ":" ;
  773.     }
  774.  
  775.     if (DateTime.second < 10){
  776.       values += (String) "0" + (String) DateTime.second + " " +  "|div\n";
  777.     }else{
  778.       values += (String)  DateTime.second + " " +  "|div\n";  
  779.     }
  780.  
  781.    
  782.     values += "x_ntpdate|" + (String)   DateTime.year + "-" ;
  783.    
  784.     if (DateTime.month < 10){
  785.       values += (String) "0" + (String)  DateTime.month + "-" ;
  786.     }
  787.     else{
  788.       values += (String)  DateTime.month + "-" ;
  789.     }
  790.  
  791.     if (DateTime.day < 10){
  792.       values += (String) "0" +  (String)  DateTime.day +  "|div\n";
  793.     }
  794.     else{
  795.       values += (String)  DateTime.day +  "|div\n";
  796.     }
  797.    
  798.     server.send ( 200, "text/plain", values);
  799.  
  800. }
  801.  
  802.  
  803. void send_root_page_modbus ()
  804. {
  805.  
  806. float response[7];
  807. float responsemem[3];
  808. float datemem[5];
  809.  
  810. float loggertemp;
  811. float loggerhum;
  812. int firstregs;
  813.  
  814. unsigned int firstpart;
  815. unsigned int secondpart;
  816.  
  817. uint8_t result;
  818. uint8_t results;
  819.  
  820. result = node.readHoldingRegisters(0xFF, 11);
  821. if (result == node.ku8MBSuccess){
  822.   if(config.serial){
  823.     Serial.print("[0] ");
  824.     Serial.print(node.getResponseBuffer(0));
  825.   }
  826.   response[0] = node.getResponseBuffer(0);
  827.   if(config.serial){
  828.     Serial.print(" ");
  829.   }
  830.  
  831.   if(config.serial){
  832.     Serial.print(" [1] ");
  833.     Serial.print(node.getResponseBuffer(1));
  834.   }
  835.   response[1] = (node.getResponseBuffer(1)) ;
  836.   if(config.serial){
  837.     Serial.print(" ");
  838.   }
  839.  
  840.   if(config.serial){
  841.     Serial.print(" [2] ");
  842.     Serial.print(node.getResponseBuffer(2));
  843.   }
  844.   response[2] = (node.getResponseBuffer(2));
  845.   if(config.serial){
  846.     Serial.print(" ");
  847.   }
  848.  
  849.   if(config.serial){
  850.     Serial.print(" [3] ");
  851.     Serial.println(node.getResponseBuffer(3));
  852.   }
  853.   response[3] = node.getResponseBuffer(3);
  854.   if(config.serial){
  855.     Serial.print(" ");
  856.   }
  857.   //Years
  858.   response[4] = node.getResponseBuffer(5) + 2000;
  859.   //Months
  860.   response[5] = node.getResponseBuffer(6);
  861.   //Days
  862.   response[6] = node.getResponseBuffer(7);
  863.   //Hours
  864.   response[7] = node.getResponseBuffer(8);
  865.   //Minutes
  866.   response[8] = node.getResponseBuffer(9);
  867.   //Seconds
  868.   response[9] = node.getResponseBuffer(10);
  869. }
  870. node.clearResponseBuffer();
  871. delay(1200);
  872.  
  873.  
  874. results = node.readHoldingRegisters(0x19C, 11) ;
  875. if (results == node.ku8MBSuccess){
  876.  
  877.  
  878.   firstpart = node.getResponseBuffer(0);
  879.  
  880.   secondpart = node.getResponseBuffer(1);
  881.  
  882.   // How much data?
  883.   responsemem[0] = firstpart >> 16 | secondpart;
  884.  
  885.   // Temperature
  886.   responsemem[1] = node.getResponseBuffer(2);
  887.   // Humidity
  888.   responsemem[2] = node.getResponseBuffer(3);
  889.   // CO2
  890.   responsemem[4] = node.getResponseBuffer(4);
  891.  
  892.   // Year
  893.   datemem[0] = node.getResponseBuffer(5);
  894.   //Month
  895.   datemem[1] = node.getResponseBuffer(6);
  896.   //Day
  897.   datemem[2] = node.getResponseBuffer(7);
  898.  
  899.   //Hours
  900.   datemem[3] = node.getResponseBuffer(8);
  901.   //Minutes
  902.   datemem[4] = node.getResponseBuffer(9);
  903.   //Seconds
  904.   datemem[5] = node.getResponseBuffer(10);
  905. }
  906.  
  907. node.clearResponseBuffer();
  908.  
  909. delay(Mdelay);
  910.  
  911. loggertemp = response[1]/100;
  912. loggerhum = response[2]/100;
  913.  
  914.     String values ="";
  915.     bool datalogging;
  916.     bool overwriting;
  917.     unsigned int statusbar;
  918.    
  919.     String yearstring;
  920.     String monthstring;
  921.     String daystring;
  922.  
  923.     String secondstring;
  924.     String minutestring;
  925.     String hourstring;
  926.  
  927.     float percentage;
  928.  
  929.     float tempfrommemory;
  930.     float humfrommemory;
  931.  
  932.     tempfrommemory = responsemem[1] / 100;
  933.  
  934.     humfrommemory = responsemem[2] / 100;
  935.    
  936.     percentage = responsemem[0] / 32768 * 100;
  937.     if (result == node.ku8MBSuccess && results == node.ku8MBSuccess){
  938.         values += "x_savedrecords|" + String(responsemem[0],0) +  "|div\n";
  939.        
  940.         values += "x_saveddata|" + String(percentage,3) +  "|div\n";
  941.    
  942.         if (responsemem[1] != 0){
  943.           values += "x_latestmemC|" + String(tempfrommemory,2) +  "|div\n";
  944.         }else{
  945.           values += "x_latestmemC|" + (String) "-" +  "|div\n";
  946.         }    
  947.    
  948.         if (responsemem[2] != 0){
  949.           values += "x_latestmemRH|" + String(humfrommemory,2) +  "|div\n";
  950.         }else{
  951.           values += "x_latestmemRH|" + (String) "-" +  "|div\n";
  952.         }
  953.    
  954.         if (responsemem[4] != 0){
  955.           values += "x_latestmemPPM|" + String(responsemem[4],0) +  "|div\n";
  956.         }else{
  957.           values += "x_latestmemPPM|" + (String) "-" +  "|div\n";
  958.         }    
  959.        
  960.         if (datemem[0] >= 0){
  961.           values += "x_latestmemdate|" + String((datemem[0]+2000),0) +  " - ";
  962.         }else{
  963.           values += "x_latestmemdate|" + (String) "0" +  (String) " - ";
  964.         }
  965.    
  966.         if (datemem[1] < 10){
  967.           values += "0" + String(datemem[1],0) +  (String) " - " ;
  968.         }else{
  969.           values += String(datemem[1],0) +  (String) " - " ;
  970.         }
  971.    
  972.         if (datemem[2] < 10){
  973.           values += "0" + String(datemem[2],0) + "|div\n";
  974.         }else{
  975.           values += String(datemem[2],0) + "|div\n";
  976.         }    
  977.    
  978.         if (datemem[3] < 10){
  979.           values += "x_latestmemtime|" + (String) "0" + String(datemem[3],0) +  " : ";
  980.         }else{
  981.           values += "x_latestmemtime|" + String(datemem[3],0)  + " : ";
  982.         }
  983.    
  984.         if (datemem[4] < 10){
  985.           values += "0" + String(datemem[4],0) +  (String) " : " ;
  986.         }else{
  987.           values += String(datemem[1],0) +  (String) " : " ;
  988.         }
  989.    
  990.         if (datemem[5] < 10){
  991.           values += "0" + String(datemem[5],0) + "|div\n";
  992.         }else{
  993.           values += String(datemem[2],0) + "|div\n";
  994.         }  
  995.        
  996.         if (response[0] != 0){
  997.           values += "x_temperature|" + String(loggertemp,2) +  "|div\n";
  998.         }else{
  999.           values += "x_temperature|" + (String) "-" +  "|div\n";
  1000.         }
  1001.    
  1002.         if (response[0] != 0){
  1003.           values += "x_humidity|" + String(loggerhum,2) +  "|div\n";
  1004.         }else{
  1005.           values += "x_humidity|" + (String) "-" +  "|div\n";
  1006.         }
  1007.        
  1008.         if (response[0] != 0){
  1009.           values += "x_dewpoint|" + String(response[3],0) +  "|div\n";
  1010.         }else{
  1011.           values += "x_dewpoint|" + (String) "-" +  "|div\n";
  1012.         }
  1013.        
  1014.         if (response[0] == 290){
  1015.             datalogging = true;
  1016.             overwriting = true;
  1017.           }
  1018.    
  1019.         statusbar = response[0];
  1020.          
  1021.         if (bitRead(statusbar,8) == 1){  
  1022.           values += "x_loggerstate|" + (String) "Logging" +  "|div\n";
  1023.         }else{
  1024.           values += "x_loggerstate|" + (String) "Configuration" +  "|div\n";
  1025.         }
  1026.        
  1027.         if (bitRead(statusbar,2) == 1){
  1028.           values += "x_loggingstate|" + (String) "Enabled" +  "|div\n";
  1029.         }else{
  1030.           values += "x_loggingstate|" + (String) "Disabled" +  "|div\n";
  1031.         }
  1032.    
  1033.         if (bitRead(statusbar,5) == 1){
  1034.           values += "x_memoryfull|" + (String) "True" +  "|div\n";
  1035.         }else{
  1036.           values += "x_memoryfull|" + (String) "False" +  "|div\n";
  1037.         }    
  1038.        
  1039.         if (response[4] > 0){
  1040.           yearstring = String((response[4]),0);
  1041.         }else{
  1042.           yearstring = String(response[4],0);
  1043.         }
  1044.        
  1045.         if (response[5] < 10){
  1046.           monthstring =  (String) "0" +String(response[5],0);
  1047.         }else{
  1048.           monthstring = String(response[5],0);
  1049.         }
  1050.         monthstring.trim();
  1051.    
  1052.         if (response[6] < 10){
  1053.           daystring =  (String) "0"+String(response[6],0);
  1054.         }else{
  1055.           daystring = String(response[6],0);
  1056.         }
  1057.         daystring.trim();
  1058.    
  1059.        
  1060.    
  1061.         if (response[9] < 10){
  1062.           secondstring =  (String) "0"+String(response[9],0);
  1063.         }else{
  1064.           secondstring = String(response[9],0);
  1065.         }
  1066.         secondstring.trim();
  1067.    
  1068.         if (response[8] < 10){
  1069.           minutestring =  (String) "0"+String(response[8],0);
  1070.         }else{
  1071.           minutestring = String(response[8],0);
  1072.         }
  1073.         minutestring.trim();
  1074.    
  1075.         if (response[7] < 10){
  1076.           hourstring = (String) "0"+String(response[7],0);
  1077.         }else{
  1078.           hourstring = String(response[7],0);
  1079.         }
  1080.         hourstring.trim();
  1081.    
  1082.          
  1083.        
  1084.         values += "x_timestamp_hh_mm_ss|" ;
  1085.        
  1086.         values += hourstring +  (String) ":" ;
  1087.         values += minutestring +  (String)  ":" ;
  1088.         values += secondstring + "|div\n";
  1089.        
  1090.         values += "x_timestamp_yyyy_mm_dd|";
  1091.        
  1092.         values += yearstring +  (String) "-" ;
  1093.         values += monthstring +  (String) "-" ;
  1094.         values += daystring +  "|div\n";
  1095.       }
  1096.      
  1097.     values += "x_ntptime|" ;
  1098.     if (DateTime.hour < 10){
  1099.       values += (String) "0" + (String) DateTime.hour + ":" ;
  1100.     }else{
  1101.       values += (String) DateTime.hour + ":" ;
  1102.     }
  1103.     if (DateTime.minute < 10){
  1104.       values += (String) "0" + (String) DateTime.minute +  ":" ;
  1105.     }else{
  1106.       values += (String) DateTime.minute +  ":" ;
  1107.     }
  1108.  
  1109.     if (DateTime.second < 10){
  1110.       values += (String) "0" + (String) DateTime.second + " " +  "|div\n";
  1111.     }else{
  1112.       values += (String)  DateTime.second + " " +  "|div\n";  
  1113.     }
  1114.  
  1115.    
  1116.     values += "x_ntpdate|" + (String)   DateTime.year + "-" ;
  1117.    
  1118.     if (DateTime.month < 10){
  1119.       values += (String) "0" + (String)  DateTime.month + "-" ;
  1120.     }
  1121.     else{
  1122.       values += (String)  DateTime.month + "-" ;
  1123.     }
  1124.  
  1125.     if (DateTime.day < 10){
  1126.       values += (String) "0" +  (String)  DateTime.day +  "|div\n";
  1127.     }
  1128.     else{
  1129.       values += (String)  DateTime.day +  "|div\n";
  1130.     }
  1131.    
  1132.     server.send ( 200, "text/plain", values);
  1133.  
  1134. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement