59 lines
2.1 KiB
PHP
59 lines
2.1 KiB
PHP
<?php
|
||
|
||
use Rsgrinko\IotApi\Narodmon;
|
||
use Rsgrinko\IotApi\Prometheus;
|
||
use Rsgrinko\IotApi\YandexIoT;
|
||
|
||
require_once __DIR__ . '/inc/bootstrap.php';
|
||
|
||
header('Content-Type: text/plain');
|
||
$prometheusObject = new Prometheus();
|
||
|
||
|
||
$dataFile = STORAGE_DIR . '/voltageNodeMCU.txt';
|
||
$voltage = 0;
|
||
|
||
if (file_exists($dataFile) && (time() - filectime($dataFile) < 60)) {
|
||
$voltage = file_get_contents($dataFile);
|
||
}
|
||
|
||
$prometheusObject->add('voltage', $voltage);
|
||
|
||
/** Получение данных с Dessmonitor */
|
||
$anenjiData = unserialize(file_get_contents(__DIR__ . '/data/anenj.txt'));
|
||
|
||
$prometheusObject->add('anenj_bat_voltage', $anenjiData['anenjBatVoltage'] ?? 0)
|
||
->add('anenj_pv_voltage', $anenjiData['anenjPvVoltage'] ?? 0)
|
||
->add('anenj_pv_current', $anenjiData['anenjPvCurrent'] ?? 0)
|
||
->add('anenj_temp_dc', $anenjiData['anenjTempDC'] ?? 0)
|
||
->add('anenj_temp_inv', $anenjiData['anenjTempINV'] ?? 0);
|
||
|
||
|
||
/** Получение данных с Yandex IoT */
|
||
$yandexObject = (new YandexIoT(YANDEX_CLIENT_ID, YANDEX_CLIENT_SECRET))->initFromFile(STORAGE_YANDEX_FILE);
|
||
$yandexData = $yandexObject->getProps('c42a0011-71cc-4d6c-bef9-93833b2ae67f');
|
||
$prometheusObject->add('yandex_home_voltage', $yandexData['voltage'] ?? 0);
|
||
|
||
|
||
/** Отправка данных в народный мониторинг */
|
||
$flagNarodFile = STORAGE_RUN_DIR . '/narodmon.run';
|
||
if (!file_exists($flagNarodFile)) {
|
||
file_put_contents($flagNarodFile, time());
|
||
}
|
||
$sendToNarodMon = false;
|
||
if ($voltage !== 0 && (time() - filectime($flagNarodFile) > 60)) {
|
||
file_put_contents($flagNarodFile, time());
|
||
$sendToNarodMon = true;
|
||
|
||
(new Narodmon(NARODMON_DEVICE_ID))->add('V1', $voltage)
|
||
->add('U2', $anenjData['anenjBatVoltage'] ?? 0)
|
||
->add('U3', $anenjData['anenjPvVoltage'] ?? 0)
|
||
->add('T2', $anenjData['anenjTempDC'] ?? 0)
|
||
->add('T3', $anenjData['anenjTempINV'] ?? 0)
|
||
->add('I1', $anenjData['anenjPvCurrent'] ?? 0)
|
||
->send();
|
||
}
|
||
|
||
$prometheusObject->add('narodmon', $sendToNarodMon ? 1 : 0);
|
||
$prometheusObject->showData();
|