AirBedroomStatus
|
Мониторинг состояния кондиционера в спальне
$controller=getGlobal("Bedroom_air.Control_inname");
//echo $controller."<br>";
$command=getGlobal("Bedroom_air.In_name");
//echo $command."<br>";
$ipadress=getGlobal($controller.".Ip_adress");
//echo $ipadress."<br>";
$password=getGlobal($controller.".Password");
//echo $password."<br>";
$status=laurent_command($ipadress, $command, $password);
//echo $status."<br>";
$status = substr($status,7,1);
if ($status==1) {
$status=0;
}else{
$status=1;
}
//echo $status;
setGlobal("Bedroom_air.Status",$status);
|
Alarm
|
Система охранной сигнализации и оповещения
say("Внимание! Тревога!");
|
ClimateControlBedroom
|
Процедура управления климат-контролем в спальне
$status=getGlobal("Bedroom.AirAuto");
//echo "Статус=".$status."<br>";
if ($status==1) {
$tempauto=getGlobal("Bedroom.AirAutoTemp");
$temproom=getGlobal("Bedroom_temp1.temperc");
$airstatus=getGlobal("Bedroom_air.Status");
//echo "Температура климат контроля=".$tempauto."<br>";
//echo "Температура в комнате=".$temproom."<br>";
//echo "Статус кондиционера=".$airstatus."<br>";
//Если температура в комнате больше чем заданная
if ($temproom>$tempauto) {
//echo "Температура в комнате большая, необходимо охладить<br>";
//Необходимо охладить проверяем включен ли кондиционер
if ($airstatus==0){
if ($temproom-1>=$tempauto) {
//say ("Кондиционер включен, температура ".$temproom." градуса");
callMethod("Bedroom_air.switch");
}
}
}else{
if ($airstatus==1) {
//say ("Кондиционер выключен, температура ".$temproom." градуса");
callMethod("Bedroom_air.switch");
}
}
}
|
Keysensors_script
|
Процедура обработки нажатия выключателя
$result=getGlobal("Storoge_conf.result");
//разбираем значение
$pieces = explode(",", $result);
$sys_time = $pieces[2];
$num_in = $pieces[3];
$status_in = $pieces[4];
//печать временная
echo '<br />Время нажатия '.$sys_time.'<br />';
echo 'Вход '.$num_in.'<br />';
echo 'Значение входа '.$status_in.'<br />';
//Проверка за что отвечает вход Storojin.Name_Switch
$keysensor=getGlobal("Storoge_in".$num_in.".name_switch");
$intype = substr($keysensor, -4, 3);
echo 'За что отвечает вход '.$keysensor.'<br />';
echo 'Тип входа '.$intype.'<br />';
//Если Storojin отвечает за свет
//Проверка на нажатие sw
if ($status_in==1) {
//Сохраняем время нажатия
setGlobal("Storoge_in".$num_in.".last_time",$sys_time);
}
//Проверка на отжатие sw
if ($status_in==0) {
//Получаем время нажатия
$sys_time_old=getGlobal("Storoge_in".$num_in.".last_time");
//Вычисляем продолжительность нажатия
$sys_time=$sys_time-$sys_time_old;
echo "Продолжительность нажатия ".$sys_time.'<br />';
//Берем лимит двойного нажатия
$limit_time=getGlobal("Configuration.time_second_light");
echo "Лимит нажатия ".$limit_time.'<br />';
//Определяем действие по лимиту
if ($sys_time<$limit_time) {
//Если основной свет
$light=getGlobal($keysensor.".name_light1");
echo "Основной свет".$light.'<br />';
//Если дополнительный свет
} else {
// echo "second lite".'<br />';
$light=getGlobal($keysensor.".name_light2");
echo "Дополнительный свет".$light.'<br />';
}
//Включаем свет
$status=getGlobal($light.".Status");
echo "Статус ".$light.' '.$status.'<br />';
//$obj=getObject($light);
if ($status==0) {
//Включить
//$obj->callMethod("turnOn");
echo "Включаем ".$light.'<br />';
setGlobal($light.".Status",1);
$controller=getGlobal($light.".Control_name");
$command=getGlobal($light.".Out_name");
$ipadress=getGlobal($controller.".Ip_adress");
$password=getGlobal($controller.".Password");
laurent_command($ipadress, $command.'1', $password);
//Установка занчений Myrooms
echo "Установка времени включения для комнаты".'<br />';
$obj=getObject($light);
$locid=$obj->location_id;
echo "ID локации светильника ".$locid.'<br />';
$objects=getObjectsByClass("Myrooms");
foreach($objects as $obj) {
$obj1=getObject($obj['TITLE']);
$locid1=$obj1->location_id;
//$locid1=getGlobal($obj['TITLE'].".Locations_id");
if ($locid==$locid1) {
echo "ID локации комнаты ".$locid1.'<br />';
$LightOff=getGlobal($obj['TITLE'].".MotionLightOff");
echo "Режим выключения света для комнаты ".$LightOff.'<br />';
$LightOffTime=getGlobal($obj['TITLE'].".MotionLightOffTime");
echo "Время выключения света для комнаты ".$LightOffTime.'<br />';
if ($LightOff==1)
setGlobal($obj['TITLE'].".MotionLightOffTimeReal",$LightOffTime);
}
}
} else {
echo "Выключаем ".$light.'<br />';
//Выключить
setGlobal($light.".Status",0);
$controller=getGlobal($light.".Control_name");
$command=getGlobal($light.".Out_name");
$ipadress=getGlobal($controller.".Ip_adress");
$password=getGlobal($controller.".Password");
laurent_command($ipadress, $command.'0', $password);
}
//Конец процедуры отжатия
}
//Конец если Storojin отвечает за свет
|
MotionsensorOneMin
|
Ежеминутная проверка включенного света в помещении
$objects=getObjectsByClass("Myrooms");
foreach($objects as $obj) {
$movetimer=getGlobal($obj['TITLE'].".MotionLightOffTimeReal");
$LightOff=getGlobal($obj['TITLE'].".MotionLightOff");
$obj1=getObject($obj['TITLE']);
$local=$obj1->location_id;
echo '<br />Local '.$local;
if ($LightOff<>0) {
if ($movetimer<>0) {
//Если таймер не на 0 уменьшаем его на минуту
$movetimer=$movetimer-1;
setGlobal($obj['TITLE'].".MotionLightOffTimeReal",$movetimer);
//Если достиг 0 выключаем свет
echo '<br />Movetimer '.$movetimer;
if ($movetimer==0){
//$local=getGlobal($obj['TITLE']);
echo '<br />Run script, ID= '.$local;
runScript("TurnOffLightRoom",$local);
//say("Свет выключен!");//процедура выключения света в комнате
}
}
//конец процедуры
}
}
|
Motionsensor_script
|
Скрипт обработки сигналов датчиков движения
$result=getGlobal("Storoge_conf.result");
//разбираем значение
$pieces = explode(",", $result);
$sys_time = $pieces[2];
$num_in = $pieces[3];
$status_in = $pieces[4];
//печать временная
echo '<br />'.$sys_time.'<br />';
echo $num_in.'<br />';
echo $status_in.'<br />';
//Проверка за что отвечает вход Storojin.Name_Switch
$keysensor=getGlobal("Storoge_in".$num_in.".name_switch");
//правка
$obj=getObject($keysensor);
$keysensor=$obj->location_id;
//конец правки
echo $keysensor.'<br />';
//Если сигнализация включена
$alarm=getGlobal("Configuration.alarm");
if ($alarm==1){
runScript("Alarm");
}else{
//echo 'More'.'<br />';
$objects=getObjectsByClass("Myrooms");
foreach($objects as $obj1) {
$obj1=getObject($obj1['TITLE']);
$localr=$obj1->location_id;
echo $localr.'<br />';
if ($localr==$keysensor) {
$room=$obj1->object_title;
echo $room.'<br />';
}
}
$motion_turnOn=getGlobal($room.".MotionLightOn");
$motion_turnOff=getGlobal($room.".MotionLightOff");
$motion_lighton=getGlobal($room.".MotionLightOnLight");
$motion_timer_on=getGlobal($room.".MotionTimerOn");
$motion_timer_off=getGlobal($room.".MotionTimerOff");
$motion_timer=timeBetween($motion_timer_on, $motion_timer_off);
if ($motion_timer_on==$motion_timer_off) $motion_timer=1 ;
//echo $motion_turnOn.'<br />';
//echo $motion_turnOff.'<br />';
echo $motion_lighton.'<br />';
//Если датчик работает на включение
if ($motion_turnOn==1){
//Проверка установки таймера
if ($motion_timer<>"") {
setGlobal($motion_lighton.".Status",1);
$controller=getGlobal($motion_lighton.".Control_name");
$command=getGlobal($motion_lighton.".Out_name");
$ipadress=getGlobal($controller.".Ip_adress");
$password=getGlobal($controller.".Password");
laurent_command($ipadress, $command.'1', $password);
//Установка занчений Myrooms
$obj=getObject($motion_lighton);
$locid=$obj->location_id;
$objects=getObjectsByClass("Myrooms");
foreach($objects as $obj) {
$obj1=getObject($obj['TITLE']);
$locid1=$obj1->location_id;
//$locid1=getGlobal($obj['TITLE'].".Locations_id");
if ($locid==$locid1) {
$LightOff=getGlobal($obj['TITLE'].".MotionLightOff");
$LightOffTime=getGlobal($obj['TITLE'].".MotionLightOffTime");
if ($LightOff==1)
setGlobal($obj['TITLE'].".MotionLightOffTimeReal",$LightOffTime);
}
}
}
}
//Если датчик работает на выключение
//Установка занчений Myrooms
if ($motion_turnOff==1){
$obj=getObject($motion_lighton);
$locid=$obj->location_id;
$objects=getObjectsByClass("Myrooms");
foreach($objects as $obj) {
$obj1=getObject($obj['TITLE']);
$locid1=$obj1->location_id;
//$locid1=getGlobal($obj['TITLE'].".Locations_id");
if ($locid==$locid1) {
$LightOff=getGlobal($obj['TITLE'].".MotionLightOff");
$LightOffTime=getGlobal($obj['TITLE'].".MotionLightOffTime");
if ($LightOff==1)
setGlobal($obj['TITLE'].".MotionLightOffTimeReal",$LightOffTime);
}
}
}
}
|
ServerMonitor
|
Проверка состояния сервера
$handle = @fopen("/var/www/piinfo.txt", "r");
$buffer = fgets($handle, 4096);
setGlobal("MDM_server.PC_CPU_Temp",$buffer);
$buffer = fgets($handle, 4096);
$buffer = substr($buffer, 0, strlen($str)-2);
setGlobal("MDM_server.PI_CPU_Load",$buffer);
$buffer = fgets($handle, 4096);
$buffer = substr($buffer, 0, strlen($str)-3);
$buffer = 512-$buffer;
setGlobal("MDM_server.PC_Freemem",$buffer);
fclose($handle);
|
Storoge
|
Процедура открытия сокета для датчиков
set_time_limit(500);
say ("Система запущена");
$controller=getGlobal("Configuration.storage_name");
$ipadress=getGlobal($controller.".Ip_adress");
$password=getGlobal($controller.".Password");
$pidproc=getmypid();
setGlobal("Storoge_conf.pid",$pidproc);
laurent_command($ipadress, '$KE,EVT,OFF'."\r\n", $password);
sleep (1);
laurent_command($ipadress, '$KE,EVT,ON'."\r\n", $password);
sleep (1);
$fp = fsockopen($ipadress, 2424, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
setGlobal("Storoge_conf.error",$errno);
} else {
//fwrite($fp, '$KE,EVT,ON'."\r\n") ;
//sleep (1);
while (!feof($fp)) {
$result1=fgets($fp, 128);
//echo $result;
setGlobal("Storoge_conf.result",$result1);
}
fclose($fp);
}
|
Storoge55
|
Альтернативная процедура сторож
say ("Система 2 запущена");
$host="192.168.1.103";
$password="Laurent";
//echo $host."<br>";
//echo $password."<br>";
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n";
return 0;
}
//echo "Socet creat<br>";
$result = socket_connect($socket, $host, 2424);
if ($result === false) {
echo "socket_connect( $socket , $host , 2424) failed.\nReason: ($result) " . socket_strerror(socket_last_error($socket)) . "\n";
return 0;
}
//echo "Socet conect<br>";
$in='$KE'."\r\n";
socket_write($socket, $in, strlen($in));
$res='';
while ($out = socket_read($socket, 2048, PHP_NORMAL_READ)) {
$res.=$out;
if (is_integer(strpos($out, "\n"))) {
//echo "Socet KE ".$res."<br>";
break;
}
}
$in='$KE,PSW,SET,'.$password."\r\n";
socket_write($socket, $in, strlen($in));
$res='';
while ($out = socket_read($socket, 2048, PHP_NORMAL_READ)) {
$res.=$out;
if (is_integer(strpos($out, "\n"))) {
//echo "Socet password ".$res."<br>";
break;
}
}
while (true) {
$res='';
while ($out = socket_read($socket, 2048, PHP_NORMAL_READ)) {
$res.=$out;
if (is_integer(strpos($out, "\n"))) {
//echo "Socet result ".$res."<br>";
setGlobal("Storoge_conf.result",$res);
break;
}
}
}
socket_close($socket);
echo "Socet close";
|
StorogeOneminuteTest
|
Ежеминутная проверка сторожа, перезапуск
$jerom_stat=getGlobal("Jerome103.Status");
if ($jerom_stat==1) {
$storoge_id=getGlobal("Storoge_conf.pid");
//echo '<br />'.$storoge_id.'<br />';
exec("ps ".$storoge_id,$output,$code);
$ps=$output[1];
//echo '<br />'.$ps.'<br />';
$fp = fsockopen('192.168.1.103', 2424, $errno, $errstr, 5);
if (!$fp) {
// echo "$errstr ($errno)<br />\n";
// echo "Скрипт работает";
setGlobal("SokStoroge.Status",1);
} else {
fclose($fp);
setGlobal("SokStoroge.Status",2);
say("Сокет не отвечает, перезапуск");
//$storoge_id=getGlobal("Storoge_conf.pid");
//echo $storoge_id;
//exec ("kill -9 $storoge_id");
//sleep(3);
//shell_exec ("curl http://192.168.1.200:80/objects/?script=Storoge &");
//exec ("sudo reboot");
runScript("LEDON");
}
}else{
setGlobal("SokStoroge.Status",2);
//say("Контроллер неотвечате",2);
//echo "Контроллер не работает, скрипт не работает";
}
|
TempOneminMonitor
|
Ежеминутная проверка датчиков температуры 1wire
$objects=getObjectsByClass("Tempsens");
foreach($objects as $obj) {
$file=getGlobal($obj['TITLE'].".ident");
//echo "=".$file."<br>";
//File to read
$file = '/sys/bus/w1/devices/w1_bus_master1/'.$file.'/w1_slave';
//echo $file."<br>";
//Read the file line by line
$lines = file($file);
//Get the temp from second line
$temp = explode('=', $lines[1]);
//Setup some nice formatting (i.e. 21,3)
$temp = number_format($temp[1] / 1000, 1, ',', '');
//And echo that temp
//echo 'TITLE'."=".$temp . " °C"."<br>";
setGlobal($obj['TITLE'].".temperc",$temp);
}
|
TurnOffLightAll
|
Выключение света во всех помещениях
say("Свет выключен во всех помещениях");
$objects=getObjectsByClass("Myrooms");
foreach($objects as $obj) {
$obj=getObject($obj['TITLE']);
$local=$obj->location_id;
runScript("TurnOffLightRoom",$local);
}
|
TurnOffLightRoom
|
Выключение света во всей комнате
//$localroom=$params['roomid'];
$localroom=$params;
echo '<br />'.$localroom;
$objects=getObjectsByClass("Light");
foreach($objects as $obj) {
$obj1=getObject($obj['TITLE']);
$locallight=$obj1->location_id;
echo '<br />'.$locallight;
//Ищем светильники в этой комнате
if ($locallight==$localroom) {
$light=$obj1->object_title;
echo '<br />'.$light;
setGlobal($light.".Status",0);
$controller=getGlobal($light.".Control_name");
$command=getGlobal($light.".Out_name");
$ipadress=getGlobal($controller.".Ip_adress");
$password=getGlobal($controller.".Password");
laurent_command($ipadress, $command.'0', $password);
}
}
|
CallMethod
|
$temproom=getGlobal("Bedroom_temp1.temperc");
$temproom=$temproom-1;
echo $temproom;
|
Keysensors_script_Old
|
Процедура обработки нажатия выключателя
$result=getGlobal("Storoge_conf.result");
//разбираем значение
$pieces = explode(",", $result);
$sys_time = $pieces[2];
$num_in = $pieces[3];
$status_in = $pieces[4];
//печать временная
//echo $sys_time.'<br />';
//echo $num_in.'<br />';
//echo $status_in.'<br />';
//Проверка за что отвечает вход Storojin.Name_Switch
$keysensor=getGlobal("Storoge_in".$num_in.".name_switch");
$intype = substr($keysensor, -4, 3);
//echo $keysensor.'<br />';
//echo $intype.'<br />';
//Если Storojin отвечает за свет
if ($intype="swl") {
//Проверка на нажатие sw
if ($status_in==1) {
//Сохраняем время нажатия
setGlobal("Storoge_in".$num_in.".last_time",$sys_time);
}
//Проверка на отжатие sw
if ($status_in==0) {
//Получаем время нажатия
$sys_time_old=getGlobal("Storoge_in".$num_in.".last_time");
//Вычисляем продолжительность нажатия
$sys_time=$sys_time-$sys_time_old;
//echo "Time ".$sys_time.'<br />';
//Берем лимит двойного нажатия
$limit_time=getGlobal("Configuration.time_second_light");
//Определяем действие по лимиту
if ($sys_time<$limit_time) {
//Если основной свет
// echo "fist light".'<br />';
$light=getGlobal($keysensor.".name_light1");
//echo $light.'<br />';
//Если дополнительный свет
} else {
// echo "second lite".'<br />';
$light=getGlobal($keysensor.".name_light2");
//echo $light.'<br />';
}
//Включаем свет1
//$obj=getObject($light);
//$obj->callMethod("switch");
//Включаем свет2
$status=getGlobal($light.".Status");
//$obj=getObject($light);
if ($status==0) {
//Включить
//$obj->callMethod("turnOn");
setGlobal($light.".Status",1);
$controller=getGlobal($light.".Control_name");
$command=getGlobal($light.".Out_name");
$ipadress=getGlobal($controller.".Ip_adress");
$password=getGlobal($controller.".Password");
laurent_command($ipadress, $command.'1', $password);
//Установка занчений Myrooms
$obj=getObject($light);
$locid=$obj->location_id;
$objects=getObjectsByClass("Myrooms");
foreach($objects as $obj) {
$obj1=getObject($obj['TITLE']);
$locid1=$obj1->location_id;
//$locid1=getGlobal($obj['TITLE'].".Locations_id");
if ($locid==$locid1) {
$LightOff=getGlobal($obj['TITLE'].".MotionLightOff");
$LightOffTime=getGlobal($obj['TITLE'].".MotionLightOffTime");
if ($LightOff==1)
setGlobal($obj['TITLE'].".MotionLightOffTimeReal",$LightOffTime);
}
}
} else {
//Выключить
//$obj->callMethod("turnOff");
setGlobal($light.".Status",0);
$controller=getGlobal($light.".Control_name");
$command=getGlobal($light.".Out_name");
$ipadress=getGlobal($controller.".Ip_adress");
$password=getGlobal($controller.".Password");
laurent_command($ipadress, $command.'0', $password);
}
//Конец процедуры отжатия
}
//Конец если Storojin отвечает за свет
}
|
LEDOFF
|
laurent_command('192.168.1.104', '$KE,WR,22,0', 'Laurent');
|
LEDON
|
laurent_command('192.168.1.104', '$KE,WR,22,1', 'Laurent');
|
LocalID
|
$objects=getObjectsByClass("Light");
foreach($objects as $obj) {
$obj=getObject($obj['TITLE']);
$local=$obj->location_id;
echo '<br />'.$local;
}
|
Menu_service
|
$objects=getObjectsByClass("Service");
foreach($objects as $obj) {
$fullname=getGlobal($obj['TITLE'].".Full_Name");
$status=getGlobal($obj['TITLE'].".Status");
$ipadress=getGlobal($obj['TITLE'].".Ip_adress");
echo $fullname.'<br />';
if ($status==1) echo 'Состояние - работает';
if ($status==2) echo 'Состояние - не работает';
if ($status==3) echo 'Состояние - не определенно';
echo "<p><a href=http://".$ipadress." target="."_blank".">Прейти на страницу сервиса</a></p>".'<br />';
}
|
PI_CPU_Temp
|
$handle = @fopen("/var/www/piinfo.txt", "r");
$buffer = fgets($handle, 4096);
setGlobal("MDM_server.PC_CPU_Temp",$buffer);
$buffer = fgets($handle, 4096);
$buffer = substr($buffer, 0, strlen($str)-2);
setGlobal("MDM_server.PI_CPU_Load",$buffer);
$buffer = fgets($handle, 4096);
$buffer = substr($buffer, 0, strlen($str)-3);
setGlobal("MDM_server.PC_Freemem",$buffer);
fclose($handle);
|
Storoge2
|
// Server IP address
$address = '192.168.1.103';
// Port to listen
$port = 2424;
$mysock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_bind($mysock,$address,$port) or die('Could not bind to address');
socket_listen($mysock, 5);
$client = socket_accept($mysock);
// read 1024 bytes from client
$input = socket_read($client, 1024);
// write received data to the file
setGlobal("Storoge_conf.error",$input);
socket_close($client);
socket_close($mysock);
|
Storoge_reboot
|
$storoge_id=getGlobal("Storoge_conf.pid");
echo $storoge_id;
exec ("kill -9 $storoge_id");
sleep(3);
//runScript("Storoge");
shell_exec ("curl http://192.168.1.200:80/objects/?script=Storoge &");
|
test
|
setTimeOut('testTimer','say("Hello world!");',30);
|
test_storoge
|
$jerom_stat=getGlobal("Jerome103.Status");
if ($jerom_stat==1) {
$storoge_id=getGlobal("Storoge_conf.pid");
echo '<br />'.$storoge_id.'<br />';
exec("ps ".$storoge_id,$output,$code);
$ps=$output[1];
echo '<br />'.$ps.'<br />';
$fp = fsockopen('192.168.1.103', 2424, $errno, $errstr, 5);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
echo "Скрипт работает";
setGlobal("SokStoroge.Status",1);
} else {
fclose($fp);
setGlobal("SokStoroge.Status",2);
}
}else{
setGlobal("SokStoroge.Status",2);
echo "Контроллер не работает, скрипт не работает";
}
|
Test_timer
|
$motion_timer_on=getGlobal("Bedroom.MotionTimerOn");
$motion_timer_off=getGlobal("Bedroom.MotionTimerOff");
$motion_timer=timeBetween($motion_timer_on, $motion_timer_off);
echo '<br />'.$motion_timer_on;
echo '<br />'.$motion_timer_off;
echo '<br />'.$motion_timer;
if ($motion_timer<>"") {
echo '<br />'."Входит";
}else{
echo '<br />'."Не входит";
}
|
Test_url
|
$status=getGlobal("Bedroom_li1.Status");
echo "<br>".$status;
if ($status=="1") {
callMethod("Bedroom_li1.turnOff");
echo "<br>Включаю";
} else {
callMethod("Bedroom_li1.turnOn");
echo "<br>Выключаю";
}
|
timeNow
|
|
Речь
|
|