tpl->add_static('inverter.js'); } public function GET_status_page() { global $config; $inv = new InverterdClient($config['inverterd_host'], $config['inverterd_port']); $inv->setFormat('json'); $status = jsonDecode($inv->exec('get-status'))['data']; $this->tpl->set([ 'status' => $status, 'html' => $this->renderStatusHtml($status) ]); $this->tpl->set_title('Инвертор'); $this->tpl->render_page('inverter_page.twig'); } public function GET_status_ajax() { global $config; $inv = new InverterdClient($config['inverterd_host'], $config['inverterd_port']); $inv->setFormat('json'); $status = jsonDecode($inv->exec('get-status'))['data']; ajax_ok(['html' => $this->renderStatusHtml($status)]); } protected function renderStatusHtml(array $status) { $power_direction = strtolower($status['battery_power_direction']); $power_direction = preg_replace('/ge$/', 'ging', $power_direction); $charging_rate = ''; if ($power_direction == 'charging') $charging_rate = sprintf(' @ %s %s', $status['battery_charging_current']['value'], $status['battery_charging_current']['unit']); else if ($power_direction == 'discharging') $charging_rate = sprintf(' @ %s %s', $status['battery_discharging_current']['value'], $status['battery_discharging_current']['unit']); $html = sprintf('Battery: %s %s', $status['battery_voltage']['value'], $status['battery_voltage']['unit']); $html .= sprintf(' (%s%s, ', $status['battery_capacity']['value'], $status['battery_capacity']['unit']); $html .= sprintf('%s%s)', $power_direction, $charging_rate); $html .= "\n".sprintf('Load: %s %s', $status['ac_output_active_power']['value'], $status['ac_output_active_power']['unit']); $html .= sprintf(' (%s%%)', $status['output_load_percent']['value']); if ($status['pv1_input_power']['value'] > 0) $html .= "\n".sprintf('Input power: %s %s', $status['pv1_input_power']['value'], $status['pv1_input_power']['unit']); if ($status['grid_voltage']['value'] > 0 or $status['grid_freq']['value'] > 0) { $html .= "\n".sprintf('Generator: %s %s', $status['grid_voltage']['unit'], $status['grid_voltage']['value']); $html .= sprintf(', %s %s', $status['grid_freq']['value'], $status['grid_freq']['unit']); } return nl2br($html); } public function GET_status_page_update() { } }