summaryrefslogtreecommitdiff
path: root/localwebsite/handlers/InverterHandler.php
diff options
context:
space:
mode:
authorEvgeny Zinoviev <me@ch1p.io>2022-05-21 01:45:56 +0300
committerEvgeny Zinoviev <me@ch1p.io>2022-05-21 01:45:56 +0300
commit6f53e6e997c9f4647a667bd58b11bc622fa3b47f (patch)
tree226bd65a04576de4f41bf8396af97cd43ca27829 /localwebsite/handlers/InverterHandler.php
parent902a3bfbe2c4645e6725fb7583500d1a28026fad (diff)
move local website to homekit's tree
Diffstat (limited to 'localwebsite/handlers/InverterHandler.php')
-rw-r--r--localwebsite/handlers/InverterHandler.php88
1 files changed, 88 insertions, 0 deletions
diff --git a/localwebsite/handlers/InverterHandler.php b/localwebsite/handlers/InverterHandler.php
new file mode 100644
index 0000000..7878c4f
--- /dev/null
+++ b/localwebsite/handlers/InverterHandler.php
@@ -0,0 +1,88 @@
+<?php
+
+class InverterHandler extends RequestHandler
+{
+
+ public function __construct()
+ {
+ parent::__construct();
+ $this->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('<b>Battery:</b> %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('<b>Load:</b> %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('<b>Input power:</b> %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('<b>Generator:</b> %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()
+ {
+
+ }
+
+} \ No newline at end of file