Navigation

    Forum

    • Register
    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • intraHouse Site
    1. Home
    2. VictorT
    3. Posts
    V
    • Profile
    • Following
    • Followers
    • Topics
    • Posts
    • Best
    • Groups

    Posts made by VictorT

    • RE: Плагин MegaD

      @Lost, Добрый день!
      Недавно стал разбираться с IntraHouse и пришлось потрать время пока не наткнулся на ваше сообщение в этой ветке и еще в соседней. Оба случая подтверждаю, все тоже самое.
      Из ситуации вышел сценарием, который состряпал из разных примеров. В моей задаче нужно получать данные со счетчика Mercury 200.02 через шлюз MegaD.
      Вот что получилось и работает стабильно несколько дней (запросы удаленные, через VPN):

      getMercury() {
         require('http').get('http://192.168.2.14/sec/?uart_tx=000816F063&mode=rs485', res => {  //C38D - CRC16 Modbus
          if (res.statusCode != 200) {
            res.resume();
            this.log('Error code: ' +res.statusCode);
            rawError("rawError", res.statusCode);
            voltage.assign("volt", 0);
            current.assign("current", 0);
            power.assign("power", 0);
            return;
          } else {
                 //this.log('Start sleep 100ms');
                 const date = Date.now();
                  let currentDate = null;
                  do {
                     currentDate = Date.now();
                  } while (currentDate - date < 100);
                 //this.log('End sleep 100ms');
                    require('http').get('http://192.168.2.14/sec/?uart_rx=1&mode=rs485', res => {
                      let rawData = '';
                      res.on('data', chunk => {
                      rawData += chunk;
                      rawData1 = rawData;
                    });
                      if (rawData1.includes('CRC Error')) {  
                        this.log('rawData= '+rawData1);
                        rawError.assign("rawError", rawData1);
                      } else {
                        res.on('end', () => {
                        const arr = rawData.split("|");
                        res.resume();
                        const volt = Number(arr[5]+arr[6])/10;
                        const tok  = Number(arr[7]+arr[8])/100;
                        const watt = Number(arr[9]+arr[10]+arr[11]);
                        
                        voltage.assign("volt", volt);
                        current.assign("current", tok);
                        power.assign("power", watt);
                        this.log('getResponse body= '+rawData+ ' Volt='+volt );
                        });  
                      }
                    });
            }
         });
        
         // Запрос следующего цикла через 5 сек
         this.startTimer('T2', 5, 'getMercury');
        },
      
      posted in Плагины
      V
      VictorT