Интеграция счетчика Энергомера CE301 с Majordomo

Подробная инструкция по интеграции 3-х фазного электросчетчика "Энергомера СЕ301" с системой умного дома "Majordomo" по протоколу RS-485.

Метод readCounter:
/* 
 Варианты вызова метода:
 // если данный метод вызывается в onNewHour раз в месяц
 callMethod('ElectroCount.readCounter', array('mode'=>'monthly')); 
 // если данный метод вызывается в onNewHour раз в сутки
 callMethod('ElectroCount.readCounter', array('mode'=>'daily'));   
 // если данный метод вызывается в onNewHour каждый час
 callMethod('ElectroCount.readCounter', array('mode'=>'hourly'));   
  // метод работы с оплатами
 callMethod('ElectroCount.readCounter', array('mode'=>'payment'));   
*/

// Выполнение метода в зависимости от его типа
switch ($params['mode']) {
case 'monthly':
  // Сохраним значения месячного расхода в историю. История значений используется при построении графиков.    
    $cmc = $this->getProperty('MonthlyCurrent');
  	$cmct = $this->getProperty('ET0PE');
  	$cmc_value = $cmct - $cmc;
    $this->setProperty('Monthly', $cmc_value);
    $this->setProperty('MonthlyCurrent', $cmct);       
  break; 
case 'daily':
  // Сохраним значения суточного расхода в историю. История значений используется при построении графиков. 
    $cdc = $this->getProperty('DailyCurrent');
    $cdct = $this->getProperty('ET0PE');
  	$cdc_value = $cdct - $cdc;
    $this->setProperty('Daily', $cdc_value);
    $this->setProperty('DailyCurrent', $cdct);
  break;
case 'hourly':  
  // Пока здесь ничего не требуется

  break;
  
case 'minute':  
  //вывод показаний до сейчас за день
    $cdc = $this->getProperty('DailyCurrent');
    $cdct = $this->getProperty('ET0PE');
  	$cdc_value = round($cdct - $cdc, 2); ;
    $this->setProperty('DailyDay', $cdc_value);
  
  //вывод показаний до сейчас за месяц
    $cmc = $this->getProperty('MonthlyCurrent');
    $cmct = $this->getProperty('ET0PE');
  	$cmc_value = round($cmct - $cmc, 2); ;
    $this->setProperty('MonthlyDay', $cmc_value);

  break;
  
  case 'payment':  
  //вывод суммы всех оплат
  $payment_summ = getHistorySum("ElectroCount.Payment", "1509424597", time());
  //вычисляем сумму долга за эл. энергию.
  $elfull = $this->getProperty('ET0PE');
  $payment_value = round($elfull- $payment_summ, 2); ;
  $this->setProperty('NoPayment', $payment_value);
  break;
 
default:     // Пока здесь ничего не требуется

}

Возврат к списку