|
BackUpToFlash
|
Копирование резервной копии
$filename = ROOT . '/database_backup/db.sql';
$mysqlDumpPath = "/usr/bin/mysqldump";
$mysqlDumpParam = " --user=" . DB_USER . " --password=" . DB_PASSWORD;
$mysqlDumpParam .= " --no-create-db --add-drop-table --databases " . DB_NAME;
if (file_exists($filename)) rename($filename, $filename . '.prev');
safe_exec ($mysqlDumpPath . $mysqlDumpParam . " > " . $filename);
safe_exec ("sudo mkdir /mnt/usb/backup_root");
safe_exec ("sudo mount /dev/sda2 /mnt/usb/backup_root/");
safe_exec ("sudo rsync -aHv --delete --delete-after --exclude-from=/home/pi/not_backup / /mnt/usb/backup_root/ 2>&1 &");
// в ком строке: sudo rsync -aHv --delete --delete-after --exclude-from=/home/pi/not_backup / /mnt/usb/backup_root/
say("Сохранение выполнено",2);
|
|
checkFreeSpace
|
$max_usage=90; //%
$output=array();
exec('df',$output);
//var_dump($output);
$problems=0;
$problems_details='';
foreach($output as $line) {
if (preg_match('/(\d+)% (\/.+)/',$line,$m))
$proc=$m[1];
$path=$m[2];
if ($proc>$max_usage) {
$problems++;
$problems_details.="$path: $proc; ";
}
//echo "$path: $proc%<br/>";
}
sg("ThisComputer.SpaceProblems",$problems);
sg("ThisComputer.SpaceProblems_Details",$problems_details);
setTimeOut('checkFreeSpace','runScript("checkFreeSpace");',5*60);
|
|
rebootSystem
|
// Старый сценарий из базового образа 4_44, 4_47
$filename = ROOT . '/database_backup/db.sql';
$mysqlDumpPath = "/usr/bin/mysqldump";
$mysqlDumpParam = " --user=" . DB_USER . " --password=" . DB_PASSWORD;
$mysqlDumpParam .= " --no-create-db --add-drop-table --databases " . DB_NAME;
if (file_exists($filename)) rename($filename, $filename . '.prev');
exec($mysqlDumpPath . $mysqlDumpParam . " > " . $filename);
say(LANG_GENERAL_STARTING_REBOOT,2);
//setTimeout("shutdownTimer","safe_exec('shutdown -r now');",15); было после заливки образа
setTimeout("shutdownTimer","exec('sudo shutdown -r now');",15);
//тодо ивент и не чаще чем
//say('Подготовка к перезагрузке');
//sleep(1);
//setRebootRequired('updated');
//safe_exec('cp -rf /tmp/mysql/* /var/lib/mysql');
//sleep(1);
//$mysqlDumpPath = '/usr/bin/mysqldump';
//$mysqlDumpParam = ' -h ' . DB_HOST . ' --user=' . DB_USER . ' --password=' . DB_PASSWORD;
//$mysqlDumpParam .= ' --no-create-db --add-drop-table --databases ' . DB_NAME;
// $filename = SERVER_ROOT . '/database_backup/db.sql';
//if (file_exists($filename)) rename($filename, $filename . '.prev');
// $add_params = '--ignore-table=' . DB_NAME . '.phistory';
// exec($mysqlDumpPath . $mysqlDumpParam . " " . $add_params . "> " . $filename);
// $filename_history = SERVER_ROOT . '/database_backup/db_history.sql';
// if (file_exists($filename_history)) rename($filename_history, $filename_history . '.prev');
// $add_params = '--tables phistory';
// exec($mysqlDumpPath . $mysqlDumpParam . " " . $add_params . "> " . $filename_history);
// sleep(1);
// exec('sudo shutdown -r now');
|
|
shutDown
|
$filename = ROOT . '/database_backup/db.sql';
$mysqlDumpPath = "/usr/bin/mysqldump";
$mysqlDumpParam = " --user=" . DB_USER . " --password=" . DB_PASSWORD;
$mysqlDumpParam .= " --no-create-db --add-drop-table --databases " . DB_NAME;
if (file_exists($filename)) rename($filename, $filename . '.prev');
exec($mysqlDumpPath . $mysqlDumpParam . " > " . $filename);
say(LANG_GENERAL_STARTING_SHUTDOWN,2);
setTimeout("shutdownTimer","safe_exec('shutdown -h now');",15);
|
|
WakeOnLine
|
include_once(DIR_MODULES . 'wol/wol.class.php');
$wake = new wol();
$wake->WakeOnLan('192.168.1.255','38:D5:47:78:3B:35');
|
|
qqqq
|
Пробный радио
if (isset($params['VALUE'])) {
$params['vol'] = $params['VALUE'];
}
/* begin injection of {app_radio} */
include_once(DIR_MODULES.'app_radio/app_radio.class.php');
$app_radio = new app_radio();
if(is_array($params)) {
foreach($params as $key=>$value) {
switch((string)$key) {
case 'sta': $app_radio->change_station($params['sta'], $app_radio); break;
case 'cmd': $app_radio->control($params['cmd']); break;
case 'vol': $app_radio->set_volume($params['vol'], $app_radio); break;
default:
if($value == 'play' || $value == 'stop') $app_radio->control($value);
elseif(strpos($value, 'vol') === 0) $app_radio->set_volume((int)substr($value, 3), $app_radio);
elseif(strpos($value, 'sta:') === 0) $app_radio->change_station(substr($value, 4), $app_radio);
}
}
}
/* end injection of {app_radio} */
|
|
sunset-sunrise
|
пробный закат-рассвет
// ======================================================
// КООРДИНАТЫ ПОДСТАВЬ СВОИ
// ======================================================
$latitude = 55.0073;
$longitude = 47.0884;
// ======================================================
// ТЕКУЩАЯ ИНФОРМАЦИЯ О СОЛНЦЕ
// ======================================================
$nowTimestamp = strtotime('now');
$sunInfo = date_sun_info($nowTimestamp, $latitude, $longitude);
$sunrise = date('H:i', $sunInfo['sunrise']);
$sunset = date('H:i', $sunInfo['sunset']);
$sumerki_utro = date('H:i', $sunInfo['civil_twilight_begin']);
$sumerki_vecher = date('H:i', $sunInfo['civil_twilight_end']);
setGlobal('ThisComputer.SunRiseTime', $sunrise);
setGlobal('ThisComputer.SunSetTime', $sunset);
setGlobal('ThisComputer.sumerki_utro', $sumerki_utro);
setGlobal('ThisComputer.sumerki_vecher', $sumerki_vecher);
// ======================================================
// ОПРЕДЕЛЕНИЕ ПЕРИОДА ГОДА
// ======================================================
$nowYear = date('Y');
$startDate = strtotime("{$nowYear}-06-22");
$endDate = strtotime("{$nowYear}-12-22");
$currentDate = strtotime(date('Y-m-d'));
$isWithinRange = ($currentDate >= $startDate && $currentDate <= $endDate);
// Если период с 22 июня по 22 декабря — используем июнь,
// иначе — декабрь
$monthActual = $isWithinRange ? '06' : '12';
// Знак изменения длины дня
sg('ThisComputer.znak_time', $isWithinRange ? '-' : '+');
// ======================================================
// СРАВНЕНИЕ ДЛИНЫ ДНЯ
// ======================================================
// Данные на 22 число выбранного месяца
$sunInfo22 = date_sun_info(
strtotime("{$nowYear}-{$monthActual}-22"),
$latitude,
$longitude
);
// Данные на текущую дату
$sunInfoNow = date_sun_info(
$currentDate,
$latitude,
$longitude
);
// Время восхода/заката
$sunrise22 = $sunInfo22['sunrise'];
$sunset22 = $sunInfo22['sunset'];
$sunriseNow = $sunInfoNow['sunrise'];
$sunsetNow = $sunInfoNow['sunset'];
// Длина дня (в секундах)
$dayLength22 = $sunset22 - $sunrise22;
$dayLengthNow = $sunsetNow - $sunriseNow;
// Разница
$dayLengthDifference = $dayLengthNow - $dayLength22;
// Сохраняем абсолютное значение разницы
sg(
'ThisComputer.len_day_razn',
secToStr(abs($dayLengthDifference))
);
// ======================================================
// ФУНКЦИЯ ПЕРЕВОДА СЕКУНД В СТРОКУ
// ======================================================
function secToStr($secs)
{
$result = '';
$days = floor($secs / 86400);
$secs = $secs % 86400;
if ($days > 0) {
$result .= $days . ' д. ';
}
$hours = floor($secs / 3600);
$secs = $secs % 3600;
if ($hours > 0) {
$result .= $hours . ' ч. ';
}
$minutes = floor($secs / 60);
if ($minutes > 0) {
$result .= $minutes . ' м. ';
}
return $result;
}
|
|
temp_lustra
|
не в работе остался для примера
include_once(DIR_MODULES . 'zigbee2mqtt/zigbee2mqtt.class.php');
$z2m = new zigbee2mqtt();
$z2m->sendcommand('zigbee2mqtt/0x54ef441000075a24/set', '{"state":"off"}');
|
|
Test Компьютер
|
пробный недоделанный тест компьютера
// $ip = '192.168.1.110'; // IP устройства
// $timeout = 2; // таймаут в секундах
// Простой ping
exec("ping -c 1 -W 2 192.168.1.110", $output, $result);
if ($result === 0) {
// $display=1;
echo "Устройство доступно";
} else {
// $display=0;
echo "Устройство недоступно";
}
|
|
Таблетница_22_00
|
if (getGlobal("Openclose02.status")) {
say('Вы не приняли лекарства или забыли наполнить таблетницу', 5);
} else {
say('Таблетница ОК', 2);
}
|
|
ClearHa_hystory
|
SQLExec("DELETE FROM ha_history WHERE TO_DAYS(NOW())-TO_DAYS(ADDED)>5");
//SQLExec("OPTIMIZE TABLE ha_history");
|
|
ClearPhystory
|
SQLExec("DELETE FROM phistory WHERE TO_DAYS(NOW())-TO_DAYS(ADDED)>3");
SQLExec("OPTIMIZE TABLE phistory");
//очистит все старше 30 дней
// SQLExec("DELETE FROM actions_log WHERE TO_DAYS(NOW())-TO_DAYS(ADDED)>10");
// SQLExec("OPTIMIZE TABLE actions_log");
|
|
ClearPhystory_copy
|
SQLExec("DELETE FROM tlg_history WHERE TO_DAYS(NOW())-TO_DAYS(ADDED)>1");
//SQLExec("OPTIMIZE TABLE tlg_history");
//очистит все старше 30 дней очищаем телеграм
// SQLExec(("DELETE FROM actions_log WHERE TO_DAYS(NOW())-TO_DAYS(ADDED)>10");
// SQLExec(("OPTIMIZE TABLE actions_log");
|
|
RadioChanelSwitch
|
setGlobal('RadioSetting.Chanel', '+1');
//runScript('RadioChanelSwitch', array());
$chanel=gg('RadioSetting.Chanel'); // получение направления движения по списку
$ID= gg('RadioSetting.LastStationID')+$chanel; //движение по списку
if ($ID <=0) { $Count =SQLSelectOne('SELECT COUNT(*) FROM `app_radio`'); $ID = $Count['COUNT(*)'];} // при движении вниз если ID равен 0, то его значение приравнивается общему числу станций
sg('RadioSetting.LastStationID',$ID); ///сохранение текущего ID
$sql = SQLSelectOne('SELECT `name` FROM `app_radio` WHERE `ID` = ' .$ID. ' '); // обращение к таблице и определение по ID названия станции
if( $sql['name'] !='') {cm('RadioSetting.Control', array('sta'=>$sql['name']));} // если название определено включается нужный канал
else {$sql = SQLSelectOne('SELECT `name` FROM `app_radio` WHERE `ID` = 1 '); // иначе перекинет на первую станцию
cm('RadioSetting.Control', array('sta'=>$sql['name']));} ///
say($sql['name'],1); /// произносит название станции
|
|
TemperaturaRpi
|
$mem_free=exec("cat /proc/meminfo|grep MemFree |awk '{print $2/1024}'");
setGlobal("raspberry.memoryfree",$mem_free);
|
|
testAlisa
|
// callAPI('/api/module/yadevices','GET',array('station'=>1,'command'=>'setVolume','volume'=>6));
callAPI('/api/module/yadevices','GET',array('station'=>1,'say'=>'раз-два-три'));
callAPI('/api/module/yadevices','GET',array('station'=>1,'command'=>'повтори за мной раз-два-три'));
|
|
update status zigbee
|
$states=SQLSelect("select zigbeedevices.FULL_PATH,zigbeeproperties.TITLE,zigbeeproperties.VALUE from zigbeedevices,zigbeeproperties where (zigbeeproperties.TITLE='state' or zigbeeproperties.TITLE LIKE 'state_%') and (zigbeeproperties.VALUE='ON' or zigbeeproperties.value='OFF') and zigbeeproperties.DEVICE_ID=zigbeedevices.ID;");
foreach ($states as $key => $value) {
callAPI('/api/module/mqtt','GET',array('publish'=>$value['FULL_PATH'].'/get',msg=>'{"'.$value['TITLE'].'": ""}'));
}
|
|
weather
|
include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php');
$openweather = new app_openweather();
$openweather->get_weather(gg(625144));
|
|
Test Tuya zamok
|
$angle = getGlobal("Openable01.level");
//say("$angle",);
if ($angle >= 10 && $angle <= 20) {
sg("Openable01.status", 1); // Закрыто
say("$angle закрыто",);
}
else {
sg("Openable01.status", 0); // Открыто
say("$angle открыто",);
}
//$angle = $this->getGlobal("Openable01.level");
//getProperty('angle');
// Допустим, при закрытом замке угол от 10 до 20 градусов
//if ($angle >= 10 && $angle <= 20) {
// sg("Openable01.status", 1); // Закрыто
// } else {
// sg("Openable01.status", 0); // Открыто
//}
|
|
Проверка замка
|
if (getGlobal("Openclose01.status")) {
} else {
say('ок, тест открыт', 2);
}
|
|
Тест3 Замок
|
echo gg("Openclose01.status");
$open=gg("Openclose01.status");
echo $open;
// clearTimeout('timer1');
if ($open==1)
say('Замок закрыт', 2);
else
say('Замок открыт', 2);
//setTimeout("timer1", "say('Замок открыт', 2);", 60);
// say('Замок открыт', 2);
|