BodyHome
|
// Проверка датчика движения
//if ((getGlobal("NobodyHomeMode.active")==1) // никого нет дома
// && (getGlobal("SecurityArmedMode.active")==0) // охраны нет
// && (getGlobal("sensorMovementSUM.status")==1)){ // движение ЕСТЬ
//В режиме никого нет дома обраружено движение. Значит пришли люди.
// DebMes("NobodyHomeMode.Check : Движение");
// setGlobal("NobodyHomeMode.active",0);
// return;
//}
// Проверка есть ли люди дома
$inhome = 0;
$objects=getObjectsByClass("Users");
foreach($objects as $obj) {
if (getGlobal($obj['TITLE'].".Online") == 1){
$inhome = 1;
DebMes("User in home. ".$obj['TITLE']);
setGlobal("NobodyHomeMode.active",0);
setGlobal("EconomMode.active",0);
// say("Похоже что дома кто-то есть");
break;
}
}
// Обнаружение что дома никого нет
if (
(getGlobal("NobodyHomeMode.active")!=1) &&
($inhome == 0) &&
( getGlobal("sensorMovementSUM.status")!=1 ) &&
(( time() - getGlobal("sensorMovementSUM.updated")) > (30*60) ) &&
(!getGlobal('NightMode.active'))
){
// Пропустить 20 min после будильника
if ( time() - getGlobal("ThisComputer.lastalarm") < (20*60)){
return;
}
// Если час небыло людей и не ночь то преходим в никого нет
// say("Похоже что никого нет дома");
setGlobal("NobodyHomeMode.active",1);
DebMes(
"NobodyHomeMode.Check: Никого нет \r\n".
" SS:".getGlobal("sensorMovementSUM.status")."\r\n".
" Users".$inhome
);
}
|
checkBaxi
|
Термостат котла
callMethod ('Baxi.TempSet');
$wanted=gg('Baxi.TermoSet');
$now=gg('Hall.Temperature');
if ($now>$wanted) {
//надо охладить
if (gg('r25_ssr1.Status')) {
say("Жарко, выключаю котёл",0);
callMethod('r25_ssr1.TurnOff'); // $params не обязательный массив параметров
callMethod('Baxi.Led');
callMethod('Baxi.valveOff');
sg('Baxi.textstatus','off');
} else {
//say("Температура выше желаемой, но клапан уже закрыт -- ничего делать не нужно");
}
} elseif ($now<$wanted) {
//надо подогреть
if (!gg('r25_ssr1.Status')) {
say("Холодно, включаю котёл",0);
callMethod('r25_ssr1.TurnOn');
callMethod('Baxi.Led');
callMethod('Baxi.valveOn');
sg('Baxi.textstatus','on');
} else {
//say("Температура ниже желаемой, но клапан уже открыт -- ничего делать не нужно");
}
}
|
Temp+
|
$Temp=gg('Baxi.TermoSet');
$tempset=($temp + 0.5);
sg('Baxi.Termoset', $tempset);
|
Выбор цвета
|
шаблон
/*
<script type="text/javascript" src="../js/farbtastic.js"></script>
<link rel="stylesheet" href="../css/farbtastic.css" type="text/css" />
<div id="colorpicker" style="margin: 0 auto;"></div>
<script language="javascript">
function cutHex(h) {return (h.charAt(0)=="#") ? h.substring(1,7):h}
function HexToR(h) {return parseInt((cutHex(h)).substring(0,2),16)}
function HexToG(h) {return parseInt((cutHex(h)).substring(2,4),16)}
function HexToB(h) {return parseInt((cutHex(h)).substring(4,6),16)}
function decToHex(number) { if (number < 0) { number = 0xFFFFFFFF + number + 1; }
return number.toString(16).toUpperCase(); }
$('#colorpicker').farbtastic( function (color) {
r = ((HexToR(color)/255*100));
g = ((HexToG(color)/255*100));
b = ((HexToB(color)/255*100));
$.get("/objects/?object=DimmerRGB&op=set&p=Red&v="+r);
$.get("/objects/?object=DimmerRGB&op=set&p=Green&v="+g);
$.get("/objects/?object=DimmerRGB&op=set&p=Blue&v="+b);
$.get("/objects/?object=DimmerRGB&op=set&p=color&v="+cutHex(color));
$.get("/objects/?object=DimmerRGB&op=m&m=turnOn");
});
$.get("/objects/?object=DimmerRGB&op=get&p=color", function (data) { $.farbtastic("#colorpicker").setColor("#"+data); });
</script>
*/
|
Подсветка двора
|
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
if (gg('darknessmode.active') == 1) {
say("Кто-то приехал, а на улице темно, включаю свет",0);
callMethod('r02_Entry.TurnOn');
$telegram_module->sendMessageToAdmin("Включаю свет");
}
else {
if (gg('darknessmode.active') == 0) {
// callMethod('rele_ladder.TurnOn');
say("Кто-то приехал, а на улице светло",0);
}
}
|
Расчет сумерек
|
$lat=59.7587; // широта 55.553964
$long=60.005; // долгота 39.744074
$sun_info = date_sun_info(time(), $lat, $long);
foreach ($sun_info as $key => $val) {
if ($key == 'sunrise') {
$sunrise = $val;
echo 'Восход: '.date("H:i", $sunrise).'<br>';
setGlobal('Sun.SunRiseTime',date("H:i", $sunrise));
setGlobal('ThisComputer.SunRiseTime',date("H:i", $sunrise));
}
if ($key == 'sunset') {
$sunset = $val;
$day_length = $sunset - $sunrise;
echo 'Заход: '.date("H:i", $sunset).'<br>';
echo 'Долгота дня: '.gmdate("H:i", $day_length).'<br>';
setGlobal('Sun.SunSetTime',date("H:i", $sunset));
setGlobal('ThisComputer.SunSetTime',date("H:i", $sunset));
setGlobal('Sun.LongTag',gmdate("H:i", $day_length));
}
if ($key == 'transit') {
echo 'В зените: '.date("H:i", $val).'<br>';
setGlobal('Sun.Transit',date("H:i", $val));
}
if ($key == 'civil_twilight_begin') {
echo 'Начало утренних сумерек: '.date("H:i", $val).'<br>';
setGlobal('Sun.civil_begin',date("H:i:s", $val));
}
if ($key == 'civil_twilight_end') {
echo 'Конец вечерних сумерек: '.date("H:i", $val).'<br>';
setGlobal('Sun.civil_end',date("H:i", $val));
}
}
|
easyRF
|
$device_id=$params['did'];
$destination_id=$params['dest'];
$packet_id=$params['pid'];
$command_id=$params['c'];
$data=$params['d'];
if ($device_id==0) {
if ($command_id==10) {
//temp
setGlobal('ws.tempInside',round($data/100));
} elseif ($command_id==12) {
//motion
callMethod('intSensor.statusChanged',array('status'=>1));
clearTimeOut($id.'_move');
setTimeOut($id.'_move',"callMethod('intSensor.statusChanged',array('status'=>0));",20);
}
}
|
HomeTemp_off
|
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$message.="Температура в доме не обновляется ";
$message.="c ".getGlobal('HomeTemp.updatedTime ').'.';
$telegram_module->sendMessageToAdmin($message);
|
RCSwitch
|
$id=$params['rcswitch'];
if ($id=='12345') {
//sensor 1
}
|
timer_10s
|
clearTimeout("timer_10s_timeout");
runscript("Данные_OHM");
setTimeOut("timer_10s_timeout", "runScript('timer_10s');", 10);
|
timer_9s
|
clearTimeout("timer_9s_timeout");
runscript("BodyHome");
setTimeOut("timer_9s_timeout", "runScript('timer_9_s');", 9);
|
Данные_OHM
|
//-----------------------Данные с ohm сценарий
$ch = curl_init('http://127.0.0.1:8085/data.json');//здесь заменить IP на свой http://*:8085/data.json
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$ohm = curl_exec($ch);
$json = json_decode($ohm);
//----------------------- Вытягиваем данные
$CpuLoad = $json -> {'Children'}[0] -> {'Children'}[1] -> {'Children'}[2] -> {'Children'}[0] -> {'Value'};
$CpuTemp = $json -> {'Children'}[0] -> {'Children'}[0] -> {'Children'}[0] -> {'Children'}[1] -> {'Children'}[0] -> {'Value'};
$Memory = $json -> {'Children'}[0] -> {'Children'}[2] -> {'Children'}[0] -> {'Children'}[0] -> {'Value'};
//----------------------- Просматриваем данные
echo "<br \>";
echo "Загрузка процессора";echo "  ";print_r("$CpuLoad");
echo "<br \>";
echo "температура процессора";echo "  ";print_r("$CpuTemp");
echo "<br \>";
echo "Занято оперативки";echo "  ";print_r("$Memory");
//----------------------- Присваеваем данные
setGlobal('ThisComputer.CpuLoad',intval($CpuLoad));
setGlobal('ThisComputer.CpuTemp',intval($CpuTemp));
setGlobal('ThisComputer.Memory',intval($Memory));
//-----------------------Выполнение скрипта раз в 2 сек. (timer_2s)
clearTimeout("timer_10s_timeout");
|
Img_meteo
|
$dir = gg("ThisComputer.Sinoptik_Img");
$dir1="<img src=$dir>";
sg("ThisComputer.Sinoptik_Imgmeteo",$dir1);
say("Температура обновилась");
|
readWeatherIvening
|
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$weather.="Сегодня ожидается ".str_replace('°',' ',getGlobal('Sinoptik_temp'));
$weather.=". Сейчас на улице ".getGlobal('ws.tempOutside').'.';
$weather.=" ".str_replace('°',' ',getGlobal('Prognoz_sinoptik'));
$weather.=". Завтра ночью ".str_replace('°',' ',getGlobal('ow_day1.temp_night'));
$weather.=". Днём ".str_replace('°',' ',getGlobal('ow_day1.temp_day'));
$weather=str_replace('°','',$weather);
$telegram_module->sendMessageToAll($weather);
//$telegram_module->sendMessageToAdmin($weather);
//say($weather,2);
|
readWeatherMorning
|
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$weather.="Сегодня ожидается ".str_replace('°',' ',getGlobal('Sinoptik_temp'));
$weather.=". Сейчас на улице ".getGlobal('ws.tempOutside').'.';
$weather.=" ".str_replace('°',' ',getGlobal('Prognoz_sinoptik'));
$weather.=". Завтра ночью ".str_replace('°',' ',getGlobal('ow_day1.temp_night'));
$weather.=". Днём ".str_replace('°',' ',getGlobal('ow_day1.temp_day'));
$weather=str_replace('°','',$weather);
$telegram_module->sendMessageToAll($weather);
//$telegram_module->sendMessageToAdmin($weather);
//say($weather,2);
|
readWeatherToday
|
$weather.=" ".str_replace('°',' ',getGlobal('Prognoz_sinoptik'));
$weather.=". Сегодня ожидается ".str_replace('°',' ',getGlobal('ow_fact.temperature'));
$weather.=". Завтра ".str_replace('°',' ',getGlobal('ow_day1.temp_day'));
$weather.=". Сейчас на улице ".getGlobal('ws.tempOutside').'.';
$weather=str_replace('°','',$weather);
say($weather,2);
|
Обновление OpenWeather
|
//START openweather module
include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php');
$app_openweather = new app_openweather();
$app_openweather->get_weather(gg('ow_city.id'));
// END openweather module
|
Прогноз OpenWeather
|
//RunScript ("Прогноз OpenWeather");
$status.="";
$status.="Сегодня ".gg("ow_fact.weather_type").".";
$status.="";
$w=round(gg("ws.tempOutside"));
$tempw=$w;
if($tempw >= 11 and $tempw <= 14){
$tempcels=" градусов ";
}
else{
while ($tempw > 9){
$tempw=$tempw-10;
}
if($tempw == 0 or $tempw >= 5 and $tempw <= 9){
$tempcels= градусов ; }
if($tempw == 1){
$tempcels= градус ; }
if($tempw >= 2 and $tempw <= 4){
$tempcels= градуса ; }
}
$status.=' Температура '.$w." ".$tempcels." цельсия. ";
// Сравнение со вчерашним днем
$tNew = round((float)getGlobal('ow_fact.temperature'));
$tOld = round((float)getGlobal('ow_fact.tempYesterday'));
$tDelta = abs($tNew - $tOld);
if ($tDelta==1){
$tGradus = 'градус';
}elseif($tDelta==2 || $tDelta==3 || $tDelta==4){
$tGradus = 'градуса';
}else{
$tGradus = 'градусов';
}
if ($tNew>$tOld){
$status.='Сегодня теплее, чем вчера на ' .$tDelta. ' ' .$tGradus. '. ';
}elseif($tNew<$tOld){
$status.='Сегодня холоднее, чем вчера на ' .$tDelta. ' ' .$tGradus. '. ';
}elseif($tNew==$tOld){
$status.='Температура сегодня такая же как вчера. ';
}
$tempw="";
$tempcels="";
$status.="";
$h=round(gg("ow_fact.humidity"));
$tempw=$h;
if($tempw >= 11 and $tempw <= 14){
$tempcels=" процентов ";
}
else{
while ($tempw > 9){
$tempw=$tempw-10;
}
if($tempw == 0 or $tempw >= 5 and $tempw <= 9){
$tempcels= процентов ; }
if($tempw == 1){
$tempcels= процент ; }
if($tempw >= 2 and $tempw <= 4){
$tempcels= процента ; }
}
$status.="Относительная влажность ".$h." ".$tempcels. ".";
$tempw="";
$tempcels="";
$status.="";
$pressure=(float)gg("ow_fact.pressure_mmhg");
if ($pressure<738) {
$status.=' Атмосферное давление пониженное.';
} elseif ($pressure>768) {
$status.=' Атмосферное давление повышенное.';
} else {
$status.=' Атмосферное давление нормальное.';
}
$status.="";
// ветер
$WindSpeed=(float)gg("ow_fact.wind_speed");
if ($WindSpeed<1) {
$status.=' Ветра нет.';
} elseif ($WindSpeed<3) {
$status.=' Ветер слабый.';
} elseif ($WindSpeed<6) {
$status.=' Ветер сильный.';
} elseif ($WindSpeed<9) {
$status.=' Ветер очень сильный.';
} else {
$status.=' Ветер очень! Очень сильный.';
}
if (gg('ow_fact.wind_direction')> 45 and gg('ow_fact.wind_direction')< 135){
$WindDir='восточное';
} elseif(gg('ow_fact.wind_direction')>= 135 and gg('ow_fact.wind_direction')<= 225){
$WindDir='южное';
} elseif(gg('ow_fact.wind_direction')> 225 and gg('ow_fact.wind_direction')< 315){
$WindDir='западное';
} else{
$WindDir='северное';
}
$status.=' Направление '.$WindDir.'.';
// Прогноз погоды на сегодня
if (timeBetween("00:00", "12:00")){
$w=(gg('ow_day0.weather_type'));
$status.=' Днём ' .$w. ', ';
$w=round(gg("ow_day0.temp_day"));
}else{
$w=gg('ow_day0.weather_type');
$status.=' Вечером ' .$w. ', ';
$w=round(gg("ow_day0.eve"));
}
$tempw=$w;
if($tempw >= 11 and $tempw <= 14){
$tempcels=" градусов ";
}
else{
while ($tempw > 9){
$tempw=$tempw-10;
}
if($tempw == 0 or $tempw >= 5 and $tempw <= 9){
$tempcels= градусов ; }
if($tempw == 1){
$tempcels= градус ; }
if($tempw >= 2 and $tempw <= 4){
$tempcels= градуса ; }
}
$status.="";
$status.=' температура будет '.$w." ".$tempcels.' цельсия. ';
// Погода на завтра
$status.=' Завтра ' .gg('ow_day1.weather_type'). ', ';
$status.="";
$w=round(gg("ow_day1.temperature"));
$tempw=$w;
if($tempw >= 11 and $tempw <= 14){
$tempcels=" градусов ";
}
else{
while ($tempw > 9){
$tempw=$tempw-10;
}
if($tempw == 0 or $tempw >= 5 and $tempw <= 9){
$tempcels= градусов ; }
if($tempw == 1){
$tempcels= градус ; }
if($tempw >= 2 and $tempw <= 4){
$tempcels= градуса ; }
}
$status.=' температура будет '.$w." ".$tempcels." цельсия.";
sg('ws.metcast',($status));
//sayReply($status,1);
return "$status";
|
AdmintoDDI
|
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$h=gg('ThisComputer.timeH');
if (($h=="07" || $h=="08" || $h=="18" || $h=="19")) {
//if ($wanted == "ДДИ") {
$telegram_module->sendMessageToUser(188471405 ,"Женя приехал и ждёт");
$telegram_module->sendMessageToAdmin("Оля оповещена");
}
else {
//$telegram_module->sendMessageToUser(188216887 ,"Оля не на работе");
$telegram_module->sendMessageToAdmin("Оля не на работе");
//}
}
|
Birthday
|
say ("Проверим, есть ли сегодня дни рождения у кого-нибудь из пользователей.",-1);
$TCd=gg("ThisComputer.DateD");
$TCm=gg("ThisComputer.DateM");
$fullName='unknown';
$objects=getObjectsByClass("Users");
foreach($objects as $obj) {
$user=$obj['TITLE'];
list($USd, $USm, $USy) = explode(".", gg($user.".Brithday"));
if (($USd == $TCd)&($USm == $TCm)) {
$fullName=gg($user.".fullName");
$bodytext=$fullName.": ";
$bodytext.=getRandomLine(birthday);
$bodytext.=" С днем рождения! (Алиса)";
say($bodytext,1);
runScript('send_mes', array('to'=>$fullName,'subj'=>"- HappyBirthday -",'msg'=>$bodytext,'what'=>"SMS"));
}
}
if ($fullName=='unknown') {
say ("На сегодня я дней рождения не обнаружила.",-1);
}
|
radio_play
|
cm('RadioSetting.Control',array('sta'=>'Европа Плюс','cmd'=>'play','vol'=>20));
|