ArmedMode ON/OFF
|
Если режим "Охрана"
if (getGlobal('ManualMode.active') == 0) {
setGlobal('ManualMode.active', '1');
}
if (getGlobal('SecurityArmedMode.active') == 1) {
runScript('MotionSensorRest');
getURL((String) 'http://'.(String) getGlobal('Controller00.ip').(String) '/?ARM=on', 0);
} else {
setGlobal('Corridor.light1', '1');
runScript('LightAll');
getURL((String) 'http://'.(String) getGlobal('Controller00.ip').(String) '/?ARM=off', 0);
}
// Меняем громкость и уровень важности сообщений
rs(WakeUp, array('msg' => 'Охрана'));
|
Auto ON/OFF
|
Включает/Выключает режим Автоматика
if (getGlobal('SecurityArmedMode'.'.'.'active') == 1) {
setGlobal('ManualMode'.'.'.'active', '1');
say('Система работает в автоматическом режиме, так как включена сигнализация', 2);
} else {
if (getGlobal('ManualMode'.'.'.'active') == 0) {
say('Система работает в ручном режиме.', 2);
} else {
say('Система работает в автоматическом режиме.', 2);
}
}
|
DarknessMode ON/OFF
|
Включает/Выключает режим Темно
if (gg('DebugMode.active') == 1) {
DebMes('Скрипт DarknessMode');
}
if (gg('ManualMode.active') == 1) {
if (gg('SecurityArmedMode.active') == 0) {
if (gg('isDark') == 1) {
say ("Делаю рамку темнее");
getURL('http://'.gg('Chumby.ip').'/cgi-bin/custom/setday.sh?30', 0);
getURL('http://'.gg('Chumby.ip').'/cgi-bin/widget_refresh.sh', 0);
}else{
say ("Делаю рамку ярче");
getURL('http://'.gg('Chumby.ip').'/cgi-bin/custom/setday.sh?80', 0);
getURL('http://'.gg('Chumby.ip').'/cgi-bin/widget_refresh.sh', 0);
}
}
}else{ //Если сигнализация то вкл ночной
say ("Включаю ночной режим информатора");
sg("Chumby.Nightmode",1);
getURL('http://'.gg('Chumby.ip').'/cgi-bin/zmote_on.sh', 0);
}
|
Econom ON/OFF
|
Включает/Выключает режим Econom
if (gg('DebugMode.active') == 1) {
DebMes('Скрипт Econom ON/OFF');
}
if (getGlobal('NobodyHomeMode.lock') == 0) {
if (getGlobal('ManualMode.active') == 1) {
if (getGlobal('EconomMode.active') == 1) {
setGlobal('ThisComputer.Econom', '1');
//Если режим включен
} else {
setGlobal('ThisComputer.Econom', '0');
//Если режим выключен
}
}else{
setGlobal('EconomMode.active', '0');
say('Режим "Экономия" выключен, так как система в ручном режиме.',5);
}
if (getGlobal('EconomMode.ReportSms') == 1) {//Если отправлять СМС о переключении режима
// Готовим сообщение
if (getGlobal('myreport.on') == 1) {
if (getGlobal('EconomMode.active') == 1) {
$msg = date("H:i",time())." Вкл режим «Экономия».";
}else{
$msg = date("H:i",time())." Выкл режим «Экономия».";
}
setGlobal("myreport.title", $msg);
if (getGlobal('myreport.sms') == 1) {
setGlobal("myreport.sms_outbox", $msg);
// Отправить сообщения всем подписаным
runScript(SmsSend, array("value" => $msg) );
}
}
}
}
|
GuestsMode
|
Включает/Выключает режим Гости
if (gg('DebugMode.active') == 1) {
DebMes('Скрипт GuestsMode');
}
set_time_limit(120);
//Отключаем ручной режим управления светом
rs('HandSwitchLightModeOff');
if (gg('GuestsMode.lock') == 0) {
if (gg('ManualMode.active') == 1) {
if (gg('GuestsMode.active') == 1) {
sg('ThisComputer.GuestsMode', '1');
//Если режим включен
//Включаем свет везде
rs('LightAllOn');
//Сбрасываем громкость и важность
if (gg('SleepMode.active') == 0) {
rs(WakeUp, array('msg' => 'У нас гости'));
}
//Включаю музыку
rs('playFavoriteMusic');
} else {
sg('ThisComputer.GuestsMode', '0');
//Если режим выключен
}
}else{
sg('GuestsMode.active', '0');
say('Режим "Гости" выключен, так как система в ручном режиме.',10);
}
if (gg('GuestsMode.ReportSms') == 1) {//Если отправлять СМС о переключении режима
// Готовим сообщение
if (gg('myreport.on') == 1) {
if (gg('GuestsMode.active') == 1) {
$msg = date("H:i",time())." Вкл режим «Гости».";
}else{
$msg = date("H:i",time())." Выкл режим «Гости».";
}
sg("myreport.title", $msg);
if (gg('myreport.sms') == 1) {
sg("myreport.sms_outbox", $msg);
// Отправить сообщения всем подписаным
rs(SmsSend, array("value" => $msg) );
}
}
}
}
|
HandSwitchLightModeOff
|
Выключает все флаги HandSwitchMode в помещениях
if (gg('DebugMode.active') == 1) {
say('scripts HandSwitchModeOff');
}
$Rooms=getObjectsByClass("Rooms");
$total=count($Rooms);
for($i=0;$i<$total;$i++) {
if (gg($Rooms[$i]['TITLE'].'.HandSwitchLightMode')=='1') {
sg($Rooms[$i]['TITLE'].'.HandSwitchLightMode',0);
}
}
|
NobodyHomeMode
|
Включает|Выключает режим "Никого нет дома"
if (gg('DebugMode.active') == 1) {
DebMes('Скрипт NobodyHomeMode');
}
set_time_limit(120);
//Отключаем ручной режим управления светом
rs('HandSwitchLightModeOff');
if (gg('NobodyHomeMode.lock') == 0) {
if (gg('ManualMode.active') == 1) {
if (gg('NobodyHomeMode.active') == 1) {
sg('ThisComputer.somebodyHomeText', 'Дома никого');
sg('ThisComputer.somebodyHome', '0');
sg('ThisComputer.nobodyHome', '1');
// Отправляем стикер
rs('SendSticker',array('Sticker'=>'i_miss_you'));
//Выключаем розетки
rs('ReactToNobodyESocketOff');
//Переключаю свет
rs('LightAllOff');
if (gg('WIFI.NobodyHomeModeSetting') == 1) {
sg('WIFI.on', '0');
rs('WIFI ON/OFF');
}
}else{
cm('EconomMode.deactivate'); //Отключаем режим экономии
sg('ThisComputer.somebodyHome', '1');
sg('ThisComputer.nobodyHome', '0');
//Переключаем розетки
rs('ReactToNobodyESocketOn');
if (gg('WIFI.NobodyHomeModeSetting') == 1) {
sg('WIFI.on', '1');
rs('WIFI ON/OFF');
}
}
}else{
sg('NobodyHomeMode.active', '0');
say('Режим Никого нет дома выключен, так как система в ручном режиме.',5);
sg('ThisComputer.somebodyHomeText', 'Система в ручном режиме');
}
// Меняем громкость и уровень важности сообщений
if (gg('NobodyHomeMode.active') == 0) {
rs(WakeUp, array('msg' => 'Никого нет дома'));
}
if (gg('NobodyHomeMode.ReportSms') == 1) {//Если отправлять СМС о переключении режима
// Готовим сообщение
if (gg('myreport.on') == 1) {
if (gg('NobodyHomeMode.active') == 1) {
$msg = date("H:i",time())." Вкл режим «Никого нет дома».";
}else{
$msg = date("H:i",time())." Выкл режим «Никого нет дома».";
}
//rs('SendTelegram',array('message'=>$msg));
sg("myreport.title", $msg);
if (gg('myreport.sms') == 1) {
sg("myreport.sms_outbox", $msg);
// Отправить сообщения всем подписаным
rs('SmsSend', array("value" => $msg) );
}
}
}
}
|
SecurityArmed
|
Включает режим "Тревога"
if (gg('DebugMode.active') == 1) {
say('scripts SecurityArmed');
}
// Меняем громкость и уровень важности сообщений
rs(WakeUp, array('msg' => 'Охрана'));
$rooms=getObjectsByClass("Rooms");
$total=count($rooms);
for($i=0;$i<$total;$i++) {
$rooms[$i]['room']=gg($rooms[$i]['TITLE'].'.Title');
if (!$rooms[$i]['room']) {
$rooms[$i]['room']=$rooms[$i]['TITLE'];
}
$rooms[$i]['active']=gg($rooms[$i]['TITLE'].'.SomebodyHere');
$rooms[$i]['time']=gg($rooms[$i]['TITLE'].'.LatestActivity');
$rooms[$i]['diff']=time()-$rooms[$i]['time'];
$rooms[$i]['Armed']=gg($rooms[$i]['TITLE'].'.Armed'); ;
// Проверяем наличие свойства Armed для помещения. Это свойство указывает на уровень охраняемости помещения
if ($rooms[$i]['Armed']==""){
SetGlobal($rooms[$i]['TITLE'].'.Armed',0); // Устанавливаем 0 если нету Armed
say("Установленно свойство \"охрана\" для помещения ".$rooms[$i]['room'],0);
say("По умолчанию помещение ".$rooms[$i]['room']." не охраняется",0);
}
// Если свойство Armed для помещения 0 то завершаем.
if ($rooms[$i]['Armed']==0){
if ($rooms[$i]['active']==1) {
say("Внимание! Движение вне охраняемой зоны. ".$rooms[$i]['room'],0);
runScript(MotionSensorRest);// Сбрасываем состояние датчиков
return;
}
}
}
if (!function_exists('cmp')) {
function cmp($a, $b)
{
if ($a['diff'] == $b['diff']) {
return 0;
}
return ($a['diff'] < $b['diff']) ? -1 : 1;
}
}
usort($rooms,"cmp");
if (!$rooms[0]['active']) {
// $ArmedText="Никого нет дома. Были в ".date('H:i',$rooms[0]['time'])." (".$rooms[0]['room'].")";
} else {
$res_rooms=array();
for($i=0;$i<$total;$i++) {
if ($rooms[$i]['active']) {
$res_rooms[]=$rooms[$i]['room'];
}
}
$ArmedText=" Тревога! Движение ".implode(", ",$res_rooms);
setGlobal('SecurityArmedMode.ArmedRooms', $ArmedText);
rs(MotionSensorRest);// Сбрасываем состояние датчиков
// Готовим сообщение
if (getGlobal('myreport.on') == 1) {
$msg = date("H:i",time()).$ArmedText;
}
setGlobal("myreport.title", $msg);
if (gg('myreport.sms') == 1) {
setGlobal("myreport.sms_outbox", $msg);
// Отправить сообщения всем подписаным
rs(SmsSend, array("value" => $msg) );
}
}
|
SleepMode
|
Включает|Выключает режим "Все спят"
if (gg('DebugMode.active') == 1) {
say('scripts SleepMode');
}
set_time_limit(120);
//Отключаем ручной режим управления светом
rs('HandSwitchLightModeOff');
if (gg('SleepMode.lock') == 0) {
if (gg('ManualMode.active') == 1) {
if (gg('SleepMode.active') == 1) {
sg('ThisComputer.somebodyHomeText', 'Похоже все спят');
sg('ThisComputer.somebodyHome', '1');
sg('ThisComputer.nobodyHome', '0');
// Отправляем стикер
rs('SendSticker',array('Sticker'=>'good_night'));
//Переключаем розетки
$ESocket=getObjectsByClass("ElectricSocket");
$total=count($ESocket);
for($i=0;$i<$total;$i++) {
$ESocket[$i]['Sleep']=getGlobal($ESocket[$i]['TITLE'].'.react_to_SleepMode');
$ESocket[$i]['esstatus']=getGlobal($ESocket[$i]['TITLE'].'.esstatus');
if ($ESocket[$i]['Sleep']) {
SetGlobal($ESocket[$i]['TITLE'].'.esstatus',0);
}
}
rs('LightAllOff');
}else{
// Отправляем стикер
rs('SendSticker',array('Sticker'=>'hello'));
callMethod('EconomMode.deactivate'); //Отключаем режим экономии
sg('ThisComputer.somebodyHome', '1');
sg('ThisComputer.nobodyHome', '0');
//Переключаем розетки
$ESocket=getObjectsByClass("ElectricSocket");
$total=count($ESocket);
for($i=0;$i<$total;$i++) {
$ESocket[$i]['Sleep']=gg($ESocket[$i]['TITLE'].'.react_to_SleepMode');
$ESocket[$i]['esstatus']=gg($ESocket[$i]['TITLE'].'.esstatus');
if ($ESocket[$i]['Sleep']) {
sg($ESocket[$i]['TITLE'].'.esstatus',1);
}
}
}
//система в ручном режиме
}else{
sg('SleepMode.active', '0');
say('Режим "Все спят" игнорирован, так как система в ручном режиме.',5);
sg('ThisComputer.somebodyHomeText', 'Система в ручном режиме');
}
// Меняем громкость и уровень важности сообщений
if (gg('SleepMode.active') == 0) {
rs(WakeUp, array('msg' => 'Все спят'));
}
if (gg('SleepMode.ReportSms') == 1) {//Если отправлять СМС о переключении режима
// Готовим сообщение
if (gg('myreport.on') == 1) {
if (gg('SleepMode.active') == 1) {
$msg = date("H:i",time())." Вкл режим «Все спят».";
}else{
$msg = date("H:i",time())." Выкл режим «Все спят».";
}
sg("myreport.title", $msg);
if (gg('myreport.sms') == 1) {
sg("myreport.sms_outbox", $msg);
// Отправить сообщения всем подписаным
rs(SmsSend, array("value" => $msg) );
}
}
}
}
|
kurs_send_ch
|
Кидает курс на общий канал
if (!function_exists('file_download')) {
function file_download ($file, $url) {
//скачиваем картинку
$dest_file = @fopen($file, "w");
$resource = curl_init();
curl_setopt($resource, CURLOPT_URL, $url);
curl_setopt($resource, CURLOPT_FILE, $dest_file);
curl_setopt($resource, CURLOPT_HEADER, 0);
curl_exec($resource);
curl_close($resource);
fclose($dest_file);
return("Файл успешно загружен.");
}
}
$url="http://stock.quote.rbc.ru/demo/selt.0/intraday/intra3_q.rus.shtml?ticker=USD000UTSTOM&0";
$file="./cached/rbc_img/USD000UTSTOM.gif";
file_download ($file, $url);
$url="http://stock.quote.rbc.ru/demo/selt.0/intraday/intra3_q.rus.shtml?ticker=EUR_RUB__TOM";
$file="./cached/rbc_img/EUR_RUB__TOM.gif";
file_download ($file, $url);
cm('cbr.update');
$msg='Курс валют обновлен '.gg('cbr.uptime');
rs('send_channel',array('msg'=>$msg));
$msg='Доллар '.gg('cbr.USD_not_to_round');
rs('send_channel',array('msg'=>$msg));
rs('send_channel',array('img'=>'C:/_majordomo/htdocs/cached/rbc_img/USD000UTSTOM.gif'));
$msg='Евро '.gg('cbr.EURO_not_to_round ');
rs('send_channel',array('msg'=>$msg));
rs('send_channel',array('img'=>'C:/_majordomo/htdocs/cached/rbc_img/EUR_RUB__TOM.gif'));
|
news_send_ch
|
отсылает последние 20 новостей.
$last_id=getGlobal('ChannelBot.LastNewsId')-20;
$chat=gg("ChannelBot.ChannelID");
$values=SQLSelect("SELECT * FROM rss_items WHERE ID >".$last_id);
if($values) {
$total=count($values);
$maxnews = 20;
$startfrom = 0;
if ($total > $maxnews){
$startfrom = $total - $maxnews;
$msg='Новостей больше '.$maxnews.'. Всего '.$total.'.';
} else {
$msg='Последние '.$total.' новостей';
}
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$content = array('chat_id' => $chat, 'text' => $msg);
$telegram_module->sendContent($content);
for($i=$startfrom;$i<$total;$i++){
$sql="SELECT * FROM rss_items WHERE ID =".$values[$i]['ID'];
$value=SQLSelectOne($sql);
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$text = $value['TITLE']." ".$value['URL'];
$content = array('chat_id' => $chat, 'text' => $text, 'parse_mode'=>'HTML');
$telegram_module->sendContent($content);
};
$last_id=$value['ID'];
setGlobal('ChannelBot.LastNewsId',$last_id);
} else {
$last_id=$value['ID'];
$value = SQLSelectOne("select * from rss_items ORDER BY ID DESC LIMIT 1,1");
setGlobal('ChannelBot.LastNewsId',$value['ID']);
$msg="Нет новых новостей";
echo $msg;
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$content = array('chat_id' => $chat, 'text' => $msg);
$telegram_module->sendContent($content);
};
|
probki_send_ch
|
Кидает пробки на общий канал
if (!function_exists('file_download')) {
function file_download ($file, $url) {
//скачиваем картинку
$dest_file = @fopen($file, "w");
$resource = curl_init();
curl_setopt($resource, CURLOPT_URL, $url);
curl_setopt($resource, CURLOPT_FILE, $dest_file);
curl_setopt($resource, CURLOPT_HEADER, 0);
curl_exec($resource);
curl_close($resource);
fclose($dest_file);
return("Файл успешно загружен.");
}
}
$url="http://127.0.0.1/jpgraph/?p=reg_2.level_for_img&type=24h&width=420&title=Probki_SPB";
$file="./cached/Probki/Probki.png";
file_download ($file, $url);
$msg=gg('reg_2.hint');
rs('send_channel',array('msg'=>$msg));
rs('send_channel',array('img'=>'C:/_majordomo/htdocs/cached/Probki/Probki.png'));
|
send_channel
|
Отправляет текст в канал телеграмм
$chat=gg("ChannelBot.ChannelID");
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
if ($params['img']){
$img=$params['img'];
$telegram_module->sendimage($chat,$img);
}
if ($params['msg']){
$msg=$params['msg'];
$content = array('chat_id' => $chat, 'text' => $msg);
$telegram_module->sendContent($content);
}
if ($params['html']){
$html=$params['html'];
$content = array('chat_id' => $chat, 'text' => $html, 'parse_mode'=>'HTML');
$telegram_module->sendContent($content);
}
|
send_ChannelID01
|
Отправляет в канал телеграмм
$ChannelID01=gg("ChannelBot.ChannelID01");
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
if ($params['img']){
$img=$params['img'];
$telegram_module->sendimage($ChannelID01,$img);
}
if ($params['msg']){
$msg=$params['msg'];
$content = array('chat_id' => $ChannelID01, 'text' => $msg);
$telegram_module->sendContent($content);
}
if ($params['html']){
$html=$params['html'];
$html = preg_replace('/<br[^>]*>/', ' ', $html);
$content = array('chat_id' => $ChannelID01, 'text' => $html, 'parse_mode'=>'HTML');
$telegram_module->sendContent($content);
}
|
send_ChannelID02
|
Отправляет в канал телеграмм
$ChannelID02=gg("ChannelBot.ChannelID02");
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
if ($params['img']){
$img=$params['img'];
$telegram_module->sendimage($ChannelID02,$img);
}
if ($params['msg']){
$msg=$params['msg'];
$content = array('chat_id' => $ChannelID02, 'text' => $msg);
$telegram_module->sendContent($content);
}
if ($params['html']){
$html=$params['html'];
$html = preg_replace('/<br[^>]*>/', ' ', $html);
$content = array('chat_id' => $ChannelID02, 'text' => $html, 'parse_mode'=>'HTML');
$telegram_module->sendContent($content);
}
|
send_ChannelID03
|
Отправляет в канал телеграмм
$ChannelID03=gg("ChannelBot.ChannelID03");
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
if ($params['img']){
$img=$params['img'];
$telegram_module->sendimage($ChannelID03,$img);
}
if ($params['msg']){
$msg=$params['msg'];
$content = array('chat_id' => $ChannelID03, 'text' => $msg);
$telegram_module->sendContent($content);
}
if ($params['html']){
$html=$params['html'];
$html = preg_replace('/<br[^>]*>/', ' ', $html);
$content = array('chat_id' => $ChannelID03, 'text' => $html, 'parse_mode'=>'HTML');
$telegram_module->sendContent($content);
}
|
send_ChannelID04
|
Отправляет в канал телеграмм
$ChannelID04=gg("ChannelBot.ChannelID04");
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
if ($params['img']){
$img=$params['img'];
$telegram_module->sendimage($ChannelID04,$img);
}
if ($params['msg']){
$msg=$params['msg'];
$content = array('chat_id' => $ChannelID04, 'text' => $msg);
$telegram_module->sendContent($content);
}
if ($params['html']){
$html=$params['html'];
$html = preg_replace('/<br[^>]*>/', ' ', $html);
$content = array('chat_id' => $ChannelID04, 'text' => $html, 'parse_mode'=>'HTML');
$telegram_module->sendContent($content);
}
|
vk_spb_crash_send_ch
|
То что происходит в городе кидаем на канал в телеграмм
$url="https://api.vk.com/method/wall.get?domain=spb_crash&count=1&filter=owner";
//Работаем со строкой JSON
$data = json_decode(file_get_contents($url), true);
for ($i = 0; $i < count($data['response']); $i++) {
$html=$data['response'][$i]['text'];
$date=$data['response'][$i]['date'];
$date=date("m.d.y, H:m:s", $date);
$id=$data['response'][$i]['id'];
$attachment=$data['response'][$i]['attachment'];
if ($id == gg("ChannelBot.ChannelID02_lastid") ){
}else{
if ($attachment['photo']){
$attach=$attachment['photo']['src_xbig'];
}else{
$attach='';
}
if ($html) {
$text="".$date." ".$html." ".$attach;
rs('send_ChannelID02',array('html'=>$text));
sg("ChannelBot.ChannelID02_lastid", $id);
}
}
}
|
vk_spb_today_send_ch
|
То что происходит в городе кидаем на канал в телеграмм
$url="https://api.vk.com/method/wall.get?domain=spb_today&count=1&filter=owner";
//Работаем со строкой JSON
$data = json_decode(file_get_contents($url), true);
for ($i = 0; $i < count($data['response']); $i++) {
$html=$data['response'][$i]['text'];
$date=$data['response'][$i]['date'];
$date=date("m.d.y, H:m:s", $date);
$id=$data['response'][$i]['id'];
$attachment=$data['response'][$i]['attachment'];
if ($id <> gg("ChannelBot.ChannelID01_lastid")){
if ($attachment['photo']){
$attach=$attachment['photo']['src_xbig'];
}else{
$attach='';
}
if ($html) {
$text="".$date." ".$html." ".$attach;
rs('send_ChannelID01',array('html'=>$text));
sg("ChannelBot.ChannelID01_lastid", $id);
}
}
}
|
weather_today_2_send_ch
|
Кидает погоду на общий канал
if (!function_exists('pForm')) {
function pForm($n, $form1, $form2, $form5) {
$n = abs($n) % 100;
$n1 = $n % 10;
if ($n > 10 && $n < 20) return $form5;
if ($n1 > 1 && $n1 < 5) return $form2;
if ($n1 == 1) return $form1;
return $form5;
}
}
$msg=gg('gw_fact.weather');
rs('send_channel',array('msg'=>$msg));
$msg="Сейчас в СПБ ".gg('gw_fact.temperature').'°C, '.gg('gw_fact.weather_type').'.';
rs('send_channel',array('msg'=>$msg));
$weather=gg('gw_day0.day_weather_type');
$wind_speed=gg('gw_day0.day_wind_speed');
//Ветер
if ($wind_speed > "10") {
$msg="Внимание!!! Предупреждаю о сильном ветре !!!";
rs('send_channel',array('msg'=>$msg));
$msg="Скорость ветра по прогнозу ".$wind_speed." ".pForm($wind_speed, 'метр', 'метра', 'метров')." в секунду.";
rs('send_channel',array('msg'=>$msg));
}else{
$msg="Скорость ветра по прогнозу ".$wind_speed." ".pForm($wind_speed, 'метр', 'метра', 'метров')." в секунду.";
rs('send_channel',array('msg'=>$msg));
//Дождь
$haystack = $weather;
$needle = 'дождь';
$pos = strripos($haystack, $needle);
if ($pos === false) {
$pos = strripos($haystack, $needle);
$msg="Сегодня днем будет ".$weather;
} else {
$msg="На сегодня обещали дождь. Не забудьте зонт!";
}
if ($weather == "ясно") {
$msg="На улице зонт Вам не понадобится.";
}
rs('send_channel',array('msg'=>$msg));
}
$msg="Сейчас на Васильевском: ".gg('narodmon_34797.value').'°C, ';
rs('send_channel',array('msg'=>$msg));
|
weather_today_send_ch
|
Кидает погоду на общий канал
if (!function_exists('pForm')) {
function pForm($n, $form1, $form2, $form5) {
$n = abs($n) % 100;
$n1 = $n % 10;
if ($n > 10 && $n < 20) return $form5;
if ($n1 > 1 && $n1 < 5) return $form2;
if ($n1 == 1) return $form1;
return $form5;
}
}
$msg=gg('gw_fact.weather');
rs('send_channel',array('msg'=>$msg));
$msg="Сейчас на улице ".gg('gw_fact.temperature').'°C, '.gg('gw_fact.weather_type').'.';
rs('send_channel',array('msg'=>$msg));
$msg="Сейчас на Васильевском: ".gg('narodmon_34797.value').'°C, ';
rs('send_channel',array('msg'=>$msg));
if (!function_exists('file_download')) {
function file_download ($file, $url) {
//скачиваем картинку
$dest_file = @fopen($file, "w");
$resource = curl_init();
curl_setopt($resource, CURLOPT_URL, $url);
curl_setopt($resource, CURLOPT_FILE, $dest_file);
curl_setopt($resource, CURLOPT_HEADER, 0);
curl_exec($resource);
curl_close($resource);
fclose($dest_file);
return("Файл успешно загружен.");
}
}
$url="http://127.0.0.1/jpgraph/?p=narodmon_34797.value&type=1d&width=420&&title=Temp VO";
$file="./cached/Temp/TempVO.png";
file_download ($file, $url);
rs('send_channel',array('img'=>'C:/_majordomo/htdocs/cached/Temp/TempVO.png'));
$weather=gg('gw_day0.day_weather_type');
$wind_speed=gg('gw_day0.day_wind_speed');
//Ветер
if ($wind_speed > "10") {
$msg="Внимание!!! Предупреждаю о сильном ветре !!!";
rs('send_channel',array('msg'=>$msg));
$msg="Скорость ветра по прогнозу ".$wind_speed." ".pForm($wind_speed, 'метр', 'метра', 'метров')." в секунду.";
rs('send_channel',array('msg'=>$msg));
}else{
$msg="Скорость ветра по прогнозу ".$wind_speed." ".pForm($wind_speed, 'метр', 'метра', 'метров')." в секунду.";
rs('send_channel',array('msg'=>$msg));
//Дождь
$haystack = $weather;
$needle = 'дождь';
$pos = strripos($haystack, $needle);
if ($pos === false) {
$pos = strripos($haystack, $needle);
$msg="Сегодня днем будет ".$weather;
} else {
$msg="На сегодня обещали дождь. Не забудьте зонт!";
}
if ($weather == "ясно") {
$msg="На улице зонт Вам не понадобится.";
}
rs('send_channel',array('msg'=>$msg));
}
$msg="На завтра синоптики обещают ".gg('gw_day1.temp_day').'°C, '.gg('gw_day1.day_weather_type').'.';
rs('send_channel',array('msg'=>$msg));
$msg="Восход в ".gg('ThisComputer.SunRiseTime').", закат в ".gg('ThisComputer.SunSetTime').".";
|
Alarm00
|
Будильник 1
if (gg("SecurityArmedMode.active")){
return;
}
set_time_limit(150);
// Только по рабочим дням
if (gg('Alarm00.AlarmWeekdays')){
if (gg('ThisComputer.Weekdays')){ // Если день "будний"
}else{
return;
}
}
// Если время вышло
if (timeAfter(gg('Alarm00.OutWaiting'))) {
//Видимо зря стараюсь...
say(getRandomLine(vainly),12);
clearTimeOut('AlarmTimer'); // Очищаем AlarmTimer
sg('Alarm00.AlarmWaiting',0); // Сбрасываем ожидание в 0
sg('Alarm00.Completed',0);
return;
}
// Если запуск Первый
if (gg('Alarm00.AlarmWaiting')==0) {
// Меняем громкость и уровень важности сообщений
rs(WakeUp, array('msg' => 'Будильник'));
say("Дзынь! Дзынь!",12);
say(gg('Alarm00.AlarmSay'),12);
// Если запускать скрипт и он не запускался
if (gg('Alarm00.Run')==1 && gg('Alarm00.Completed')==0) {
say("Запускаю задачи для будильника",12);
//Запускаем скрипт "Alarm00.RunName"
rs(gg('Alarm00.RunName'));
}
sg('Alarm00.AlarmWaiting',1); // Сбрасываем ожидание в 1
rs('sayTodayAgenda');//Запускаем озвучку задач
rs('sayToDo');//Запускаем озвучку sayToDo
// Если ожидание
}else{
say("Дзынь! Дзынь!",12);
say(gg('Alarm00.AlarmSay'),12);
}
if (gg('Alarm00.TimeOut') > 0) {// Если повтор больше 0
say("Таймер повтора будильника ".$Alarms[$i]['AlarmName']);
setTimeOut('AlarmTimer','runScript("Alarm00");',gg('Alarm00.TimeOut')*60);
}
|
Alarm00_start
|
Скрипт будильника 1
if (gg("SecurityArmedMode.active")){
return;
}
//Если режим автомат выкл
if (gg('ManualMode.active') == 0) {
return;
}
//не выполнять если уже выполнялся
if (gg("Alarm00.Completed") == 1){
return;
}
set_time_limit(120);
if (gg('ThisComputer.isDark')) {
say("Светлана, я включила для Вас освещение.",12);
//Устанавливаем свойство объектов
sg('Kitchen.light1', '1');
sg('Kitchen.light2', '1');
sg('Kitchen.light3', '1');
//Освещение выключен Kitchen
sg('kitchen001.lstatus', '1');
sleep(1);
sg('kitchen002.lstatus', '1');
sleep(1);
sg('kitchen003.lstatus', '1');
sleep(1);
}
sg("Alarm00.Completed",1);
|
Alarm01
|
Будильник 2
if (gg("SecurityArmedMode.active")){
return;
}
set_time_limit(150);
// Только по рабочим дням
if (gg('Alarm01.AlarmWeekdays')){
if (gg('ThisComputer.Weekdays')){ // Если день "будний"
}else{
return;
}
}
// Если время вышло
if (timeAfter(gg('Alarm01.OutWaiting'))) {
//Видимо зря стараюсь...
say(getRandomLine(vainly),12);
clearTimeOut('AlarmTimer'); // Очищаем AlarmTimer
sg('Alarm01.AlarmWaiting',0); // Сбрасываем ожидание в 0
sg('Alarm01.Completed',0);
return;
}
// Если запуск Первый
if (gg('Alarm01.AlarmWaiting')==0) {
// Меняем громкость и уровень важности сообщений
rs(WakeUp, array('msg' => 'Будильник'));
say("Дзынь! Дзынь!",12);
say(gg('Alarm01.AlarmSay'),12);
// Если запускать скрипт и он не запускался
if (gg('Alarm01.Run')==1 && gg('Alarm02.Completed')==0) {
say("Запускаю задачи для будильника",12);
//Запускаем скрипт "Alarm02.RunName"
rs(gg('Alarm01.RunName'));
}
sg('Alarm01.AlarmWaiting',1); // Сбрасываем ожидание в 1
rs('sayTodayAgenda');//Запускаем озвучку задач
rs('sayToDo');//Запускаем озвучку sayToDo
// Если ожидание
}else{
say("Дзынь! Дзынь!",12);
say(gg('Alarm01.AlarmSay'),12);
}
if (gg('Alarm01.TimeOut') > 0) {// Если повтор больше 0
say("Таймер повтора будильника ".$Alarms[$i]['AlarmName']);
setTimeOut('AlarmTimer','runScript("Alarm01");',gg('Alarm01.TimeOut')*60);
}
|
Alarm01_start
|
Скрипт будильника 2
if (gg("SecurityArmedMode.active")){
return;
}
//Если режим автомат выкл
if (gg('ManualMode.active') == 0) {
return;
}
//не выполнять если уже выполнялся
if (gg("Alarm01.Completed") == 1){
return;
}
set_time_limit(120);
if (gg('ThisComputer.isDark')) {
say("Полина, я включила для Вас освещение.",12);
sg('Bedroom1.light1', '1');
sg('Bedroom1.light2', '1');
//Освещение Спальня один включен Bedroom1
getURL((String) 'http://'.(String) gg('Controller00.ip').(String) '/?PIN8=on', 0);
sleep(1);
//Освещение Спальня "Ночной режим" включено Bedroom1
getURL((String) 'http://'.(String) gg('Controller00.ip').(String) '/?PIN6=on', 0);
sleep(1);
}
sg("Alarm01.Completed",1);
|
Alarm02
|
Будильник 3
if (gg("SecurityArmedMode.active")){
return;
}
set_time_limit(150);
// Только по рабочим дням
if (gg('Alarm02.AlarmWeekdays')){
if (gg('ThisComputer.Weekdays')){ // Если день "будний"
}else{
return;
}
}
// Если время вышло
if (timeAfter(gg('Alarm02.OutWaiting'))) {
//Видимо зря стараюсь...
say(getRandomLine(vainly),12);
clearTimeOut('AlarmTimer'); // Очищаем AlarmTimer
sg('Alarm02.AlarmWaiting',0); // Сбрасываем ожидание в 0
sg('Alarm02.Completed',0);
return;
}
// Если запуск Первый
if (gg('Alarm02.AlarmWaiting')==0) {
// Меняем громкость и уровень важности сообщений
rs(WakeUp, array('msg' => 'Будильник'));
say("Дзынь! Дзынь!",12);
say(gg('Alarm02.AlarmSay'),12);
// Если запускать скрипт и он не запускался
if (gg('Alarm02.Run')==1 && gg('Alarm02.Completed')==0) {
say("Запускаю задачи для будильника",12);
//Запускаем скрипт "Alarm02.RunName"
rs(gg('Alarm02.RunName'));
}
sg('Alarm02.AlarmWaiting',1); // Сбрасываем ожидание в 1
rs('sayTodayAgenda');//Запускаем озвучку задач
rs('sayToDo');//Запускаем озвучку sayToDo
// Если ожидание
}else{
say("Дзынь! Дзынь!",12);
say(gg('Alarm02.AlarmSay'),12);
}
if (gg('Alarm02.TimeOut') > 0) {// Если повтор больше 0
say("Таймер повтора будильника ".$Alarms[$i]['AlarmName']);
setTimeOut('AlarmTimer','runScript("Alarm02");',gg('Alarm02.TimeOut')*60);
}
rs('AliceWunderlist', array('User' => 'leonid'));
|
Alarm02_start
|
Скрипт будильника 3
if (gg("SecurityArmedMode.active")){
return;
}
//Если режим автомат выкл
if (gg('ManualMode.active') == 0) {
return;
}
//не выполнять если уже выполнялся
if (gg("Alarm02.Completed") == 1){
return;
}
set_time_limit(120);
if (gg('ThisComputer.isDark')) {
say("Леонид, включаю для Вас свет в спальне.",12);
sg('Bedroom2.light1', 1);
say("Освещение спальня - подсветка мебели включено.",1);
sg("bedroom202.lstatus",1);
sleep(1);
sg('Bedroom2.light2', 1);
say("Освещение спальня - настольная лампа включено.",1);
sg("bedroom201.lstatus",1);
}
rs('tuner_on');
sg("Alarm02.Completed",1);
|
AlarmAllOff
|
Сбрасывает и отключает все будильники Алисы
clearTimeOut('AlarmTimer');
sg('ThisComputer.AlarmWaiting',0);
sg('Alarm00.AlarmWaiting',0);
sg('Alarm01.AlarmWaiting',0);
sg('Alarm02.AlarmWaiting',0);
sg('ThisComputer.AlarmStatus',0);
sg('Alarm00.AlarmStatus',0);
sg('Alarm01.AlarmStatus',0);
sg('Alarm02.AlarmStatus',0);
say("Все будильники отключены",2);
|
AlarmCompleted
|
sg('Alarm00.Completed',0);
sg('Alarm01.Completed',0);
sg('Alarm02.Completed',0);
|
AlarmWaitingStatusRest
|
Настройка состояния будильников
if (gg('DebugMode.active') == 1) {
DebMes('scripts AlarmWaitingStatusRest');
}
$Alarms=getObjectsByClass("Alarms");
$total=count($Alarms);
for($i=0;$i<$total;$i++) {
$Alarms[$i]['AlarmName']=gg($Alarms[$i]['TITLE'].'.AlarmName');
$Alarms[$i]['AlarmWaiting']=gg($Alarms[$i]['TITLE'].'.AlarmWaiting');
if ($Alarms[$i]['AlarmWaiting']) {
$res_Alarms[]=$Alarms[$i]['AlarmName'];
clearTimeOut('AlarmTimer'); // Очищаем AlarmTimer
sg($Alarms[$i]['TITLE'].'.AlarmWaiting',0);
// sg($Alarms[$i]['TITLE'].'.Completed',0);
$msgtxt = 'Разбудила';
say($msgtxt,10);
rs(SendSticker_v, array('stickerbody' => $msgtxt));
say("Теперь можно отключить повтор будильника ".$Alarms[$i]['AlarmName'],10);
say ("Сбрасываю таймер будильника ".$Alarms[$i]['AlarmName']);
clearTimeOut('AlarmTimer');
}
}
|
morningAlarm
|
Утренний будильник
// Только по рабочим дням
if (gg('ThisComputer.AlarmWeekdays')){
// Проверяем "выходной или будний день"
if (gg('ThisComputer.Weekdays')){ // Если день "будний"
$ModeOn=1;// Назначаем запуск будильника
}else{
$ModeOn=0;// Назначаем отмену будильника
}
}else{
// Если выкл "Только по рабочим дням " то нам пофиг.
$ModeOn=1; // Назначаем запуск будильника
}
if ($ModeOn==1){
if (getGlobal('SecurityArmedMode.active') == 0) {
clearTimeOut('AlarmTimer');
if (gg('ThisComputer.AlarmWaiting')) {
if (timeAfter('11:00')) {
say('Видимо зря стараюсь...');
setGlobal('ThisComputer.AlarmWaiting',0);
}
say("Дзынь! Дзынь!",13);
say("Доброе утро. Самое время проснуться.",13);
} else {
// Меняем громкость и уровень важности сообщений
rs(WakeUp, array('msg' => 'Будильник'));
say("Дзынь! Дзынь!",13);
say("Доброе утро. Самое время проснуться.",13);
// callMethod("noo3.turnOn"); // светильник в спальне
setGlobal('ThisComputer.AlarmWaiting',1);
rs('sayTodayAgenda');//Запускаем озвучку задач
rs('sayToDo');//Запускаем озвучку sayToDo
}
setTimeOut('AlarmTimer','runScript("MorningAlarm");',10*60);
}
}
|
2ip
|
Рассказывает про интернет к которому подключена.
say ('Про интернет к которому я подключена.');
$url="http://api.2ip.com.ua/provider.json";
//Работаем со строкой JSON
$data = json_decode(file_get_contents($url), true);
$ip=$data["ip"]; // что искали
$name_ripe=$data["name_ripe"];
$name_rus=$data["name_rus"];
$site=$data["site"];
//echo $ip;
$msgtxt = "IP адрес ".$ip;
say ("Провайдер ".$name_rus,5);
say ("Сайт провайдера ".$site,5);
say($msgtxt,9);
rs(SendSticker_v, array('stickerbody' => $msgtxt));
$url2="http://api.2ip.com.ua/geo.json?ip=".$ip;
echo $url2;
//Работаем со строкой JSON
$data = json_decode(file_get_contents($url2), true);
$country_rus=$data["country_rus"]; // что искали
$region_rus=$data["region_rus"];
$city_rus=$data["city_rus"];
say ("Мое местонахождение по мнению других:",5);
say ($country_rus,5);
say ($region_rus,5);
say ($city_rus,5);
|
AliceWunderlist
|
Обновляет и читает задачи пользователя на сегодня Wunderlist
if (gg('ThisComputer.InternetAccess') != '1'){ //Если нет интернета
rs("no_internet");
return;
}
$user=$params['User'];
if(!$user){
return;
}
include_once(DIR_MODULES.'app_wunderlist/app_wunderlist.class.php');
$wunderlist=new app_wunderlist();
$wunderlist->refreshAll();
if(gg($user.'.WunderlistTasksToday')){
say("Задачи на сегодня.",12);
}
$data=explode("\n", gg($user.'.WunderlistTasksToday'));
$total=count($data);
for($i=0;$i<$total;$i++) {
if($data[$i]){
say($data[$i],12);
}
}
|
CheckGismeteo
|
Проверка погоды с Gismeteo
if (gg('ThisComputer.InternetAccess') != '1'){ //Если нет интернета
rs("no_internet", "Гисметео");
clearTimeout('CheckGismeteoExport');
}else{
setTimeOut('CheckGismeteoExport','runScript("CheckGismeteo");',10*60);
include_once(DIR_MODULES.'app_gismeteo/app_gismeteo.class.php');
$app_gismeteo=new app_gismeteo();
$app_gismeteo->get_weather(gg('gis_setting.city_id'));
}
|
CheckGMail
|
Проверка GMail
if (gg('DebugMode.active') == 1) {
DebMes('Скрипт CheckGMail');
}
/** Склонение существительных с числительными
* @param int $n число
* @param string $form1 Единственная форма: 1 секунда
* @param string $form2 Двойственная форма: 2 секунды
* @param string $form5 Множественная форма: 5 секунд
* @return string Правильная форма
*/
if (!function_exists('pluralForm')) {
function pluralForm($n, $form1, $form2, $form5) {
$n = abs($n) % 100;
$n1 = $n % 10;
if ($n > 10 && $n < 20) return $form5;
if ($n1 > 1 && $n1 < 5) return $form2;
if ($n1 == 1) return $form1;
return $form5;
}
}
if (gg('ThisComputer.InternetAccess') != '1'){ //Если нет интернета
rs("no_internet", "Проверка GMail");
}else{
$unreadold=gg('leonid.GMailUnread');
$user = gg('leonid.GMailAcc'); // имя пользователя
$pass = gg('leonid.GMailPass'); // пароль
$data_file="https://$user:$pass@mail.google.com/mail/feed/atom";
$xml = simplexml_load_file($data_file); // раскладываем xml на массив
$unread=$xml->fullcount;
if ($unreadold<$unread){
$newmail=$unread-$unreadold;
if (gg('NobodyHomeMode.active') == '0'){
say ("Всего на почте Google ".$unreadold." ".pluralForm($unreadold, 'непрочитанное сообщение', 'непрочитанных сообщения', 'непрочитанных сообщений'),1);
say ("У Вас ".$newmail." ".pluralForm($newmail, 'сообщение', 'сообщения', 'сообщений')." за сегодня.",1);
}
}else{
$newmail=0;
if (gg('NobodyHomeMode.active') == '0'){
say ("За сегодня нет новых сообщений.",1);
say ("Всего на почте Google ".$unreadold." ".pluralForm($unreadold, 'непрочитанное сообщение', 'непрочитанных сообщения', 'непрочитанных сообщений'),1);
}
}
sg('leonid.GMailUnread',$unread);
sg('leonid.GMailNew',$newmail);
}
|
CheckMegafon
|
Проверка Мегафон
$data_file=ROOT.'megafon.xml';
$xml = simplexml_load_file($data_file);
$ACCOUNT=$xml->SELFCARE->ACCOUNT;
$NAME=$xml->SELFCARE->NAME;
$NUMBER=$xml->SELFCARE->NUMBER;
$RATE_PLAN=$xml->SELFCARE->RATE_PLAN;
sg('MobTel_MEGAFON.ACCOUNT',$ACCOUNT);
sg('MobTel_MEGAFON.NAME',$NAME);
sg('MobTel_MEGAFON.NUMBER',$NUMBER);
sg('MobTel_MEGAFON.RATE_PLAN',$RATE_PLAN);
|
CheckTrack
|
Проверка треков почты
if (gg('ThisComputer.InternetAccess') != '1'){ //Если нет интернета
rs("no_internet", "Проверка треков");
}else{
getURL('http://127.0.0.1/modules/app_postoffice/check_post.php', 0);
}
|
CheckYaExport
|
Проверка YaExport
if (gg('ThisComputer.InternetAccess') != '1'){ //Если нет интернета
rs("no_internet", "Яндекс пробки");
clearTimeout('CheckYaExport');
}else{
setTimeOut('CheckYaExport','runScript("CheckYaExport");',10*60);
sg('reg_2.updatedDate',date("m.d.y"));
$data_file="http://export.yandex.ru/bar/reginfo.xml?region=2";
$xml = simplexml_load_file($data_file);
$title=$xml->region->title;
$level=$xml->traffic->region->level;
$hint=$xml->traffic->region->hint;
$icon=$xml->traffic->region->icon;
$url=$xml->traffic->region->url;
$updatetime=$xml->traffic->region->time;
$weather=$xml->weather->source;
$sun_rise=$xml->weather->day->sun_rise;
$sunset=$xml->weather->day->sunset;
$weather_type=$xml->weather->day->day_part->weather_type;
$temperature=$xml->weather->day->day_part->temperature;
$dampness=$xml->weather->day->day_part->dampness;
$wind_speed=$xml->weather->day->day_part->wind_speed;
$pressure=$xml->weather->day->day_part->pressure;
$wind_direction=$xml->weather->day->day_part->wind_direction;
$imagev2=$xml->weather->day->day_part->image;
//echo $sunset;
//echo $title;
if ($level!=""){
sg('reg_2.title',$title);
sg('reg_2.level',$level);
sg('reg_2.hint',$hint);
sg('reg_2.icon',$icon);
sg('reg_2.url',$url);
sg('reg_2.sun_rise',$sun_rise);
sg('reg_2.sunset',$sunset);
sg('reg_2.weather_type',$weather_type);
sg('reg_2.wind_speed',$wind_speed);
sg('reg_2.wind_direction',$wind_direction);
sg('reg_2.temperature',$temperature);
sg('reg_2.imagev2',$imagev2);
sg('reg_2.pressure',$pressure);
sg('reg_2.dampness',$dampness);
sg('reg_2.updatedTime',$updatetime);
sg('reg_2.data_update',$updatetime.":00 ".date("d.m.Y"));
}else{
sg('reg_2.title',"Нет связи");
sg('reg_2.level',"NA");
sg('reg_2.hint', "Нет связи");
sg('reg_2.icon',"yellow");
sg('reg_2.url',$url);
sg('reg_2.sun_rise',"NA");
sg('reg_2.sunset',"NA");
sg('reg_2.weather_type',"NA");
sg('reg_2.wind_speed',"NA");
sg('reg_2.wind_direction',"NA");
sg('reg_2.temperature',"NA");
sg('reg_2.imagev2',"NA");
sg('reg_2.pressure',"NA");
sg('reg_2.updatedTime',$updatetime);
}
sg('reg_1.updatedDate',date("m.d.y"));
$data_file="http://export.yandex.ru/bar/reginfo.xml?region=1";
$xml = simplexml_load_file($data_file);
$title=$xml->region->title;
$level=$xml->traffic->region->level;
$hint=$xml->traffic->region->hint;
$icon=$xml->traffic->region->icon;
$url=$xml->traffic->region->url;
$updatetime=$xml->traffic->region->time;
if ($level!=""){
sg('reg_1.title',$title);
sg('reg_1.level',$level);
sg('reg_1.hint',$hint);
sg('reg_1.icon',$icon);
sg('reg_1.url',$url);
sg('reg_1.updatedTime',$updatetime);
}else{
sg('reg_1.title',"Нет связи");
sg('reg_1.level',"NA");
sg('reg_1.hint', "Нет связи");
sg('reg_1.icon',"ye1low");
sg('reg_1.url',$url);
sg('reg_1.updatedTime',$updatetime);
}
}
//Динамика розничных цен на бензин АИ-95 (Россия, руб.) для Санкт-Петербурга
$fuel_92_png="http://pda.news.yandex.ru/quotes/2/20001_small.png";
$file_92_png="./cached/ya_fuel/fuel_92.png";
$dest_file = @fopen($file_92_png, "w");
$resource = curl_init();
curl_setopt($resource, CURLOPT_URL, $fuel_92_png);
curl_setopt($resource, CURLOPT_FILE, $dest_file);
curl_setopt($resource, CURLOPT_HEADER, 0);
curl_exec($resource);
curl_close($resource);
fclose($dest_file);
//Динамика розничных цен на бензин АИ-95 (Россия, руб.) для Санкт-Петербурга
$fuel_95_png="http://pda.news.yandex.ru/quotes/2/20002_small.png";
$file_95_png="./cached/ya_fuel/fuel_95.png";
$dest_file = @fopen($file_95_png, "w");
$resource = curl_init();
curl_setopt($resource, CURLOPT_URL, $fuel_95_png);
curl_setopt($resource, CURLOPT_FILE, $dest_file);
curl_setopt($resource, CURLOPT_HEADER, 0);
curl_exec($resource);
curl_close($resource);
fclose($dest_file);
//Динамика розничных цен на бензин АИ-98 (Россия, руб.) для Санкт-Петербурга
$fuel_98_png="http://pda.news.yandex.ru/quotes/2/20003_small.png";
$file_98_png="./cached/ya_fuel/fuel_98.png";
$dest_file = @fopen($file_98_png, "w");
$resource = curl_init();
curl_setopt($resource, CURLOPT_URL, $fuel_98_png);
curl_setopt($resource, CURLOPT_FILE, $dest_file);
curl_setopt($resource, CURLOPT_HEADER, 0);
curl_exec($resource);
curl_close($resource);
fclose($dest_file);
|
ChekMoneyExchange
|
Проверка курса валют
if (gg('DebugMode.active') == 1) {
DebMes('Скрипт ChekMoneyExchange');
}
if (gg('ThisComputer.InternetAccess') != '1'){ //Если нет интернета
rs("no_internet", "Курс валют");
}else{
cm('cbr.update');
rs("stock_quote_rbc");
if (gg('NobodyHomeMode.active') == '0'){
say('Курс валют обновлен '.gg('cbr.uptime'));
say('Доллар '.gg('cbr.USD'),1);
say('Евро '.gg('cbr.EURO'),1);
}
//отправляем картинку с курсом
$msgtxt='Доллар '.gg('cbr.USD').' ----------------- Евро '.gg('cbr.EURO');
$str="rs(SendSticker_v, array('stickerbody' => '".$msgtxt."'));";
setTimeOut("ChekMoneyStickerTimer",$str,90);
}
|
duckduckgo
|
Проверка Duckduckgo
$params=$params['site'];
//$params="в контакте";
$params= urlencode($params);
$url="http://api.duckduckgo.com/?q=".$params."&format=json&pretty=2";
if (!function_exists('get_web_page')) {
function get_web_page( $url )
{
$uagent = "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0";
$httpheader = array( 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3',
'Accept-Encoding: gzip, deflate',
'Connection: keep-alive',
'Upgrade-Insecure-Requests: 1',
'Cache-Control: max-age=0');
$ch = curl_init( $url );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // возвращает веб-страницу
curl_setopt($ch, CURLOPT_HEADER, 0); // не возвращает заголовки
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // переходит по редиректам
curl_setopt($ch, CURLOPT_ENCODING, ""); // обрабатывает все кодировки
curl_setopt($ch, CURLOPT_HTTPHEADER,$httpheader);
curl_setopt($ch, CURLOPT_USERAGENT, $uagent); // useragent
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120); // таймаут соединения
curl_setopt($ch, CURLOPT_TIMEOUT, 120); // таймаут ответа
curl_setopt($ch, CURLOPT_MAXREDIRS, 10); // останавливаться после 10-ого редиректа
$content = curl_exec( $ch );
$err = curl_errno( $ch );
$errmsg = curl_error( $ch );
$header = curl_getinfo( $ch );
curl_close( $ch );
$header['errno'] = $err;
$header['errmsg'] = $errmsg;
$header['content'] = $content;
return $header;
}
}
$result = get_web_page( $url );
if (($result['errno'] != 0 )||($result['http_code'] != 200)) {
echo $result['errmsg'];
} else {
$page = $result['content'];
}
$data = json_decode($page, true);
$Heading=$data["Heading"]; // что искали
$Abstract=$data["Abstract"]; // что искали
$FirstURL=$data['RelatedTopics']['0']['FirstURL'];
say ("Ищу ".$Heading,2);
say ($Abstract,5);
// print_r ($data);
$rec=array();
$rec['EVENT_TYPE']='openurl'; // команда может быть ещё newwindow
$rec['WINDOW']='alice';
$rec['TERMINAL_TO']='*'; //здесь можно конкретный терминал указать
$rec['ADDED']=date('Y-m-d H:i:s');
$rec['EXPIRE']=date('Y-m-d H:i:s', time()+10);
$rec['DETAILS']=$FirstURL;
$rec['ID']=SQLInsert('events', $rec);
|
FindKino
|
Поиск в кинопоиске (умерло)
$kino=$params['kino'];
$kino = str_replace(' ', '_', $kino);
//Ищем на страничке
$url="http://api.kinopoisk.cf/searchFilms?keyword=".$kino;
//Работаем со строкой JSON
$data = json_decode(file_get_contents($url), true);
$keyword=$data["keyword"]; // что искали
$id=$data["searchFilms"][0]["id"]; // ид на кинопоиске
$nameRU=$data["searchFilms"][0]["nameRU"]; // название в рус
$description=$data["searchFilms"][0]["description"]; //жанр
$year=$data["searchFilms"][0]["year"];
$genre=$data["searchFilms"][0]["genre"];
$rating=$data["searchFilms"][0]["rating"];//рейтинг
$img="http://st.kp.yandex.net/images/film/".$id.".jpg";
//Рассказываем о фильме
say('Найден фильм "'.$nameRU.'" '.$year.' года.',10);
say($description,10);
say('Рейтинг фильма '.$rating,10);
//скачиваем картинку
$url=$img;
$jpg="./cached/film/".$id.".jpg";
$dest_file = @fopen($jpg, "w");
$resource = curl_init();
curl_setopt($resource, CURLOPT_URL, $url);
curl_setopt($resource, CURLOPT_FILE, $dest_file);
curl_setopt($resource, CURLOPT_HEADER, 0);
curl_exec($resource);
curl_close($resource);
fclose($dest_file);
//отправляем картинку в телеграмм
$img='C:/_majordomo/htdocs/cached/film/'.$id.'.jpg';
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$telegram_module->sendImageToAll($img);
|
getTodayFilms
|
То что идет в кинотеатрах (умерло)
say("Список фильмов в прокате.",5);
say("Фильмы с рейтингом меньше 7 баллов не отображаются.",5);
$url="http://api.kinopoisk.cf/getTodayFilms";
//Работаем со строкой JSON
$data = json_decode(file_get_contents($url), true);
for ($i = 0; $i < count($data['filmsData']); $i++) {
$rating=$data['filmsData'][$i]['rating'];
if ($rating[0]>="7"){
say( 'Фильм '.$data['filmsData'][$i]['nameRU'].' Жанр '.$data['filmsData'][$i]['genre'].' '.$data['filmsData'][$i]['country'].'.',5);
say( 'Премьера '.$data['filmsData'][$i]['premiereRU'].'. Рейтинг '.$data['filmsData'][$i]['rating'].'.',5);
}
}
|
ImgWebCam
|
Скачивает картинку с камеры и кидает на канал ChannelID04
//скачиваем картинку
$url="http://192.168.0.20/IMAGE.JPG";
$jpg="./cached/img/IMAGE.jpg";
//скачиваем картинку
$dest_file = @fopen($jpg, "w");
$resource = curl_init();
curl_setopt($resource, CURLOPT_URL, $url);
curl_setopt($resource, CURLOPT_FILE, $dest_file);
curl_setopt($resource, CURLOPT_HEADER, 0);
curl_exec($resource);
curl_close($resource);
fclose($dest_file);
//отправляем картинку в телеграмм
$img='C:/_majordomo/htdocs/cached/img/IMAGE.jpg';
rs('send_ChannelID04',array('img'=>$img));
rs('send_ChannelID04',array('msg'=>date("d.m.Y H:i:s",time())));
|
ImgWebCam_old
|
Скачивает картинку с камеры и кидает в общий чат
//скачиваем картинку
$url="http://192.168.0.20/IMAGE.JPG";
$jpg="./cached/img/IMAGE.jpg";
//скачиваем картинку
$dest_file = @fopen($jpg, "w");
$resource = curl_init();
curl_setopt($resource, CURLOPT_URL, $url);
curl_setopt($resource, CURLOPT_FILE, $dest_file);
curl_setopt($resource, CURLOPT_HEADER, 0);
curl_exec($resource);
curl_close($resource);
fclose($dest_file);
//отправляем картинку в телеграмм
$img='C:/_majordomo/htdocs/cached/img/IMAGE.jpg';
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$telegram_module->sendImageToAll($img);
|
OpenHardwareMonitor
|
Снимаем состояние компа
if (!function_exists('searchJson')) {
function searchJson($obj,$arrprop) {
foreach($obj->Children as $child) {
if(isset($child->id)) {
foreach($arrprop as $pn=>$id) {
if ($id == $child->id) {
$sensorvalue = round(substr($child->Value,0,strpos($child->Value,' ')),0);
sg($pn,$sensorvalue);
}
}
}
searchJson($child,$arrprop);
}
return;
}
}
//Получение данных от OpenHardwareMonitor
$ch = curl_init('http://127.0.0.1:8085/data.json');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$ohm = curl_exec($ch);
$json = json_decode($ohm);
// 'Имя свойства'=>id
$arrprop=array('UsedSpaceHDD'=>48,'CPUCore1Temp'=>26,'CPUCore2Temp'=>27,'CPUCore1Load'=>30,'CPUCore2Load'=>31);
searchJson($json,$arrprop);
// Расчет цветовой температуры для элемента на сцене
$min = 45; // зеленый
$mid = 52; // желтый
$max = 65; // красный
$arrprop=array('CPUCore1Temp','CPUCore2Temp');
foreach($arrprop as $pn) {
$t=gg($pn);
if ($t<$min) {$t=$min;} elseif ($t>$max) {$t=$max;}
if ($t<$mid){
$t = round( ($t-$min)/($mid-$min)*255 );
$t = dechex($t);
$hcolor = '#'.$t.'ff00';
// $hcolor = $t.',255,0';
} else {
$t = 255 - round( ($t-$mid)/($max-$mid)*255 );
$t = dechex($t);
$hcolor = '#ff'.$t.'00';
//$hcolor = '255,'.$t.',0';
}
sg($pn.'HEX', $hcolor);
}
|
stock_quote_rbc
|
скачивает c stock.quote.rbc.ru и кидает в телеграмм
if (!function_exists('file_download')) {
function file_download ($file, $url) {
//скачиваем картинку
$dest_file = @fopen($file, "w");
$resource = curl_init();
curl_setopt($resource, CURLOPT_URL, $url);
curl_setopt($resource, CURLOPT_FILE, $dest_file);
curl_setopt($resource, CURLOPT_HEADER, 0);
curl_exec($resource);
curl_close($resource);
fclose($dest_file);
return("Файл успешно загружен.");
}
}
$url="http://stock.quote.rbc.ru/demo/selt.0/intraday/intra3_q.rus.shtml?ticker=USD000UTSTOM&0";
$file="./cached/rbc_img/USD000UTSTOM.gif";
file_download ($file, $url);
$url="http://stock.quote.rbc.ru/demo/selt.0/intraday/intra3_q.rus.shtml?ticker=EUR_RUB__TOM";
$file="./cached/rbc_img/EUR_RUB__TOM.gif";
file_download ($file, $url);
rs('SendTelegram',array('img'=>'C:/_majordomo/htdocs/cached/rbc_img/USD000UTSTOM.gif'));
rs('SendTelegram',array('img'=>'C:/_majordomo/htdocs/cached/rbc_img/EUR_RUB__TOM.gif'));
|
WIKIsearch
|
Проверка WIKIsearch
if (gg('ThisComputer.InternetAccess') != '1'){ //Если нет интернета
rs("no_internet");
}else{
sg('WIKIsearch.text',$params);
$query="https://ru.wikipedia.org/w/api.php?action=opensearch&search=".getGlobal('WIKIsearch.text')."&prop=info&format=xml&inprop=url";
$data_file=$query;
$xml = simplexml_load_file($data_file);
$WIKIsearch=$xml->Query;
$Description =$xml->Section->Item->Description;
$url =$xml->Section->Item->Url;
$img =$xml->Section->Item->Image;
if (!function_exists('utf8_st_split')) {
function utf8_st_split($str) {
// переводим каждый символ в массив строк
$split=1;
$array = array();
for ( $i=0; $i < strlen( $str ); ){
$value = ord($str[$i]); //возвращаем ASCII-код сиволов и проверяем их на корректность
if($value > 127){
if($value >= 192 && $value <= 223)
$split=2;
elseif($value >= 224 && $value <= 239)
$split=3;
elseif($value >= 240 && $value <= 247)
$split=4;
}else{
$split=1;
}
$key = NULL;
for ( $j = 0; $j < $split; $j++, $i++ ) {
$key .= $str[$i];
}
array_push( $array, $key );
}
return $array;
}
}
/**
* Функция вырезки
* @param <string> $str
* @return <string>
*/
if (!function_exists('clearst')) {
function clearst($str){
$sru = 'ёйцукенгшщзхъфывапролджэячсмитьбю';
$s1 = array_merge(utf8_st_split($sru), utf8_st_split(strtoupper($sru)), range('A', 'Z'), range('a','z'), range('0', '9'), array('&',' ','#',';','%','?',':','(',')','-','_','=','+','[',']',',','.','/','\\'));
$codes = array();
for ($i=0; $i<count($s1); $i++){
$codes[] = ord($s1[$i]);
}
$str_s = utf8_st_split($str);
for ($i=0; $i<count($str_s); $i++){
if (!in_array(ord($str_s[$i]), $codes)){
$str = str_replace($str_s[$i], '', $str);
}
}
return $str;
}
}
if (empty($Description)) { //если ничего не нашлось
sg('WIKIsearch.Description','Я не знаю такого слова');
} elseif (!empty($Description)) { //иначе
$Description = preg_replace("#ё#", 'е', $Description); //меняем "ё" на "е"
$Description = mb_strtolower($Description, 'utf-8'); //меняем регистр всех букв на нижний
$Description = clearst($Description); //удаляем спецсимволы
$Description = preg_replace("#\s\(.*?\)#isu", '', $Description); //удаляем все остальные круглые скобки и их содержимое
sg('WIKIsearch.Query',$WIKIsearch);
sg('WIKIsearch.Description',$Description);
sg('WIKIsearch.file',$data_file);
sg('WIKIsearch.url',$url);
sg('WIKIsearch.img',$img);
say($Description,5);
}
}
|
chinfo00
|
Картинка-информер для рамки и других устройств
define('WIDTH', 800);
define('HEIGHT', 600);
$font="./cms/font/impact.ttf";
$image = imagecreatetruecolor(WIDTH,HEIGHT)
or die('Cannot create image');
$image = imageCreateFromPng("C:/_majordomo/htdocs/images/report_big.png");
if (getGlobal('WIFI.Online')=="1") {
imagettftext($image,20,0,370,50,0x00FF00,"$font",'Точка доступа "WI-FI" включена');
}else{
imagettftext($image,20,0,370,50,0xff3030,"$font",'Точка доступа "WI-FI" выключена');
}
imagettftext($image,36,0,50,510,0xFFFFFF,"$font","Дома ".gg('ThisComputer.TempHome').'°C, влажность '.gg('Kitchen.Humidity').'%.');
imagettftext($image,36,0,50,450,0xFFFFFF,"$font",gg('gw_fact.temperature').'°C, '.gg('gw_fact.weather_type').'.');
if (gg('Alarm00.AlarmTime') == gg('ThisComputer.timeNow')) { // Будильник 00
$alarmmsg=gg('Alarm00.AlarmSay');
$alarm="1";
$alarmname="Будильник ".gg('Alarm00.AlarmName');
}elseif (gg('Alarm01.AlarmTime') == gg('ThisComputer.timeNow')) {// Будильник 01
$alarmmsg=gg('Alarm01.AlarmSay');
$alarm="1";
$alarmname="Будильник ".gg('Alarm01.AlarmName');
}elseif (gg('Alarm02.AlarmTime') == gg('ThisComputer.timeNow')) {// Будильник 02
$alarmmsg=gg('Alarm02.AlarmSay');
$alarm="1";
$alarmname="Будильник ".gg('Alarm02.AlarmName');
}else{ //Иначе часы
$alarmmsg=gg('ThisComputer.timeNow');
$alarm="0";
$alarmname=gg('ThisComputer.Day');
}
if ($alarm =="1") { //Если будильник то
$sizefont="24";
$colorfont="0xffa500";
$WIDTHMSG="50";
$HEIGHTMSG="300";
$sizefont1="24";
$colorfont1="0xffa500";
$WIDTHMSG1="50";
$HEIGHTMSG1="250";
}else{ //Если будильника нет
$sizefont="124";
$colorfont="0xffa500";
$WIDTHMSG="220";
$HEIGHTMSG="350";
$sizefont1="44";
$colorfont1="0xffa500";
$WIDTHMSG1="220";
$HEIGHTMSG1="200";
}
if (gg('ThisComputer.NewVideoMessages') > 0) {
$alarmname="Новых видео сообщений: ".gg('ThisComputer.NewVideoMessages');
$sizefont1="34";
$colorfont1="0xffa500";
$WIDTHMSG1="130";
$HEIGHTMSG1="200";
}
if (gg('global.on') > 0) {
if (gg('global.title')) {
$alarmname=gg('global.title');
$sizefont1="34";
$colorfont1="0xffa500";
$WIDTHMSG1="50";
$HEIGHTMSG1="200";
}
}
imagettftext($image,$sizefont,0,$WIDTHMSG,$HEIGHTMSG,$colorfont,"$font",$alarmmsg);
imagettftext($image,$sizefont1,0,$WIDTHMSG1,$HEIGHTMSG1,$colorfont,"$font",$alarmname);
$res='';
if (gg('ThisComputer.danger')==1){
$colorstat="0xff3030";
$res.="Внимание!!! Проверьте статус системы!";
}else{
if (gg('Security.stateColor')=='green' && gg('System.stateColor')=='green' && gg('Communication.stateColor')=='green') {
$res='Все системы работают в штатном режиме. CPU: '.gg('ThisComputer.CPUCore2Load').'%';
$colorstat="0x00FF00";
} else {
if (gg('Security.stateColor')!='green') {
$colorstat="0xff3030";
$res.="Проблема безопасности: ".getGlobal('Security.stateDetails');
}
if (gg('System.stateColor')!='green') {
$res.="Системная проблема: ".getGlobal('System.stateDetails');
$colorstat="0xff3030";
}
if (gg('Communication.stateColor')!='green') {
$res.=" Проблема связи: ".getGlobal('Communication.stateDetails');
$colorstat="0xff3030";
}
}
}
if (gg('reg_2.level') == "0") $colortlevel="0x008b00";
if (gg('reg_2.level') == "1") $colortlevel="0x008b00";
if (gg('reg_2.level') == "2") $colortlevel="0xc0ff3e";
if (gg('reg_2.level') == "3") $colortlevel="0xcaff70";
if (gg('reg_2.level') == "4") $colortlevel="0xfff68f";
if (gg('reg_2.level') == "5") $colortlevel="0xffff00";
if (gg('reg_2.level') == "6") $colortlevel="0xff8247";
if (gg('reg_2.level') == "7") $colortlevel="0xff3030";
if (gg('reg_2.level') == "8") $colortlevel="0xcd2626";
if (gg('reg_2.level') == "9") $colortlevel="0x8b1a1a";
if (gg('reg_2.level') == "10") $colortlevel="0x8b1a1a";
imagettftext($image,30,0,50,60,0x0099FF,"$font",'USD: '.gg('cbr.USD'));
imagettftext($image,30,0,50,100,0x0099FF,"$font",'EURO: '.gg('cbr.EURO'));
imagettftext($image,20,0,50,580,$colorstat,"$font",gg('ThisComputer.somebodyHomeText'));
imagettftext($image,20,0,50,550,$colorstat,"$font",$res);
imagettftext($image,32,0,575,100,$colortlevel,"$font",'Пробки: '.gg('reg_2.level'));
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
|
chinfo01
|
Картинка-информер для рамки и других устройств
define('WIDTH', 800);
define('HEIGHT', 600);
$font="./cms/font/impact.ttf";
$image = imagecreatetruecolor(WIDTH,HEIGHT)
or die('Cannot create image');
$image = imageCreateFromPng("C:/_majordomo/htdocs/images/report_big.png");
imagettftext($image,36,0,50,450,0x9999FF,"$font",getGlobal('gw_fact.temperature').'°C, '.getGlobal('gw_fact.weather_type').'.');
if (gg('Alarm00.AlarmTime') == gg('ThisComputer.timeNow')) { // Будильник 00
$alarmmsg=gg('Alarm00.AlarmSay');
$alarm="1";
$alarmname="Будильник ".gg('Alarm00.AlarmName');
}elseif (gg('Alarm01.AlarmTime') == gg('ThisComputer.timeNow')) {// Будильник 01
$alarmmsg=gg('Alarm01.AlarmSay');
$alarm="1";
$alarmname="Будильник ".gg('Alarm01.AlarmName');
}elseif (gg('Alarm02.AlarmTime') == gg('ThisComputer.timeNow')) {// Будильник 02
$alarmmsg=gg('Alarm02.AlarmSay');
$alarm="1";
$alarmname="Будильник ".gg('Alarm02.AlarmName');
}else{ //Иначе погода
$alarmmsg=getGlobal('ThisComputer.TempHome').'°C '.getGlobal('Kitchen.Humidity').'%';
$alarm="0";
$alarmname='Завтра '.gg('gw_day1.day_weather_type');
}
if ($alarm =="1") { //Если будильник то
$sizefont="24";
$colorfont="0xffa500";
$WIDTHMSG="50";
$HEIGHTMSG="300";
$sizefont1="24";
$colorfont1="0xffa500";
$WIDTHMSG1="50";
$HEIGHTMSG1="250";
}else{ //Если будильника нет
$sizefont="124";
$colorfont="0xffa500";
$WIDTHMSG="80";
$HEIGHTMSG="350";
$sizefont1="24";
$colorfont1="0xffa500";
$WIDTHMSG1="50";
$HEIGHTMSG1="180";
}
if (gg('ThisComputer.NewVideoMessages') > 0) {
$alarmname="Новых видео сообщений: ".gg('ThisComputer.NewVideoMessages');
$sizefont1="34";
$colorfont1="0xffa500";
$WIDTHMSG1="130";
$HEIGHTMSG1="200";
}
if (gg('global.on') > 0) {
if (gg('global.title')) {
$alarmname=gg('global.title');
$sizefont1="34";
$colorfont1="0xffa500";
$WIDTHMSG1="50";
$HEIGHTMSG1="200";
}
}
imagettftext($image,$sizefont,0,$WIDTHMSG,$HEIGHTMSG,$colorfont,"$font",$alarmmsg);
imagettftext($image,$sizefont1,0,$WIDTHMSG1,$HEIGHTMSG1,$colorfont,"$font",$alarmname);
$res='';
if (gg('ThisComputer.danger')==1){
$colorstat="0xff3030";
$res.="Внимание!!! Проверьте статус системы!";
}else{
if (gg('Security.stateColor')=='green' && gg('System.stateColor')=='green' && gg('Communication.stateColor')=='green') {
$res='Все системы работают в штатном режиме. CPU: '.gg('ThisComputer.CPUCore2Load').'%';
$colorstat="0x00FF00";
} else {
if (gg('Security.stateColor')!='green') {
$colorstat="0xff3030";
$res.="Проблема безопасности: ".getGlobal('Security.stateDetails');
}
if (gg('System.stateColor')!='green') {
$res.="Системная проблема: ".getGlobal('System.stateDetails');
$colorstat="0xff3030";
}
if (gg('Communication.stateColor')!='green') {
$res.=" Проблема связи: ".getGlobal('Communication.stateDetails');
$colorstat="0xff3030";
}
}
}
if (gg('reg_2.level') == "0") $colortlevel="0x008b00";
if (gg('reg_2.level') == "1") $colortlevel="0x008b00";
if (gg('reg_2.level') == "2") $colortlevel="0xc0ff3e";
if (gg('reg_2.level') == "3") $colortlevel="0xcaff70";
if (gg('reg_2.level') == "4") $colortlevel="0xfff68f";
if (gg('reg_2.level') == "5") $colortlevel="0xffff00";
if (gg('reg_2.level') == "6") $colortlevel="0xff8247";
if (gg('reg_2.level') == "7") $colortlevel="0xff3030";
if (gg('reg_2.level') == "8") $colortlevel="0xcd2626";
if (gg('reg_2.level') == "9") $colortlevel="0x8b1a1a";
if (gg('reg_2.level') == "10") $colortlevel="0x8b1a1a";
imagettftext($image,32,0,575,100,$colortlevel,"$font",'Пробки: '.gg('reg_2.level'));
imagettftext($image,20,0,50,550,$colorstat,"$font",$res);
imagettftext($image,20,0,50,580,$colorstat,"$font",gg('ThisComputer.HomeStatus'));
imagettftext($image,30,0,50,60,0x0099FF,"$font",'USD: '.gg('cbr.USD'));
imagettftext($image,30,0,50,100,0x0099FF,"$font",'EURO: '.gg('cbr.EURO'));
imagettftext($image,20,0,490,50,0x00FF00,"$font",'Уровень громкости: '.gg('ThisComputer.volumeLevel'));
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
|
chinfo02
|
Картинка-информер для рамки и других устройств
define('WIDTH', 800);
define('HEIGHT', 600);
$font="./cms/font/impact.ttf";
$image = imagecreatetruecolor(WIDTH,HEIGHT)
or die('Cannot create image');
$image = imageCreateFromPng("C:/_majordomo/htdocs/images/report_big.png");
imagettftext($image,36,0,50,450,0x9999FF,"$font","Дома ".gg('ThisComputer.TempHome').'°C, влажность '.gg('Kitchen.Humidity').'%.');
if (gg('Alarm00.AlarmTime') == gg('ThisComputer.timeNow')) { // Будильник 00
$alarmmsg=gg('Alarm00.AlarmSay');
$alarm="1";
$alarmname="Будильник ".gg('Alarm00.AlarmName');
}elseif (gg('Alarm01.AlarmTime') == gg('ThisComputer.timeNow')) {// Будильник 01
$alarmmsg=gg('Alarm01.AlarmSay');
$alarm="1";
$alarmname="Будильник ".gg('Alarm01.AlarmName');
}elseif (gg('Alarm02.AlarmTime') == gg('ThisComputer.timeNow')) {// Будильник 02
$alarmmsg=gg('Alarm02.AlarmSay');
$alarm="1";
$alarmname="Будильник ".gg('Alarm02.AlarmName');
}else{ //Иначе погода
$alarmmsg=getGlobal('gw_fact.temperature').'°C ';
$alarm="0";
$alarmname='Завтра '.gg('gw_day1.day_weather_type');
}
if ($alarm =="1") { //Если будильник то
$sizefont="24";
$colorfont="0xffa500";
$WIDTHMSG="50";
$HEIGHTMSG="300";
$sizefont1="24";
$colorfont1="0xffa500";
$WIDTHMSG1="50";
$HEIGHTMSG1="250";
}else{ //Если будильника нет
$sizefont="124";
$colorfont="0xffa500";
$WIDTHMSG="280";
$HEIGHTMSG="350";
$sizefont1="24";
$colorfont1="0xffa500";
$WIDTHMSG1="50";
$HEIGHTMSG1="180";
}
if (gg('ThisComputer.NewVideoMessages') > 0) {
$alarmname="Новых видео сообщений: ".gg('ThisComputer.NewVideoMessages');
$sizefont1="34";
$colorfont1="0xffa500";
$WIDTHMSG1="130";
$HEIGHTMSG1="200";
}
if (gg('global.on') > 0) {
if (gg('global.title')) {
$alarmname=gg('global.title');
$sizefont1="34";
$colorfont1="0xffa500";
$WIDTHMSG1="50";
$HEIGHTMSG1="200";
}
}
imagettftext($image,$sizefont,0,$WIDTHMSG,$HEIGHTMSG,$colorfont,"$font",$alarmmsg);
imagettftext($image,$sizefont1,0,$WIDTHMSG1,$HEIGHTMSG1,$colorfont,"$font",$alarmname);
$res='';
if (gg('ThisComputer.danger')==1){
$colorstat="0xff3030";
$res.="Внимание!!! Проверьте статус системы!";
}else{
if (gg('Security.stateColor')=='green' && gg('System.stateColor')=='green' && gg('Communication.stateColor')=='green') {
$res='Все системы работают в штатном режиме. CPU: '.gg('ThisComputer.CPUCore2Load').'%';
$colorstat="0x00FF00";
} else {
if (gg('Security.stateColor')!='green') {
$colorstat="0xff3030";
$res.="Проблема безопасности: ".getGlobal('Security.stateDetails');
}
if (gg('System.stateColor')!='green') {
$res.="Системная проблема: ".getGlobal('System.stateDetails');
$colorstat="0xff3030";
}
if (gg('Communication.stateColor')!='green') {
$res.=" Проблема связи: ".getGlobal('Communication.stateDetails');
$colorstat="0xff3030";
}
}
}
// Цвет пробок
if (gg('reg_2.level') == "0") $colortlevel="0x008b00";
if (gg('reg_2.level') == "1") $colortlevel="0x008b00";
if (gg('reg_2.level') == "2") $colortlevel="0xc0ff3e";
if (gg('reg_2.level') == "3") $colortlevel="0xcaff70";
if (gg('reg_2.level') == "4") $colortlevel="0xfff68f";
if (gg('reg_2.level') == "5") $colortlevel="0xffff00";
if (gg('reg_2.level') == "6") $colortlevel="0xff8247";
if (gg('reg_2.level') == "7") $colortlevel="0xff3030";
if (gg('reg_2.level') == "8") $colortlevel="0xcd2626";
if (gg('reg_2.level') == "9") $colortlevel="0x8b1a1a";
if (gg('reg_2.level') == "10") $colortlevel="0x8b1a1a";
// Выводим пробки
imagettftext($image,32,0,575,100,$colortlevel,"$font",'Пробки: '.gg('reg_2.level'));
imagettftext($image,20,0,50,580,$colorstat,"$font",gg('ThisComputer.HomeStatus'));
imagettftext($image,20,0,50,550,$colorstat,"$font",$res);
imagettftext($image,30,0,50,60,0x0099FF,"$font",'USD: '.gg('cbr.USD'));
imagettftext($image,30,0,50,100,0x0099FF,"$font",'EURO: '.gg('cbr.EURO'));
imagettftext($image,20,0,490,50,0x00FF00,"$font",'Уровень громкости: '.gg('ThisComputer.volumeLevel'));
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
|
chinfo03
|
Картинка-информер для рамки и других устройств
// Прописываем заголовок PNG-изображения
header('Content-type: image/png');
// Создаем изображение
$im = imagecreatetruecolor(800, 600);
$im = imageCreateFromPng("C:/_majordomo/htdocs/images/report_big.png");
// Шрифт текста
$font = './cms/font/impact.ttf';
// Размер шрифта
$font_size = 32;
// Ширина области для вывода текста
$width_text = 700;
// Выводим состояние WIFI
if (getGlobal('WIFI.Online')=="1") {
imagettftext($im,20,0,370,50,0x00FF00,"./cms/font/impact.ttf",'Точка доступа "WI-FI" включена');
}else{
imagettftext($im,20,0,370,50,0xff3030,"./cms/font/impact.ttf",'Точка доступа "WI-FI" выключена');
}
// Длинный многострочный текст, который нужно разбить на строки нужной нам длины
if (gg('global.on') > 0) {
if (gg('global.title')) {
$text=gg('global.title');
}else{
$text = gg('mycalendar.msg');
}
}else{
$text = gg('mycalendar.msg');
}
// Способ выравнивания текста
//$align = "left";
$align = "center";
//$align = "right";
// Заливаем изображение цветом
imagefill($im, 1, 1, 0x000000);
// Разбиваем наш текст на массив слов
$arr = explode(' ', $text);
// Возращенный текст с нужными переносами строк, пока пустая
$ret = "";
// Перебираем наш массив слов
foreach($arr as $word)
{
// Временная строка, добавляем в нее слово
$tmp_string = $ret.' '.$word;
// Получение параметров рамки обрамляющей текст, т.е. размер временной строки
$textbox = imagettfbbox($font_size, 0, $font, $tmp_string);
// Если временная строка не укладывается в нужные нам границы, то делаем перенос строки, иначе добавляем еще одно слово
if($textbox[2] > $width_text)
$ret.=($ret==""?"":"\n").$word;
else
$ret.=($ret==""?"":" ").$word;
}
if($align=="left")
{
// Накладываем возращенный многострочный текст на изображение
imagettftext($im, $font_size ,0 , 50, 180, 0x8888FF, "$font", $ret);
}
else
{
// Разбиваем снова на массив строк уже подготовленный текст
$arr = explode("\n", $ret);
// Расчетная высота смещения новой строки
$height_tmp = 0;
//Выводить будем построчно с нужным смещением относительно левой границы
foreach($arr as $str)
{
// Размер строки
$testbox = imagettfbbox($font_size, 0, $font, $str);
// Рассчитываем смещение
if($align=="center")
$left_x = round(($width_text - ($testbox[2] - $testbox[0]))/2);
else
$left_x = round($width_text - ($testbox[2] - $testbox[0]));
// Накладываем текст на картинку с учетом смещений
imagettftext($im, $font_size ,0 , 50 + $left_x, 180 + $height_tmp, 0x8888FF, $font, $str); // 50 - это отступы от края
// Смещение высоты для следующей строки
$height_tmp = $height_tmp + 50;
}
}
// Устанавливаем цвет пробок
if (gg('reg_2.level') == "0") $colortlevel="0x008b00";
if (gg('reg_2.level') == "1") $colortlevel="0x008b00";
if (gg('reg_2.level') == "2") $colortlevel="0xc0ff3e";
if (gg('reg_2.level') == "3") $colortlevel="0xcaff70";
if (gg('reg_2.level') == "4") $colortlevel="0xfff68f";
if (gg('reg_2.level') == "5") $colortlevel="0xffff00";
if (gg('reg_2.level') == "6") $colortlevel="0xff8247";
if (gg('reg_2.level') == "7") $colortlevel="0xff3030";
if (gg('reg_2.level') == "8") $colortlevel="0xcd2626";
if (gg('reg_2.level') == "9") $colortlevel="0x8b1a1a";
if (gg('reg_2.level') == "10") $colortlevel="0x8b1a1a";
// Выводим пробки
imagettftext($im,32,0,575,100,$colortlevel,"$font",'Пробки: '.gg('reg_2.level'));
//Курс валют
imagettftext($im,30,0,50,60,0x0099FF,"$font",'USD: '.gg('cbr.USD'));
imagettftext($im,30,0,50,100,0x0099FF,"$font",'EURO: '.gg('cbr.EURO'));
// Выводим изображение в окне браузера
imagepng($im);
// Освобождает память занятую изображением
imagedestroy($im);
|
ChumbySay
|
Воспроизводит фразу на рамке через yandex (новое)
if (gg("ThisComputer.Weekdays")){ //Если будни
if ($params['level']){
$level=$params['level'];
}else{
$level="1";
}
if ($params['ph']){
$ph=$params['ph'];
}else{
$ph="Проверка сообщений";
}
$emotion="good";
$device=gg("Chumby.ip");
if (gg("InternetAccess")==1){
$lang='en';
if (defined('SETTINGS_SITE_LANGUAGE')) {
$lang=SETTINGS_SITE_LANGUAGE;
}
if (defined('SETTINGS_VOICE_LANGUAGE')) {
$lang=SETTINGS_VOICE_LANGUAGE;
}
$ykey=gg("ThisComputer.YandexKeyTTS");
if (gg("Chumby.Online")==1 && gg("Chumby.VoiceLevel")<=$level && gg("ThisComputer.minMsgLevel")<=$level) {
$file="./cached/YandexTTS.mp3";
$url="http://tts.voicetech.yandex.net/generate?text=".urlencode($ph)."&format=mp3&lang=".$lang."&speaker=jane&key=".$ykey."&emotion=".$emotion;
$dest_file = @fopen($file, "w");
$resource = curl_init();
curl_setopt($resource, CURLOPT_URL, $url);
curl_setopt($resource, CURLOPT_FILE, $dest_file);
curl_setopt($resource, CURLOPT_HEADER, 0);
curl_exec($resource);
curl_close($resource);
fclose($dest_file);
getURL("http://".$device."/cgi-bin/zmote_play.sh?http://192.168.0.77/".$file, 1);
sg('Chumby.say', $ph);
}
}/*else{
if (gg("NightMode.active")==0){
getURL("http://".$device."/cgi-bin/zmote_play.sh?http://192.168.0.77/sounds/dingdong.mp3", 1);
}
}*/
}
|
ChumbySay_google
|
Воспроизводит фразу на рамке через google (умерло)
$ph=$params;
$lang='en';
if (defined('SETTINGS_SITE_LANGUAGE')) {
$lang=SETTINGS_SITE_LANGUAGE;
}
if (defined('SETTINGS_VOICE_LANGUAGE')) {
$lang=SETTINGS_VOICE_LANGUAGE;
}
$google_file=GoogleTTS($ph, $lang);
if ($google_file) {
@touch($google_file);
// Путь переделываем в ссылку
$gfstrong = $google_file;
$oldst = array("C:\\_majordomo\\htdocs/");
$newst = array("http://192.168.0.77/");
$newgfstrong = str_replace($oldst, $newst, $gfstrong);
getURL('http://'. getGlobal('Chumby.ip').'/cgi-bin/zmote_play.sh?'.$newgfstrong, 0);
setGlobal('Chumby.say', $ph);
}
|
info
|
Картинка-информер для телеграмм
define('WIDTH', 230);
define('HEIGHT', 230);
$image = imagecreatetruecolor(WIDTH,HEIGHT)
or die('Cannot create image');
$image = imageCreateFromPng("C:/_majordomo/htdocs/images/report.png");
// Шрифт текста
$font = './cms/font/impact.ttf';
// Размер шрифта
$font_size = 16;
// Ширина области для вывода текста
$width_text = 190;
$width_text2 = 190;
$alarmmsg=gg('ClockChime.time');
$alarmname=gg('ThisComputer.Day');
$align = "center";
$text = 'Дома '.gg('ThisComputer.TempHome').'°C, '.gg('Kitchen.Humidity').'%, на улице '.gg('gw_fact.temperature').'°C '.gg('gw_fact.weather_type');
$text2 = $alarmmsg.' '.$alarmname;
$sizefont="16";
$colorfont="0xFFFFFF";
if (gg('ThisComputer.NewVideoMessages') > 0) {
$text2="Новых сообщений: ".gg('ThisComputer.NewVideoMessages');
$sizefont="16";
$colorfont="0xcd2626";
$text="";
}
if (gg('global.on') > 0) {
if (gg('global.title')) {
$text2=gg('global.title');
$sizefont="16";
$colorfont="0xcd2626";
$text="";
}
}
$res='';
if (gg('Security.stateColor')=='green' && gg('System.stateColor')=='green' && gg('Communication.stateColor')=='green') {
$res='Все системы работают';
$colorstat="0x00FF00";
} else {
if (gg('Security.stateColor')!='green') {
$colorstat="0xff3030";
$res.="Проблема безопасности";
}
if (gg('System.stateColor')!='green') {
$res.="Системная проблема";
$colorstat="0xff3030";
}
if (gg('Communication.stateColor')!='green') {
$res.=" Проблема связи";
$colorstat="0xff3030";
}
}
$hdd=gg('ThisComputer.UsedSpaceHDD');
if ($hdd == "0") $colortlevel="0x008b00";
if ($hdd > "10") $colortlevel="0x008b00";
if ($hdd > "20") $colortlevel="0xc0ff3e";
if ($hdd > "30") $colortlevel="0xcaff70";
if ($hdd > "40") $colortlevel="0xfff68f";
if ($hdd > "50") $colortlevel="0xffff00";
if ($hdd > "60") $colortlevel="0xff8247";
if ($hdd > "70") $colortlevel="0xff3030";
if ($hdd > "80") $colortlevel="0xcd2626";
if ($hdd > "90") $colortlevel="0x8b1a1a";
if ($hdd == "100") $colortlevel="0x8b1a1a";
imagettftext($image,12,0,20,20,0x0099FF,"$font",'Загрузка CPU: '.gg('ThisComputer.CPUCore2Load').'%');
imagettftext($image,12,0,20,40,0x0099FF,"$font",'Темп. CPU: '.gg('ThisComputer.CPUCore2Temp').'°C');
imagettftext($image,12,0,150,20,$colortlevel,"$font",'HDD: '.$hdd."%");
imagettftext($image,10,0,20,205,$colorstat,"$font",gg('ThisComputer.HomeStatus'));
imagettftext($image,10,0,20,220,$colorstat,"$font",$res);
// Заливаем изображение цветом
//imagefill($image, 1, 1, 0xFFF729);
// Разбиваем наш текст на массив слов
$arr = explode(' ', $text);
// Разбиваем наш текст на массив слов
$arr2 = explode(' ', $text2);
// Возращенный текст с нужными переносами строк, пока пустая
$ret = "";
// Перебираем наш массив слов
foreach($arr as $word)
{
// Временная строка, добавляем в нее слово
$tmp_string = $ret.' '.$word;
// Получение параметров рамки обрамляющей текст, т.е. размер временной строки
$textbox = imagettfbbox($font_size, 0, $font, $tmp_string);
// Если временная строка не укладывается в нужные нам границы, то делаем перенос строки, иначе добавляем еще одно слово
if($textbox[2] > $width_text)
$ret.=($ret==""?"":"\n").$word;
else
$ret.=($ret==""?"":" ").$word;
}
// Разбиваем снова на массив строк уже подготовленный текст
$arr = explode("\n", $ret);
// Расчетная высота смещения новой строки
$height_tmp = 0;
//Выводить будем построчно с нужным смещением относительно левой границы
foreach($arr as $str)
{
// Размер строки
$testbox = imagettfbbox($font_size, 0, $font, $str);
// Рассчитываем смещение
if($align=="center")
$left_x = round(($width_text - ($testbox[2] - $testbox[0]))/2);
else
$left_x = round($width_text - ($testbox[2] - $testbox[0]));
// Накладываем текст на картинку с учетом смещений
imagettftext($image, $font_size ,0 , 20 + $left_x, 130 + $height_tmp, 0xffa500, $font, $str); // 50 - это отступы от края
// Смещение высоты для следующей строки
$height_tmp = $height_tmp + 20;
}
// Перебираем наш массив слов
foreach($arr2 as $word2)
{
// Временная строка, добавляем в нее слово
$tmp_string2 = $ret2.' '.$word2;
// Получение параметров рамки обрамляющей текст, т.е. размер временной строки
$textbox2 = imagettfbbox($font_size, 0, $font, $tmp_string2);
// Если временная строка не укладывается в нужные нам границы, то делаем перенос строки, иначе добавляем еще одно слово
if($textbox2[2] > $width_text2)
$ret2.=($ret2==""?"":"\n").$word2;
else
$ret2.=($ret2==""?"":" ").$word2;
}
// Разбиваем снова на массив строк уже подготовленный текст
$arr2 = explode("\n", $ret2);
// Расчетная высота смещения новой строки
$height_tmp2 = 0;
//Выводить будем построчно с нужным смещением относительно левой границы
foreach($arr2 as $str2)
{
// Размер строки
$testbox2 = imagettfbbox($font_size, 0, $font, $str2);
// Рассчитываем смещение
if($align=="center")
$left_x2 = round(($width_text2 - ($testbox2[2] - $testbox2[0]))/2);
else
$left_x2 = round($width_text2 - ($testbox2[2] - $testbox2[0]));
// Накладываем текст на картинку с учетом смещений
imagettftext($image, $sizefont ,0 , 20 + $left_x2, 80 + $height_tmp2, $colorfont, $font, $str2); // 50 - это отступы от края
// Смещение высоты для следующей строки
$height_tmp2 = $height_tmp2 + 20;
}
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
|
KodiSay
|
Воспроизводит фразу на KODI
if ($params['level']){
$level=$params['level'];
}else{
$level="1";
}
if ($params['ph']){
$ph=$params['ph'];
}else{
$ph="Проверка сообщений";
}
if ($level<10){
$title="Алиса сообщает:";
}
if ($level>=10){
$title="Важное сообщение:";
}
$device=gg("XBMC.ip");
$port=gg("XBMC.port");
$url="http://".$device.":".$port."/jsonrpc?request={\"id\":1,\"jsonrpc\":\"2.0\",\"method\":\"GUI.ShowNotification\",\"params\":{\"title\":\"".urlencode($title)."\",\"message\":\"".urlencode($ph)."\"}}";
if (gg("XBMC.Online")==1 && $level>0){
getURL($url, 0);
}else{
}
|
Screensaver
|
echo "<html><head>";
echo "<META HTTP-EQUIV=\"REFRESH\" CONTENT=\"30;URL=/objects/?script=Screensaver\">";
echo "<title>МAJORDOMO</title></head>";
echo "<body text=\"#FFFFFF\" bgcolor=\"#000000\">";
echo "<center>";
echo "<img src=\"/objects/?script=Screensaver01\" align=\"middle\" alt=\"Информер\">";
echo "</body></html>";
|
Screensaver01
|
define('WIDTH', 1024);
define('HEIGHT', 600);
$font="./cms/font/impact.ttf";
$image = imagecreatetruecolor(WIDTH,HEIGHT)
or die('Cannot create image');
imagettftext($image,36,0,250,450,0xFFFFFF,"$font",getGlobal('gw_fact.temperature').'°C, '.getGlobal('gw_fact.weather_type').'.');
imagettftext($image,36,0,150,510,0xFFFFFF,"$font","Дома ".getGlobal('Corridor.Temperature').'°C, влажность '.getGlobal('Kitchen.Humidity').'%.');
// часы
$alarmmsg=gg('ThisComputer.timeNow');
$sizefont="124";
$colorfont="0xffa500";
$WIDTHMSG="320";
$HEIGHTMSG="350";
$sizefont1="44";
$colorfont1="0xffa500";
$WIDTHMSG1="520";
$HEIGHTMSG1="200";
imagettftext($image,$sizefont,0,$WIDTHMSG,$HEIGHTMSG,$colorfont,"$font",$alarmmsg);
imagettftext($image,$sizefont1,0,$WIDTHMSG1,$HEIGHTMSG1,$colorfont,"$font",$alarmname);
$res='';
if (gg('Security.stateColor')=='green' && gg('System.stateColor')=='green' && gg('Communication.stateColor')=='green') {
$res='Все системы работают в штатном режиме';
$colorstat="0x00FF00";
} else {
if (gg('Security.stateColor')!='green') {
$colorstat="0xff3030";
$res.=" Проблема безопасности: ".getGlobal('Security.stateDetails');
}
if (gg('System.stateColor')!='green') {
$res.=" Системная проблема: ".getGlobal('System.stateDetails');
$colorstat="0xff3030";
}
if (gg('Communication.stateColor')!='green') {
$res.=" Проблема связи: ".getGlobal('Communication.stateDetails');
$colorstat="0xff3030";
}
}
if (gg('reg_2.level') == "0") $colortlevel="0x008b00";
if (gg('reg_2.level') == "1") $colortlevel="0x008b00";
if (gg('reg_2.level') == "2") $colortlevel="0xc0ff3e";
if (gg('reg_2.level') == "3") $colortlevel="0xcaff70";
if (gg('reg_2.level') == "4") $colortlevel="0xfff68f";
if (gg('reg_2.level') == "5") $colortlevel="0xffff00";
if (gg('reg_2.level') == "6") $colortlevel="0xff8247";
if (gg('reg_2.level') == "7") $colortlevel="0xff3030";
if (gg('reg_2.level') == "8") $colortlevel="0xcd2626";
if (gg('reg_2.level') == "9") $colortlevel="0x8b1a1a";
if (gg('reg_2.level') == "10") $colortlevel="0x8b1a1a";
imagettftext($image,20,0,0,580,$colorstat,"$font",gg('ThisComputer.somebodyHomeText'));
imagettftext($image,20,0,80,550,$colorstat,"$font",$res);
imagettftext($image,32,0,675,100,$colortlevel,"$font",'Пробки: '.gg('reg_2.level'));
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
|
SendSticker_v
|
Отправка стикера
$stickerbody = $params['stickerbody'];
$url='127.0.0.1/objects/?script=Sticker_v&stickerbody='.urlencode($stickerbody);
//генерим и скачиваем картинку
$png="./cached/alice/stiker_v.png";
$dest_file = @fopen($png, "w");
$resource = curl_init();
curl_setopt($resource, CURLOPT_URL, $url);
curl_setopt($resource, CURLOPT_FILE, $dest_file);
curl_setopt($resource, CURLOPT_HEADER, 0);
curl_exec($resource);
curl_close($resource);
fclose($dest_file);
//отправляем картинку в телеграмм
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$telegram_module->sendImageToAll('C:/_majordomo/htdocs/cached/alice/stiker_v.png');
|
Sticker_v
|
Картинка-информер для телеграмм
$stickerbody = $params['stickerbody'];
define('WIDTH', 230);
define('HEIGHT', 230);
$image = imagecreatetruecolor(WIDTH,HEIGHT)
or die('Cannot create image');
$image = imageCreateFromPng("C:/_majordomo/htdocs/images/report_v.png");
// Шрифт текста
$font = './cms/font/impact.ttf';
// Размер шрифта
$font_size = 16;
$colorfont="0x7749c8";
// Ширина области для вывода текста
$width_text = 140;
$align = "center";
$text = $stickerbody;
// Заливаем изображение цветом
//imagefill($image, 1, 1, 0xFFF729);
// Разбиваем наш текст на массив слов
$arr = explode(' ', $text);
// Возращенный текст с нужными переносами строк, пока пустая
$ret = "";
// Перебираем наш массив слов
foreach($arr as $word)
{
// Временная строка, добавляем в нее слово
$tmp_string = $ret.' '.$word;
// Получение параметров рамки обрамляющей текст, т.е. размер временной строки
$textbox = imagettfbbox($font_size, 0, $font, $tmp_string);
// Если временная строка не укладывается в нужные нам границы, то делаем перенос строки, иначе добавляем еще одно слово
if($textbox[2] > $width_text)
$ret.=($ret==""?"":"\n").$word;
else
$ret.=($ret==""?"":" ").$word;
}
// Разбиваем снова на массив строк уже подготовленный текст
$arr = explode("\n", $ret);
// Расчетная высота смещения новой строки
$height_tmp = 0;
//Выводить будем построчно с нужным смещением относительно левой границы
foreach($arr as $str)
{
// Размер строки
$testbox = imagettfbbox($font_size, 0, $font, $str);
// Рассчитываем смещение
if($align=="center")
$left_x = round(($width_text - ($testbox[2] - $testbox[0]))/2);
else
$left_x = round($width_text - ($testbox[2] - $testbox[0]));
// Накладываем текст на картинку с учетом смещений
imagettftext($image, $font_size ,0 , 15 + $left_x, 35 + $height_tmp, $colorfont, $font, $str); // 50 - это отступы от края
// Смещение высоты для следующей строки
$height_tmp = $height_tmp + 20;
}
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
|
WaterLeakSticker
|
Картинка-информер "датчик протечки воды"
$stickerbody = $params['stickerbody'];
// Прописываем заголовок PNG-изображения
header('Content-type: image/png');
// Создаем изображение
$im = imagecreatetruecolor(230, 300);
$im = imageCreateFromPng("C:/_majordomo/htdocs/images/var.png");
// Шрифт текста
$font = './cms/font/impact.ttf';
// Размер шрифта
$font_size = 16;
// Ширина области для вывода текста
$width_text = 170;
imagettftext($im,18,0,55,45,0xFFF729,"$font","ВНИМАНИЕ ");
// Длинный многострочный текст, который нужно разбить на строки нужной нам длины
$text = $stickerbody;
// Способ выравнивания текста
//$align = "left";
$align = "center";
//$align = "right";
// Заливаем изображение цветом
imagefill($im, 1, 1, 0xFFF729);
// Разбиваем наш текст на массив слов
$arr = explode(' ', $text);
// Возращенный текст с нужными переносами строк, пока пустая
$ret = "";
// Перебираем наш массив слов
foreach($arr as $word)
{
// Временная строка, добавляем в нее слово
$tmp_string = $ret.' '.$word;
// Получение параметров рамки обрамляющей текст, т.е. размер временной строки
$textbox = imagettfbbox($font_size, 0, $font, $tmp_string);
// Если временная строка не укладывается в нужные нам границы, то делаем перенос строки, иначе добавляем еще одно слово
if($textbox[2] > $width_text)
$ret.=($ret==""?"":"\n").$word;
else
$ret.=($ret==""?"":" ").$word;
}
if($align=="left")
{
// Накладываем возращенный многострочный текст на изображение
imagettftext($im, $font_size ,0 , 50, 180, 0x000000, "$font", $ret);
}
else
{
// Разбиваем снова на массив строк уже подготовленный текст
$arr = explode("\n", $ret);
// Расчетная высота смещения новой строки
$height_tmp = 0;
//Выводить будем построчно с нужным смещением относительно левой границы
foreach($arr as $str)
{
// Размер строки
$testbox = imagettfbbox($font_size, 0, $font, $str);
// Рассчитываем смещение
if($align=="center")
$left_x = round(($width_text - ($testbox[2] - $testbox[0]))/2);
else
$left_x = round($width_text - ($testbox[2] - $testbox[0]));
// Накладываем текст на картинку с учетом смещений
imagettftext($im, $font_size ,0 , 20 + $left_x, 230 + $height_tmp, 0x000000, $font, $str); // 50 - это отступы от края
// Смещение высоты для следующей строки
$height_tmp = $height_tmp + 20;
}
}
// Выводим изображение в окне браузера
imagepng($im);
// Освобождает память занятую изображением
imagedestroy($im);
|
Bedroom1Light1
|
Управляет основным освещением Спальня один.
if (gg('DebugMode.active') == 1) {
DebMes('Скрипт Bedroom1Light1');
}
if ($params['say_level']){
$say_level = $params['say_level'];
if ($say_level >10){
$say_level = 10;
}
}else{
$say_level=0;
}
if (getGlobal('ManualMode.active') == 1) {
if (getGlobal('SecurityArmedMode.active') == 0) {
if (getGlobal('Bedroom1.light1') == 1) {
if ($say_level>0){
say('Освещение Спальня один включено.',$say_level);
}
getURL((String) 'http://'.(String) getGlobal('Controller00.ip').(String) '/?PIN8=on', 0);
} else {
if ($say_level>0){
say('Освещение Спальня один выключено.',$say_level);
}
getURL((String) 'http://'.(String) getGlobal('Controller00.ip').(String) '/?PIN9=on', 0);
}
} else {
setGlobal('Bedroom1.light1', '0');
say('Освещение Спальня один выключено, так как включена сигнализация',$say_level);
getURL((String) 'http://'.(String) getGlobal('Controller00.ip').(String) '/?PIN9=on', 0);
}
} else {
say('Не могу выполнить Вашу команду, так как система работает в ручном режиме',$say_level);
}
|
Bedroom1Light2
|
Управляет основным освещением Спальня один "Ночной режим".
if (gg('DebugMode.active') == 1) {
DebMes('Скрипт Bedroom1Light2');
}
if ($params['say_level']){
$say_level = $params['say_level'];
if ($say_level >10){
$say_level = 10;
}
}else{
$say_level=0;
}
if (getGlobal('ManualMode.active') == 1) {
if (getGlobal('SecurityArmedMode.active') == 0) {
if (getGlobal('Bedroom1.light2') == 1) {
if ($say_level>0){
say('Освещение Спальня один "Ночной режим" включено.',$say_level);
}
getURL((String) 'http://'.(String) getGlobal('Controller00.ip').(String) '/?PIN6=on', 0);
} else {
if ($say_level>0){
say('Освещение Спальня один "Ночной режим" выключено.',$say_level);
}
getURL((String) 'http://'.(String) getGlobal('Controller00.ip').(String) '/?PIN9=on', 0);
}
} else {
setGlobal('Bedroom1.light2', '0');
say('Освещение Спальня один "Ночной режим" выключено, так как включена сигнализация',$say_level);
getURL((String) 'http://'.(String) getGlobal('Controller00.ip').(String) '/?PIN9=on', 0);
}
} else {
say('Не могу выполнить Вашу команду, так как система работает в ручном режиме',$say_level);
}
|
Bedroom2Light1
|
Управляет освещением "спальня - подсветка мебели"
if (gg('DebugMode.active') == 1) {
DebMes('Скрипт Bedroom2Light1');
}
if ($params['say_level']){
$say_level = $params['say_level'];
if ($say_level >10){
$say_level = 10;
}
}else{
$say_level=0;
}
if (gg('ManualMode.active') == 1) {
if (gg('SecurityArmedMode.active') == 0) {
if (gg('Bedroom2.light1')) {
SetGlobal("bedroom202.lstatus",1);
if ($say_level>0){
say('Освещение "спальня - подсветка мебели" включено', $say_level);
}
} else {
SetGlobal("bedroom202.lstatus",0);
if ($say_level>0){
say('Освещение "спальня - подсветка мебели" выключено', $say_level);
}
}
} else {
setGlobal('Bedroom2.light1', '0');
SetGlobal("bedroom202.lstatus",0);
say('Освещение "спальня - подсветка мебели" выключено, так как включена сигнализация',$say_level);
}
} else {
say('Не могу выполнить Вашу команду, так как система работает в ручном режиме',$say_level);
}
|
Bedroom2Light2
|
Управляет освещением "спальня - настольная лампа"
if (gg('DebugMode.active') == 1) {
DebMes('Скрипт Bedroom2Light2');
}
if ($params['say_level']){
$say_level = $params['say_level'];
if ($say_level >10){
$say_level = 10;
}
}else{
$say_level=0;
}
if (gg('ManualMode.active') == 1) {
if (gg('SecurityArmedMode.active') == 0) {
if (gg('Bedroom2.light2')) {
SetGlobal("bedroom201.lstatus",1);
if ($say_level>0){
say('Освещение "спальня - настольная лампа" включено', $say_level);
}
} else {
SetGlobal("bedroom201.lstatus",0);
if ($say_level>0){
say('Освещение "спальня - настольная лампа" выключено', $say_level);
}
}
} else {
setGlobal('Bedroom2.light2', '0');
say('Освещение "спальня - настольная лампа" выключено, так как включена сигнализация',$say_level);
SetGlobal("bedroom201.lstatus",0);
}
} else {
say('Не могу выполнить Вашу команду, так как система работает в ручном режиме',$say_level);
}
|
BigCorridorLight
|
Управляет освещением в большом коридоре
if (gg('DebugMode.active') == 1) {
DebMes('Скрипт BigCorridorLight');
}
if ($params['say_level']){
$say_level = $params['say_level'];
if ($say_level >10){
$say_level = 10;
}
}else{
$say_level=0;
}
if (gg('ManualMode.active') == 1) {
if (gg('SecurityArmedMode.active') == 0) {
if (gg('BigCorridor.light1') !=0) {
sg('corridor003.lstatus',1);
if ($say_level>0){
say('Освещение коридор включено.',$say_level);
}
}else{
sg('corridor003.lstatus',0);
if ($say_level>0){
say('Освещение коридор выключено.',$say_level);
}
}
} else {
sg('BigCorridor.light1', '0');
sg('corridor003.lstatus',0);
say('Освещение коридор выключено, так как включена сигнализация',$say_level);
}
} else {
say('Не могу выполнить Вашу команду, так как система работает в ручном режиме',$say_level);
}
|
CorridorLight
|
Управляет освещением в коридоре
if (gg('DebugMode.active') == 1) {
DebMes('Скрипт CorridorLight');
}
if ($params['say_level']){
$say_level = $params['say_level'];
if ($say_level >10){
$say_level = 10;
}
}else{
$say_level=0;
}
if (gg('ManualMode.active') == 1) {
if (gg('SecurityArmedMode.active') == 0) {
if (getGlobal('Corridor.light1') !=0 && getGlobal('Corridor.light2') !=0) {
setGlobal('corridor000.lstatus',1);
if ($say_level>0){
say('Освещение коридор включено.',$say_level);
}
}
if (getGlobal('Corridor.light1') == 0 && getGlobal('Corridor.light2') != 0) {
setGlobal('corridor001.lstatus',0);
setGlobal('corridor002.lstatus',1);
if ($say_level>0){
say('Освещение коридор включено.',$say_level);
}
}
if (getGlobal('Corridor.light1') != 0 && getGlobal('Corridor.light2') == 0) {
setGlobal('corridor002.lstatus',0);
setGlobal('corridor001.lstatus',1);
if ($say_level>0){
say('Освещение коридор включено.',$say_level);
}
}
if (getGlobal('Corridor.light1') == 0 && getGlobal('Corridor.light2') == 0) {
setGlobal('corridor000.lstatus',0);
if ($say_level>0){
say('Освещение коридор выключено.',$say_level);
}
}
} else {
setGlobal('Corridor.light1', '0');
setGlobal('corridor001.lstatus',0);
setGlobal('Corridor.light2', '0');
setGlobal('corridor002.lstatus',0);
say('Освещение коридор выключено, так как включена сигнализация',$say_level);
}
} else {
say('Не могу выполнить Вашу команду, так как система работает в ручном режиме',$say_level);
}
|
KitchenLight1
|
Управляет освещением "кухня - подсветка мебели один"
if (gg('DebugMode.active') == 1) {
DebMes('Скрипт KitchenLight1');
}
if ($params['say_level']){
$say_level = $params['say_level'];
if ($say_level >10){
$say_level = 10;
}
}else{
$say_level=0;
}
if (gg('ManualMode.active') == 1) {
if (gg('SecurityArmedMode.active') == 0) {
if (gg('Kitchen.light1') != 0) {
sg('kitchen001.lstatus', '1');
if ($say_level>0){
say('Освещение "кухня - подсветка мебели один" включено.',$say_level);
}
} else {
sg('kitchen001.lstatus', '0');
if ($say_level>0){
say('Освещение "кухня - подсветка мебели один" выключено.',$say_level);
}
}
} else {
sg('Kitchen.light1', '0');
say('Освещение "кухня - подсветка мебели один" выключено, так как включена сигнализация',$say_level);
sg('kitchen001.lstatus', '0');
}
} else {
say('Не могу выполнить Вашу команду, так как система работает в ручном режиме',$say_level);
}
|
KitchenLight2
|
Управляет освещением "кухня - подсветка мебели два"
if (gg('DebugMode.active') == 1) {
DebMes('Скрипт KitchenLight2');
}
if ($params['say_level']){
$say_level = $params['say_level'];
if ($say_level >10){
$say_level = 10;
}
}else{
$say_level=0;
}
if (gg('ManualMode.active') == 1) {
if (gg('SecurityArmedMode.active') == 0) {
if (gg('Kitchen.light2') != 0) {
sg('kitchen002.lstatus', '1');
if ($say_level>0){
say('Освещение "кухня - подсветка мебели два" включено.',$say_level);
}
} else {
sg('kitchen002.lstatus', '0');
if ($say_level>0){
say('Освещение "кухня - подсветка мебели два" выключено.',$say_level);
}
}
} else {
sg('kitchen002.lstatus', '0');
say('Освещение "кухня - подсветка мебели два" выключено, так как включена сигнализация',$say_level);
sg('kitchen002.lstatus', '0');
}
} else {
say('Не могу выполнить Вашу команду, так как система работает в ручном режиме',$say_level);
}
|
KitchenLight3
|
Управляет основным освещением на кухне.
if (gg('DebugMode.active') == 1) {
DebMes('Скрипт KitchenLight3');
}
if ($params['say_level']){
$say_level = $params['say_level'];
if ($say_level >10){
$say_level = 10;
}
}else{
$say_level=0;
}
if (gg('ManualMode.active') == 1) {
if (gg('SecurityArmedMode.active') == 0) {
if (gg('Kitchen.light3') != 0) {
sg('kitchen003.lstatus', '1');
if ($say_level>0){
say('Освещение "кухня" включено.',$say_level);
}
} else {
sg('kitchen003.lstatus', '0');
if ($say_level>0){
say('Освещение "кухня" выключено.',$say_level);
}
}
} else {
sg('Kitchen.light3', '0');
say('Освещение "кухня" выключено, так как включена сигнализация',$say_level);
sg('kitchen003.lstatus', '0');
}
} else {
say('Не могу выполнить Вашу команду, так как система работает в ручном режиме',$say_level);
}
|
LightAll
|
Запускает все скрипты (кроме LightAllOn LightAllOff) обработки освещения
//say(LANG_GENERAL_SETTING_UP_LIGHTS,2);
runScript("Bedroom1Light1",array("say_level"=>0));
runScript('Bedroom1Light2',array("say_level"=>0));
runScript('Bedroom2Light1',array("say_level"=>0));
runScript('Bedroom2Light2',array("say_level"=>0));
runScript('CorridorLight',array("say_level"=>0));
runScript('KitchenLight1',array("say_level"=>0));
runScript('KitchenLight2',array("say_level"=>0));
runScript('KitchenLight3',array("say_level"=>0));
|
LightAllOff
|
Выключает все освещение
if (getGlobal('ManualMode.active') == 1) { //Если режим автомат вкл
//Устанавливаем свойство объектов освещение в помещении
$Rooms=getObjectsByClass("Rooms");
$total=count($Rooms);
for($i=0;$i<$total;$i++) {
$Rooms[$i]['Title']=getGlobal($Rooms[$i]['TITLE'].'.Title');
$Rooms[$i]['light1']=getGlobal($Rooms[$i]['TITLE'].'.light1');
$Rooms[$i]['light2']=getGlobal($Rooms[$i]['TITLE'].'.light2');
$Rooms[$i]['light3']=getGlobal($Rooms[$i]['TITLE'].'.light3');
if ($Rooms[$i]['light1']==1) {
$res_Rooms[]=$Rooms[$i]['Title'];
SetGlobal($Rooms[$i]['TITLE'].'.light1',0);
}
if ($Rooms[$i]['light2']==1) {
$res_Rooms[]=$Rooms[$i]['Title'];
SetGlobal($Rooms[$i]['TITLE'].'.light2',0);
}
if ($Rooms[$i]['light3']==1) {
$res_Rooms[]=$Rooms[$i]['Title'];
SetGlobal($Rooms[$i]['TITLE'].'.light3',0);
}
}
//Освещение коридор выключен
setGlobal('corridor000.lstatus',0);
//Освещение Спальня один выключен Bedroom1
getURL((String) 'http://'.(String) getGlobal('Controller00.ip').(String) '/?PIN9=on', 0);
sleep(1);
//Освещение выключен Kitchen
setGlobal('kitchen001.lstatus', '0');
sleep(1);
setGlobal('kitchen002.lstatus', '0');
sleep(1);
setGlobal('kitchen003.lstatus', '0');
sleep(1);
//Освещение "спальня - подсветка мебели" выключено.
getURL((String) 'http://'.(String) getGlobal('Controller00.ip').(String) '/?PIN2=off', 0);
sleep(1);
//Освещение "спальня - настольная лампа" выключено.',5);
getURL((String) 'http://'.(String) getGlobal('Controller00.ip').(String) '/?PIN3=off', 0);
say('Освещение выключено.',5);
} else {
say('Не могу выполнить Вашу команду, так как система работает в ручном режиме',5);
}
|
LightAllOn
|
Включает все освещение
if (gg('DebugMode.active') == 1) {
DebMes('Скрипт LightAllOn');
}
if (gg('ManualMode.active') == 1) { //Если режим автомат вкл
if (gg('SecurityArmedMode.active') == 0) { //Если сигнализация выкл
//Устанавливаем свойство объектов
$Rooms=getObjectsByClass("Rooms");
$total=count($Rooms);
for($i=0;$i<$total;$i++) {
$Rooms[$i]['Title']=getGlobal($Rooms[$i]['TITLE'].'.Title');
$Rooms[$i]['light1']=getGlobal($Rooms[$i]['TITLE'].'.light1');
$Rooms[$i]['light2']=getGlobal($Rooms[$i]['TITLE'].'.light2');
$Rooms[$i]['light3']=getGlobal($Rooms[$i]['TITLE'].'.light3');
if ($Rooms[$i]['light1']==0) {
$res_Rooms[]=$Rooms[$i]['Title'];
SetGlobal($Rooms[$i]['TITLE'].'.light1',1);
say("Включаю свет ".$Rooms[$i]['Title'],1);
}
if ($Rooms[$i]['light2']==0) {
$res_Rooms[]=$Rooms[$i]['Title'];
SetGlobal($Rooms[$i]['TITLE'].'.light2',1);
say("Включаю свет ".$Rooms[$i]['Title'],1);
}
if ($Rooms[$i]['light2']==0) {
$res_Rooms[]=$Rooms[$i]['Title'];
SetGlobal($Rooms[$i]['TITLE'].'.light3',1);
say("Включаю свет ".$Rooms[$i]['Title'],1);
}
}
//Освещение коридор включен
setGlobal('corridor000.lstatus',1);
//Освещение Спальня один включен Bedroom1
getURL((String) 'http://'.(String) getGlobal('Controller00.ip').(String) '/?PIN8=on', 0);
sleep(1);
//Освещение Спальня "Ночной режим" включено Bedroom1
getURL((String) 'http://'.(String) getGlobal('Controller00.ip').(String) '/?PIN6=on', 0);
sleep(1);
//Освещение выключен Kitchen
setGlobal('kitchen001.lstatus', '1');
sleep(1);
setGlobal('kitchen002.lstatus', '1');
sleep(1);
setGlobal('kitchen003.lstatus', '1');
sleep(1);
//Освещение "спальня - подсветка мебели" включено.
getURL((String) 'http://'.(String) getGlobal('Controller00.ip').(String) '/?PIN2=on', 0);
sleep(1);
//Освещение "спальня - настольная лампа" включено.',5);
getURL((String) 'http://'.(String) getGlobal('Controller00.ip').(String) '/?PIN3=on', 0);
say('Освещение включено.',5);
} else {
say('Не могу выполнить Вашу команду, так как включена сигнализация',5);
}
} else {
say('Не могу выполнить Вашу команду, так как система работает в ручном режиме',5);
}
|
Read5News
|
Проговаривает последние 5 новостей.
$last_id=getGlobal('ThisComputer.LastNewsId')-5;
$values=SQLSelect("SELECT * FROM rss_items WHERE ID >".$last_id);
if($values) {
$total=count($values);
$maxnews = 5;
$startfrom = 0;
if ($total > $maxnews){
$startfrom = $total - $maxnews;
say("Новостей больше $maxnews",1);
} else {
say("Новости",1);
}
for($i=$startfrom;$i<$total;$i++){
$sql="SELECT * FROM rss_items WHERE ID =".$values[$i]['ID'];
$value=SQLSelectOne($sql);
say($value['TITLE'].".",1);
};
$last_id=$value['ID'];
setGlobal('ThisComputer.LastNewsId',$last_id);
} else {
say("Нет новых новостей",1);
};
|
readHandSwitchLightMode
|
Проговаривает где свет в ручном режиме
$Rooms=getObjectsByClass("Rooms");
$total=count($Rooms);
for($i=0;$i<$total;$i++) {
if (gg($Rooms[$i]['TITLE'].'.HandSwitchLightMode')=='1') {
$res_room[]=gg($Rooms[$i]['TITLE'].'.title');
}
}
if ($res_room){
$Text=implode(", ",$res_room)." освещение в ручном режиме.";
}else{
$Text="Освещение управляется автоматически.";
}
say ($Text,2);
|
ReadNews
|
Проговаривает последние новости.
$last_id=getGlobal('ThisComputer.LastNewsId');
$values=SQLSelect("SELECT * FROM rss_items WHERE ID >".$last_id);
if($values) {
$total=count($values);
$maxnews = 30;
$startfrom = 0;
if ($total > $maxnews){
$startfrom = $total - $maxnews;
say("Новостей больше $maxnews",1);
} else {
say("Новости",1);
}
for($i=$startfrom;$i<$total;$i++){
$sql="SELECT * FROM rss_items WHERE ID =".$values[$i]['ID'];
$value=SQLSelectOne($sql);
say($value['TITLE'].".",1);
};
$last_id=$value['ID'];
setGlobal('ThisComputer.LastNewsId',$last_id);
} else {
say("Нет новых новостей",1);
};
|
readWeatherToday
|
Читает прогноз погоды
if (gg('DebugMode.active') == 1) {
DebMes('scripts readWeatherToday');
}
if (!function_exists('pForm')) {
function pForm($n, $form1, $form2, $form5) {
$n = abs($n) % 100;
$n1 = $n % 10;
if ($n > 10 && $n < 20) return $form5;
if ($n1 > 1 && $n1 < 5) return $form2;
if ($n1 == 1) return $form1;
return $form5;
}
}
$fact_tm=gg('gw_fact.temperature');
$month_num=(int)date('m');
$average_temp=gg("month-".$month_num.".average_temperature");
$difference=$average_temp-$fact_tm;
if ($difference>7) { $metcast.='Холодно, оденьтесь теплее.';
} elseif ($difference>5) { $metcast.='Прохладно, оденьтесь теплее.';
} elseif ($difference>-5) { $metcast.='Обычная и вполне нормальная температура для этого времени года.';
} elseif ($difference>-15) { $metcast.='Слишком тепло.';
}
//сравнение
$day_today=(int)date('j');
$month_num=(int)date('m');
$day_yesterday=$day_today-1;
$ob_today=("month-".$month_num.".temp_day_".$day_today);
$ob_yesterday=("month-".$month_num.".temp_day_".$day_yesterday);
$temp_today=gg($ob_today);
$temp_yesterday=gg($ob_yesterday);
if ($temp_yesterday < $temp_today){
$tt=$temp_today-$temp_yesterday;
say("На ".$tt."°C теплее чем вчера",3);
}
if ($temp_yesterday > $temp_today){
$tt=$temp_yesterday-$temp_today;
say("На ".$tt."°C холоднее чем вчера",3);
}
if ($temp_yesterday == $temp_today){
say ("Температура как вчера",3);
}
say($metcast,9);
say("Сейчас на улице ".$fact_tm.'°C, '.gg('gw_fact.weather_type').'.',9);
$weather=gg('gw_day0.day_weather_type');
$wind_speed=gg('gw_day0.day_wind_speed');
//Ветер
if ($wind_speed > "9") {
say("Внимание!!! Предупреждаю о сильном ветре !!!",11);
say("Скорость ветра по прогнозу ".$wind_speed." ".pForm($wind_speed, 'метр', 'метра', 'метров')." в секунду.",9);
if ($wind_speed > "11") {
say("Это очень сильный ветер",11);
}
} elseif ($wind_speed != "0") {
say("Скорость ветра по прогнозу ".$wind_speed." ".pForm($wind_speed, 'метр', 'метра', 'метров')." в секунду.",9);
} elseif ($wind_speed == "0") {
say("Ветра нет.",9);
}
//Поиск дождя
$haystack = $weather;
$needle = 'дождь';
$pos = strripos($haystack, $needle);
if ($pos === false) {
$pos = strripos($haystack, $needle);
say("На сегодня обещали ".$weather,9);
} else {
say("На сегодня обещали дождь. Не забудьте зонт!",9);
//отправляем картинку в телеграмм
rs('SendTelegram',array('img'=>'C:/_majordomo/htdocs/images/yweather/zont.png'));
if ($weather == "ясно") {
say("На улице зонт Вам не понадобится.",9);
}
}
say("Завтра днём синоптики обещают ".gg('gw_day1.temp_day').'°C, '.gg('gw_day1.day_weather_type').'.',9);
say("Восход в ".gg('ThisComputer.SunRiseTime').', закат в '.gg('ThisComputer.SunSetTime').'.',9);
//отправляем картинку в телеграмм
$img="C:/_majordomo/htdocs/images/yweather/".gg("gisw_fact.img").".png";
rs('SendTelegram',array('img'=>$img));
$msg="Сейчас в вашем районе: ".round(gg('narodmon_34797.value')).'°C, ';
say($msg,9);
$msgtxt="Дома ".gg('ThisComputer.TempHome').'°C, влажность воздуха '.gg('Kitchen.Humidity').'%.';
say($msgtxt,9);
$str="rs(SendSticker_v, array('stickerbody' => '".$msgtxt."'));";
setTimeOut("HomeTempStickerTimer",$str,60);
if (!function_exists('file_download')) {
function file_download ($file, $url) {
//скачиваем картинку
$dest_file = @fopen($file, "w");
$resource = curl_init();
curl_setopt($resource, CURLOPT_URL, $url);
curl_setopt($resource, CURLOPT_FILE, $dest_file);
curl_setopt($resource, CURLOPT_HEADER, 0);
curl_exec($resource);
curl_close($resource);
fclose($dest_file);
return("Файл успешно загружен.");
}
}
$url="http://127.0.0.1/jpgraph/?p=narodmon_34797.value&type=1d&width=420&&title=Temp VO";
$file="./cached/Temp/TempVO.png";
file_download ($file, $url);
$img="C:/_majordomo/htdocs/cached/Temp/TempVO.png";
rs('SendTelegram',array('img'=>$img));
|
reportStatus
|
Сценарий проговаривает текущее состояние системы
$res='';
if (gg('Security.stateColor')=='green' && gg('System.stateColor')=='green' && gg('Communication.stateColor')=='green' && gg('ThisComputer.danger')=='0') {
$res='Все системы работают в штатном режиме';
$saylevel=10;
//Отправим стикер
rs('SendSticker',array('Sticker'=>'ok'));
} else {
if (gg('Security.stateColor')!='green') {
$res.="Внимание!!! Проблема безопасности: ".getGlobal('Security.stateDetails');
$saylevel=10;
//Отправим стикер
rs('SendSticker',array('Sticker'=>'bad'));
}
if (gg('System.stateColor')!='green') {
$res.="Внимание!!! Системная проблема: ".getGlobal('System.stateDetails');
$saylevel=10;
//Отправим стикер
rs('SendSticker',array('Sticker'=>'bad'));
}
if (gg('Communication.stateColor')!='green') {
$res.="Внимание!!! Проблема связи: ".getGlobal('Communication.stateDetails');
$saylevel=10;
//Отправим стикер
rs('SendSticker',array('Sticker'=>'bad'));
}
if (gg('ThisComputer.danger')=='1') {
$res.="Внимание!!! Включен режим опасность ";
$saylevel=10;
//Отправим стикер
rs('SendSticker',array('Sticker'=>'bad'));
}
}
say($res,$saylevel);
if (gg('ManualMode.active')!='0') {
say("Включен автоматический режим.",0);
}else{
say("Внимание!!! Включен ручной режим.",10);
}
if (gg('ThisComputer.danger')!='0') {
say("Режим ОПАСНОСТЬ.",10);
say("Данный режим означает, что последовательная система опроса датчиков выключена",10);
}
rs('SMSSum');
rs('readHandSwitchLightMode');
|
SayTempCPU
|
Проговаривает температуру проца
say("Температура процессора: ".gg("ThisComputer.CPUCore1Temp")."°C.",9);
|
SayTimeHour
|
Говорит время каждый час
if (timeIs("'00:00")) {
say(getRandomLine(says_time).' полночь.', 10);
}
if (timeIs("01:00")) {
say(getRandomLine(says_time).' час ночи.', 10);
}
if (timeIs("02:00")) {
say(getRandomLine(says_time).' два часа ночи.', 10);
}
if (timeIs("03:00")) {
say(getRandomLine(says_time).' три часа ночи.', 10);
}
if (timeIs("04:00")) {
say(getRandomLine(says_time).' четыре часа ночи.', 10);
}
if (timeIs("05:00")) {
say(getRandomLine(says_time).' пять часов утра.', 10);
}
if (timeIs("06:00")) {
say(getRandomLine(says_time).' шесть часов утра.', 10);
}
if (timeIs("07:00")) {
say(getRandomLine(says_time).' семь часов утра.', 10);
}
if (timeIs("08:00")) {
say(getRandomLine(says_time).' восемь часов утра.', 10);
}
if (timeIs("09:00")) {
say(getRandomLine(says_time).' девять часов утра.', 10);
}
if (timeIs("10:00")) {
say(getRandomLine(says_time).' десять часов.', 10);
}
if (timeIs("11:00")) {
say(getRandomLine(says_time).' одиннадцать часов.', 10);
}
if (timeIs("12:00")) {
say(getRandomLine(says_time).' полдень.', 10);
}
if (timeIs("13:00")) {
say(getRandomLine(says_time).' час дня.', 10);
}
if (timeIs("14:00")) {
say(getRandomLine(says_time).' два часа дня.', 10);
}
if (timeIs("15:00")) {
say(getRandomLine(says_time).' три часа дня.', 10);
}
if (timeIs("16:00")) {
say(getRandomLine(says_time).' четыре часа дня.', 10);
}
if (timeIs("17:00")) {
say(getRandomLine(says_time).' пять часов вечера.', 10);
}
if (timeIs("18:00")) {
say(getRandomLine(says_time).' шесть часов вечера.', 10);
}
if (timeIs("19:00")) {
say(getRandomLine(says_time).' семь часов вечера.', 10);
}
if (timeIs("20:00")) {
say(getRandomLine(says_time).' восемь часов вечера.', 10);
}
if (timeIs("21:00")) {
say(getRandomLine(says_time).' девять часов вечера.', 10);
}
if (timeIs("22:00")) {
say(getRandomLine(says_time).' десять часов вечера.', 10);
}
if (timeIs("23:00")) {
say(getRandomLine(says_time).' одиннадцать часов вечера.', 10);
}
|
sayTodayAgenda
|
Сценарий проговаривает сегодняшние события
if (file_exists('./modules/app_calendar/app_calendar.class.php')) {
include_once('./modules/app_calendar/app_calendar.class.php');
$calendar=new app_calendar();
$calendar->usual($out);
$events=$out['EVENTS_TODAY'];
$say_phrase='';
if (is_array($events)) {
$total=count($events);
$tasks=array();
$cals=array();
for($i=0;$i<$total;$i++) {
if ($events[$i]['IS_TASK']=='1' && $events[$i]['IS_DONE']!='1') {
$tasks[]=$events[$i]['TITLE'];
} elseif ($events[$i]['IS_TASK']!='1') {
$cals[]=$events[$i]['TITLE'];
}
}
$total_tasks=count($tasks);
if ($total_tasks) {
$say_phrase.="У вас на сегодня запланированы задачи. ";
for($i=0;$i<$total_tasks;$i++) {
$say_phrase.=($i+1).". ".$tasks[$i].". ";
}
}
// else {
// say("Никаких дел не запланировано.",1);
// }
$total_cals=count($cals);
if ($total_cals) {
$say_phrase.=("Сегодняшние события. ");
for($i=0;$i<$total_cals;$i++) {
$say_phrase.=$cals[$i].'. ';
}
}
}
$events=$out['EVENTS_PAST'];
if ($events[0]['TITLE']) {
$say_phrase.=" Так же напоминаю о пропущенных задачах. ";
$total_tasks=count($events);
for($i=0;$i<$total_tasks;$i++) {
$say_phrase.=($i+1).". ".$events[$i]['TITLE'].". ";
}
}
}
if ($say_phrase) {
say($say_phrase,10);
setGlobal("mycalendar.msg", $say_phrase);
//Поиск дней рождений
$haystack = $say_phrase;
$needle = 'ень рожден';
$pos = strripos($haystack, $needle);
if ($pos === false) {
$pos = strripos($haystack, $needle);
// say("Нет ДР",9);
} else {
$msgtxt="Не забудьте про день рождения!";
say($msgtxt,11);
//отправляем картинку про день рождения
$str="rs(SendSticker_v, array('stickerbody' => '".$msgtxt."'));";
setTimeOut("TodayAgendaStickerTimer",$str,90);
}
// Готовим сообщение
if (getGlobal('mycalendar.on') == 1) {
$msg = $say_phrase;
if (getGlobal('mycalendar.sms') == 1) {
setGlobal("mycalendar.sms_outbox", $msg);
// Отправить сообщения всем подписаным
runScript(SmsSend, array("value" => $msg) );
}
}
}
rs('NewMessage');
|
sayToDo
|
Сценарий проговаривает текущие дела
if (gg('DebugMode.active') == 1) {
DebMes('Скрипт sayToDo');
}
callMethod("ToDo.view");
if (gg ("TodoList.txt")!==""){
say("Запланированные дела: ".gg("TodoList.txt"),10);
}
|
SMSSum
|
Сообщает сколько было отправлено коротких сообщений
if (gg('DebugMode.active') == 1) {
DebMes('скрипт SMSSum');
}
if (!function_exists('pForm')) {
function pForm($n, $form1, $form2, $form5) {
$n = abs($n) % 100;
$n1 = $n % 10;
if ($n > 10 && $n < 20) return $form5;
if ($n1 > 1 && $n1 < 5) return $form2;
if ($n1 == 1) return $form1;
return $form5;
}
}
//Устанавливаем начальное значение 0
sg('ThisComputer.SMSSum',0);
//Получаем список пользователей
$Users=getObjectsByClass("Users");
$total=count($Users);
for($i=0;$i<$total;$i++) {
$Users[$i]['SMSSum']=gg($Users[$i]['TITLE'].'.SMSSum');
$Users[$i]['SMSMax']=gg($Users[$i]['TITLE'].'.SMSMax');
if ($Users[$i]['SMSMax']!="0") {
if ($Users[$i]['SMSSum']) {
$Sum=gg('ThisComputer.SMSSum')+$Users[$i]['SMSSum'];
sg('ThisComputer.SMSSum',$Sum);
}
}
}
if ($Sum==""){
say ('Сегодня я еще не отправляла СМС',1);
}else{
say ('Сегодня было отправлено '.$Sum.' СМС '.pForm($Sum, 'сообщение', 'сообщения', 'сообщений'),1);
}
|
StickerToDo
|
Отсылает "дела" в картинках
$todotext = gg("TodoList.txt");
$array = explode(".",$todotext);
for ($i=0; $i<count($array); $i++) {
if ($array[$i]){
rs(SendSticker_v, array('stickerbody' => $array[$i]));
}
}
|
Wunderlist
|
Проговаривает список задач Wunderlist не обновляя его
if (gg('DebugMode.active') == 1) {
DebMes ('scripts Wunderlist');
}
if (gg('leonid.WunderlistTasksToday')) {
$res.="Список задач Wunderlist: ".gg('leonid.WunderlistTasksToday');
} else {
$res="Список задач Wunderlist пуст.";
}
say($res,12);
|
Diagnostics
|
Диагностика
/** Склонение существительных с числительными
* @param int $n число
* @param string $form1 Единственная форма: 1 секунда
* @param string $form2 Двойственная форма: 2 секунды
* @param string $form5 Множественная форма: 5 секунд
* @return string Правильная форма
*/
if (!function_exists('pluralForm')) {
function pluralForm($n, $form1, $form2, $form5) {
$n = abs($n) % 100;
$n1 = $n % 10;
if ($n > 10 && $n < 20) return $form5;
if ($n1 > 1 && $n1 < 5) return $form2;
if ($n1 == 1) return $form1;
return $form5;
}
}
$AliceDevice=getObjectsByClass("HomeDevice");
$total=count($AliceDevice);
for($i=0;$i<$total;$i++) {
$AliceDevice[$i]['AliceDev']=gg($AliceDevice[$i]['TITLE'].'.AliceDev');
$AliceDevice[$i]['Online']=gg($AliceDevice[$i]['TITLE'].'.Online');
$AliceDevice[$i]['statusText']=gg($AliceDevice[$i]['TITLE'].'.statusText');
if ($AliceDevice[$i]['Online']!=1 && $AliceDevice[$i]['AliceDev']==1) {
$res_AliceDevice[]=$AliceDevice[$i]['statusText'];
}
}
if ($res_AliceDevice){
$res_AliceDeviceText="Не работает ".implode(", ",$res_AliceDevice);
say($res_AliceDeviceText,0);
}
$tempSensors=getObjectsByClass("tempSensors");
$total=count($tempSensors);
for($i=0;$i<$total;$i++) {
$tempSensors[$i]['LinkedRoom']=gg($tempSensors[$i]['TITLE'].'.LinkedRoom');
$tempSensors[$i]['alive']=gg($tempSensors[$i]['TITLE'].'.alive');
if ($tempSensors[$i]['alive']==0) {
$res_tempSensors[]=gg($tempSensors[$i]['LinkedRoom'].".Title");
}
}
if ($res_tempSensors){
$res_tempSensorsText="Не работает термодатчик в помещении ".implode(", ",$res_tempSensors);
say($res_tempSensorsText,10);
}
$humiditySensors=getObjectsByClass("humiditySensors");
$total=count($humiditySensors);
for($i=0;$i<$total;$i++) {
$humiditySensors[$i]['LinkedRoom']=gg($humiditySensors[$i]['TITLE'].'.LinkedRoom');
$humiditySensors[$i]['alive']=gg($humiditySensors[$i]['TITLE'].'.alive');
if ($humiditySensors[$i]['alive']==0) {
$res_humiditySensors[]=gg($humiditySensors[$i]['LinkedRoom'].".Title");
}
}
if ($res_humiditySensors){
$res_humiditySensorsText="Не работает гигрометр в помещении ".implode(", ",$res_humiditySensors);
say($res_humiditySensorsText,10);
}
$MotionSensor=getObjectsByClass("inhouseMovementSensors");
$total=count($MotionSensor);
for($i=0;$i<$total;$i++) {
$MotionSensor[$i]['LinkedRoom']=gg($MotionSensor[$i]['TITLE'].'.LinkedRoom');
$MotionSensor[$i]['updatedTimestamp']=gg($MotionSensor[$i]['TITLE'].'.updatedTimestamp');
$update=time()-$MotionSensor[$i]['updatedTimestamp'];
if ($update>"86400") {
$res_MotionSensor[]=gg($MotionSensor[$i]['LinkedRoom'].".Title");
}
}
if ($res_MotionSensor){
$res_MotionSensorText="Датчик движения в помещении ".implode(", ",$res_MotionSensor)." давно не отправлял данные";
say($res_MotionSensorText,0);
}
/*
//Проверяем как давно обновилась погода с яндекеса
$ywtimestamp=strtotime(getGlobal("yw_setting.data_update"));
if ( $ywtimestamp === FALSE){
say("Отсутствует информация об обновлении погоды с яндекса",10);
}else{
if ($ywtimestamp<time()){
$ywupdate=time()-$ywtimestamp;
$ywupdate=($ywupdate/60/60);
$ywupdate=round($ywupdate);
say("Прогноз с яндекса обновлялся ".$ywupdate." ".pluralForm($ywupdate, 'час', 'часа', 'часов')." назад",1);
}else{
say("Данные об обновлении погоды с яндекса не корректны",10);
}
}
*/
//Проверяем как давно обновилась погода с Open Weather Map
$owdate=strtotime(getGlobal("ow_day0.date"));
if ( $owdate === FALSE){
say("Отсутствует информация об обновлении погоды c Open Weather Map",10);
}else{
if ($owdate<time()){
$owdate=time()-$owdate;
$owdate=($owdate/24/60/60);
$owdate=round($owdate);
if ($owdate==0){
say("Прогноз c Open Weather Map обновился сегодня",1);
}else{
say("Последний раз прогноз c Open Weather Map обновился ".$owdate." ".pluralForm($owdate, 'день', 'дня', 'дней')." назад",1);
}
}else{
say("Данные об обновлении прогноза погоды c Open Weather Map не корректны",10);
}
}
|
HumidityChanged
|
Средняя влажность по квартире
if (gg('DebugMode.active') == 1) {
say('scripts HumidityChanged');
}
$Rooms=getObjectsByClass("Rooms");
$total=count($Rooms);
$Humidity=0;
if (gg('ThisComputer.danger')!=1){//Если нет статуса danger
for($i=0;$i<$total;$i++) {
$Rooms[$i]['Title']=gg($Rooms[$i]['TITLE'].'.Title');
$Rooms[$i]['Humidity']=gg($Rooms[$i]['TITLE'].'.Humidity');
if ($Rooms[$i]['Humidity']>=gg('ThisComputer.RoomsMaxHumidity') && $Rooms[$i]['Humidity']<100) {
$msg="Влажность в ".$Rooms[$i]['Title']." ".$Rooms[$i]['Humidity'];
say("Внимание!!! Зафиксированна высокая влажность в помещении ".$Rooms[$i]['Title'],9);
say("Гигрометр показывает в ".$Rooms[$i]['Title']." ".$Rooms[$i]['Humidity']."%",10);
say("Максимальное значение ".gg('ThisComputer.RoomsMaxHumidity')."%",9);
// Отправить сообщения всем подписаным
rs(SmsSend, array("value" => $msg) );
sg('ThisComputer.danger',1);//Устанавливаем флаг danger
//Отправим стикер
rs('SendSticker',array('Sticker'=>'bad'));
}
if ($Rooms[$i]['Humidity']>1) {
$Humidity+=(float)$Rooms[$i]['Humidity'];
$tot++;
}
}
if ($Humidity<100 && $Humidity>0){
$Humidity=round($Humidity/$tot);
}else{
$Humidity="ER";
}
sg('ThisComputer.HumidityHome',$Humidity);
}
|
isHome
|
Проговаривает кто дома
$user=getObjectsByClass("Users");
$total=count($user);
for($i=0;$i<$total;$i++) {
$user[$i]['isHome']=getGlobal($user[$i]['TITLE'].'.isHome');
$user[$i]['user']=getGlobal($user[$i]['TITLE'].'.NAME');
if ($user[$i]['isHome']) {
$res_user[]=$user[$i]['user'];
}
}
if ($res_user){
// $isHomeText="Сейчас дома: ".implode(", ",$res_user);
$isHomeText=getRandomLine(is_home)." ".implode(", ",$res_user);
$somebodyText="Дома: ".implode(", ",$res_user);
rs(SawYou);
}else{
$somebodyText="Известных мне нет.";
$isHomeText="Из тех, кого я знаю, здесь никого нет.";
}
//если изменился статус то сообщаем
if ($somebodyText != gg("somebody")){
say ($isHomeText,0);
rs('SendTelegram',array('message'=>$isHomeText));
if ($res_user == 0){ // никого не знаю
// Отправляем стикер печаль
rs('SendSticker',array('Sticker'=>'sad'));
}
}
SetGlobal("somebody",$somebodyText);
clearTimeOut('isHome');
//Будем проверять каждые 5 минут
SetTimeOut('isHome','rs(isHome);',300);
|
isHomeDevice
|
Проговаривает состояние устройств пользователей дома
$Device=getObjectsByClass("UserDevice");
$total=count($Device);
for($i=0;$i<$total;$i++) {
$Device[$i]['Online']=getGlobal($Device[$i]['TITLE'].'.Online');
$Device[$i]['Text']=getGlobal($Device[$i]['TITLE'].'.statusText');
if ($Device[$i]['Online']=="1") {
$res_Device[]=$Device[$i]['Text'];
}
}
if ($res_Device){
$DeviceText="Включенные устройства: ".implode(", ",$res_Device);
}else{
$DeviceText="Все устройства отключены.";
$user=getObjectsByClass("Users");
$total=count($user);
for($i=0;$i<$total;$i++) {
SetGlobal($user[$i]['TITLE'].'.isHome',0);
}
}
say($DeviceText);
|
LightDark
|
Корректирует светло|темно на основании восход|закат
$SunRiseTime = getGlobal('ThisComputer.SunRiseTime');
$LightMin = getGlobal('ThisComputer.LightMin');
$SunSetTime = getGlobal('ThisComputer.SunSetTime');
$DarkMin = getGlobal('ThisComputer.DarkMin');
$DarkTime=date('H:i', strtotime("-".$DarkMin." minutes", strtotime($SunSetTime)));
$LightTime=date('H:i', strtotime("+".$LightMin." minutes", strtotime($SunRiseTime)));
setGlobal('ThisComputer.LightTime', $LightTime);
setGlobal('ThisComputer.DarkTime', $DarkTime);
|
NewMessage
|
Отправляет/Снимает на TX433 "New Message!!!"
if (getGlobal('Controller00.Msg') == 1) {
if (file_exists('./modules/app_calendar/app_calendar.class.php')) {
include_once('./modules/app_calendar/app_calendar.class.php');
$calendar=new app_calendar();
$calendar->usual($out);
$events=$out['EVENTS_TODAY'];
$say_phrase='';
if (is_array($events)) {
getURL((String) 'http://'.(String) getGlobal('Controller00.ip').(String) '/?MSG=on', 0);
}else{
getURL((String) 'http://'.(String) getGlobal('Controller00.ip').(String) '/?MSG=off', 0);
}
}
}
|
no_internet
|
Скрипт информирует об отсутствии подключения к сети Интернет
if (is_array($params)) {
$service=($params['service']);
} else {
$service;
}
$timer=gg("no_internet_info_timer"); //читаем время последнего отключения
if (gg('ThisComputer.InternetAccess') != '1'){ //Если нет интернета
$counter=gg("no_internet_info_counter")+1;
sg("no_internet_info_counter",$counter);
if($counter<=2){
say("При выполнении запроса ".$service." требуется подключение к сети Интернет.", 1);
sg("inet00.ystatus",0);
sg("red100.hystatus",1);
}
if($counter>4){
if (time() < $timer+1200) {//если не прошло 20 минут
say("Все еще нет подключения к сети Интернет.", 0);
}else{
say("Уже больше 20 минут нет подключения к сети Интернет.", 5);
say("Как только появиться, я сразу сообщу.", 2);
sg("no_internet_info_timer",time());
}
}
}else{
say("Связь с сетью Интернет восстановлена.",5);
sg("no_internet_info_counter",1);
sg("inet00.hystatus",1);
sg("red100.hystatus",0);
}
|
PsExec
|
PSTools
$comp=$params['comp'];
$cmd=$params['cmd'];
$comp='Comp2';
$cmd='C:\Progra~2\VideoLAN\VLC\vlc.exe';
$user=gg($comp.".User");
$pass=gg($comp.".Pass");
$ip=gg($comp.".ip");
$app.='PsExec \\\\'.$ip.' -u '.$user.' -p '.$pass.' '.$cmd;
echo $app;
//safe_Exec($app);
|
readHomeTemp
|
Рассказывает про температуру дома
if (gg('DebugMode.active') == 1) {
DebMes('scripts readHomeTemp');
}
say("Средняя температура дома ".gg('ThisComputer.TempHome').'°C, влажность воздуха '.getGlobal('Kitchen.Humidity').'%.',15);
//отправляем картинку с температурой
$msgtxt="Дома ".gg('ThisComputer.TempHome').'°C, влажность '.getGlobal('Kitchen.Humidity').'%.';
$str="rs(SendSticker_v, array('stickerbody' => '".$msgtxt."'));";
setTimeOut("TempStickerTimer",$str,60);
|
Reboot
|
Перезагружает комп Алисы.
say ('Сейчас буду пробовать перезагрузиться.',5);
//Отправим стикер
rs('SendSticker',array('Sticker'=>'incomprehensibly'));
say ('Для начала переведу систему в ручной режим.',5);
setGlobal('ManualMode.active', '0');
//exec ('shutdown /r');
safe_exec ('sudo reboot');
say ('Перезапуск моей системы займет некоторое время.',13);
say ('Не отдавайте команд, пока я не загружусь.',13);
|
RebootRouter
|
Перезагружает роутер если нет интернета
if (gg('ManualMode.active') == 1) {
if (gg('SecurityArmedMode.active') == 0) {
if (gg('Router.AutoReboot') == 1) {
if (gg('Router.statuscolor') == "red") {
say("Похоже что проблема с устройством ".gg('Router.statusText'),5);
say("Устройство ".gg('Router.statusText')." ".gg('Router.status'),5);
}else{
if (gg('Router.AutoRebootTriger') < gg('Router.AutoRebootTrigerMax')) {
$AutoRebootTriger=gg('Router.AutoRebootTriger') + 1;
if (gg('Router.AutoRebootTriger') == 1)say("Попытаемся перезагрузить.",5);
if (gg('Router.AutoRebootTriger') == 2)say("Попробуем еще раз.",5);
if (gg('Router.AutoRebootTriger') == 3)say("Возможно с третьей попытки.",5);
if (gg('Router.AutoRebootTriger') == 4)say("Похоже перезапуск не помогает. Еще раз, для верности.",5);
say('Перезагружаю основной роутер.',5);
sg('Router.AutoRebootTriger', $AutoRebootTriger);
getURL(gg('Router.CommandComp'), 0);
}
}
} else {
say('Если бы Вы включили автоматический перезапуск роутера, я бы могла попробовать решить проблему.',5);
say('Могу посоветовать проверить балланс у провайдера и перезагрузить роутер вручную.',5);
say("Устройство ".gg('Router.statusText')." ".gg('Router.status'),5);
}
}
} else {
say('Не могу перегрузить роутер.Система работает в ручном режиме.',5);
}
|
reglament
|
Запускает всякие регламенты.
//Отправим стикер
rs('SendSticker',array('Sticker'=>'work'));
say("Выполняю оптимизацию для новостных лент",2);
SQLExec("DELETE FROM rss_items WHERE TO_DAYS(NOW())-TO_DAYS(ADDED)>3");
//say("Оптимизирую базу данных",0);
//getURL("http://192.168.0.77:80/scripts/optimize_history.php",0);
//say("Запускаю сканирование папок мультимедиа",0);
//safe_exec("C:\\_majordomo\\server\\php\\php -q C:/_majordomo/htdocs/objects/index.php script:video_list_add");
|
rssProcess
|
Запускается для RSS-потоков
SetGlobal('NotifyRSS.title', $params['TITLE']);
// Проверяем вкл. режима чтения новостей
if (gg('ThisComputer.ReadRssEnable') == 1) {
// Проверяем установленный временной интервал чтения новостей
if (timeBetween(gg('ThisComputer.ReadRssRise'), gg('ThisComputer.ReadRssSet'))) {
/*
$params['URL'] --link
$params['TITLE'] -- title
$params['BODY'] -- body
$params['CHANNEL_ID'] -- channel ID
$params['CHANNEL_TITLE'] -- channed title
*/
say($params['TITLE'],2); // reading news
say($params['BODY'],2); // reading news
}
}
|
RunCommandComp
|
выполнение команды на удалённом windows-компьютере
if (is_array($params)) {
$cmd=($params['cmd']);
} else {
$cmd=$params;
}
//$cmd=utf2win($cmd);
//$cmd='"c:\windows\notepad.exe"';
$app='C:\\_majordomo\\apps\PSTools\\PsExec '.gg('Comp2.ip').' '.$cmd;
safe_Exec($app);
|
sayHook
|
хуки на штатные функции say()
/* Хук на функцию say() */
$level=$params['level'];
$ph=$params['ph'];
$atr=''; // параметры
switch ($level) {
case -1: // ничего не делать. Сообщение будет написано только в чате
return;
break;
case 0: // общие не тревожные сообщения ночью переадресуются на указанный канал с пониженной громкостью
if (gg('NightMode.status')){ $atr='-outputchannel:3 -volumemessage:40 ';}
break;
case strlen($level)==1:
// одна цифра это номер канала
$atr='-outputchannel:'.$level.' ';
break;
default:
// ($level>=20) будет рассмотрен в модуле пуш сообщений. цифры 0-9 зарезервированы для групп
// громкость на максимум для тревожных сообщений. цифры 0-9 могут быть использованы для включения крикуна на время в секундах
if ($level>=30) { $atr='-volumemessage:100 '; }
// отправка СМС сообщений можно сделать тут, пока нет отдельного модуля, следящего за уровнем $level
// вторую цифру $level можно использовать для указания группы телефонных номеров
if ($level>=40) { $atr.='-volumemaster:100 '; }// общую громкость тоже на максимум
}
// Отправка задания принимающей программе
// Вариант передачи данных через командную строку
// Помните, что первый экземпляр sdm, который станет сервером приема сообщений, вы должны запустить сами!
//safe_exec(gg('SoundProgram').' '.$atr.$ph);
// Вариант передачи данных через TCP порт
// Ждать ответа от sdm не больше 1 секунды
$ctx = stream_context_create(array('http'=>array('timeout'=>1) ) );
// Отправка принимающей программе
$ans = trim(file_get_contents('http://'.gg('SoundServer').'/'.$atr.urlencode($ph), 0, $ctx));
// Зарегистрировать ошибку, если ответ не получен
if ($ans!="ok") { registerError('sdm', 'No confirmation from the program'); }
|
sayTime
|
Говорит время
|
SeasonalWeatherData
|
записывает погодные наблюдения
$month_num=(int)date('m');
$day_num=(int)date('j');
$ob=("month-".$month_num.".temp_day_".$day_num);
sg($ob,gg("gw_day0.temp_day"));
|
SendLocation
|
Отправляет в telegram геолокацию
$Location=$params['Location'];
//$SendUser=$params['SendUser'];
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$telegram_module->sendLocationToAll($Location);
//if ($SendUser ==0){
//$telegram_module->sendLocationToAll($Location);
//}else{
//$telegram_module->sendLocationToUser($User, $Location);
//}
|
SendSticker
|
Отправляет в telegram стикеры
$Sticker=$params['Sticker'];
$SendUser=$params['SendUser'];
//Стикер ОК
if ($Sticker) $sendSticker='BQADAgADSwEAAptiIAyihwxjzi46wQI';
//Стикер язык
if ($Sticker==0) $sendSticker='BQADAgADAgEAAptiIAym_og01VU_0wI';
//Стикер печаль - sad
if ($Sticker =="sad")$sendSticker='BQADAgADPQEAAptiIAxz-JRT_0-_DQI';
//Стикер полет нормальный - ok
if ($Sticker =="ok")$sendSticker='BQADAgAD0AADm2IgDBStlhlUt9WHAg';
//Я здесь
if ($Sticker =="i_am_here")$sendSticker='BQADAgADqAUAAptiIAzWVF7K3a5-qgI';
//Я готова
if ($Sticker =="Im_ready")$sendSticker='BQADAgADsgADm2IgDBnNapuTulY1Ag';
//Тссс!!!
if ($Sticker =="Shhh")$sendSticker='BQADAgADogADm2IgDKWPXsViwaI6Ag';
//Стикер oh fuck - bad
if ($Sticker =="bad")$sendSticker='BQADAgADhAADm2IgDJ_aee9-yLT4Ag';
//Стикер привет - hello
if ($Sticker =="hello")$sendSticker='BQADAgAD2AAD8uYoAAG2h-Ggcrp10QI';
//Стикер спокойной ночи - good_night
if ($Sticker =="good_night")$sendSticker='BQADAgADqgADm2IgDPcRJDqsXo_0Ag';
//Стикер доброе утро - good_morning
if ($Sticker =="good_morning")$sendSticker='BQADAgAD0gADm2IgDLEEnE8oiWrYAg';
//Стикер доброе утро 2- good_morning2
if ($Sticker =="good_morning2")$sendSticker='BQADAgADgQEAAvLmKAAB54t-Gge6tcYC';
//Стикер читаю планшет - incomprehensibly
if ($Sticker =="incomprehensibly")$sendSticker='BQADAgADIgEAAptiIAzqv1Ygc8fANgI';
//Стикер я скучаю по тебе - i_miss_you
if ($Sticker =="i_miss_you")$sendSticker='BQADAgADggADm2IgDFsJmi9WktDyAg';
//Стикер много работы - work
if ($Sticker =="work")$sendSticker='BQADAgADogUAAptiIAxCbP1mOOxmdAI';
//Стикер Палево - get_busted
if ($Sticker =="get_busted")$sendSticker='BQADAgADDAYAAptiIAxwIlftS7HV5QI';
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$telegram_module->sendAction($chat_id,"typing");
if ($SendUser ==0){
$telegram_module->sendStickerToAll($sendSticker);
}else{
$telegram_module->sendStickerToUser($User ,$sendSticker);
}
sg('Sticker.title',$Sticker);
rs('setMood',array('mood'=>$Sticker));
|
SendTelegram
|
Отправляет в telegram картинки и текст
if (gg('ThisComputer.InternetAccess') != '1'){ //Если нет интернета
rs("no_internet", "Отправка в телеграмм");
return;
}
$message=$params['message'];
$img=$params['img'];
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
//Если текст
if ($message){
$telegram_module->sendMessageToAll($message);
}
//Если картинка
if ($img) {
$telegram_module->sendImageToAll($img);
}
|
send_mes
|
сценарий для отправки SMS, E-mail, или на экран iPhone
/*
* Сценарий 'send_mes' для MajorDoMo
* автор: Владимир Попов, на форуме - Vovix
* дата последнего изменения: 30.09.2015
* runScript('send_mes', array('to'=>$хххх,'subj'=>$yyyy,'msg'=>$zzzz,'what'=>$qqqq))
*/
// кому отправить, просто имя или адрес e-mail включающий знак "@" (при пустом = "admin")
$user_to=($params['to']=='') ? "admin" : $params['to'];
// тема сообщения (при пустом = "Alice! Smart Home system")
$subject=($params['subj']=='') ? "Alice! Smart Home system" : $params['subj'];
// текст сообщения (при пустом = "проверка связи")
$msg=($params['msg']=='') ? "проверка связи" : $params['msg'];
// что будем отправлять (через что): SMS, Email, iPhone
$what=($params['what']=='') ? "iPhone" : $params['what'];
// константы для e-mail отправок
$from = "mirella@ya.ru";
$sms2email='';
// присваеваем первоначальные НЕИЗВЕСТНЫЕ значения, на всякий случай
$fullName='unknown';
$user='unknown';
$gender='unknown';
// вариант №1
// проверим встречается ли символ '@' в кому отправить, т.е. указан ли конкретный e-mail??
// если не встретилось или это первый символ, то будем определять среди своих пользователей
// $podstr1=strpos($user_to, '@');
// if (($podstr1===false)||($podstr1=='0')) {
// вариант №2
// проверим НЕ указан ли именно e-mail
if (!preg_match("/^[a-zA-Z0-9\-\._]+@[-a-zA-Z0-9\-]+\.[-a-zA-Z0-9\-\.]+$/i", $user_to)) {
// определяем массив значений альтернативных имен
$altNameArray=array();
// переберем всех пользователей
$objects=getObjectsByClass("Users");
foreach($objects as $obj) {
// проверим, может это главное имя и перебирать альтернативы тогда не надо?
if (gg($obj['TITLE'].".fullName")==$user_to) {
$fullName=gg($obj['TITLE'].'.fullName');
$sms2email=gg($obj['TITLE'].'.sms2email');
$user=$obj['TITLE'];
} else {
// присвоим
$altName=gg($obj['TITLE'].".altName");
// имена разделены запятой
$altNameArray = explode(",",$altName);
$len=count($altNameArray);
// в цикле проверяем вхождение альтернативных имён
for($j=0;$j<$len;$j++) {
$podstr2=strpos($user_to, $altNameArray[$j]);
if ($podstr2===false) {
// тут нет таких
} else {
// вот нашли
$fullName=gg($obj['TITLE'].'.fullName');
$sms2email=gg($obj['TITLE'].'.sms2email');
$user=$obj['TITLE'];
}
}
}
}
}
// проверим ЧТО будем отправлять
switch ($what):
// SMS
case 'SMS':
case 'sms':
case 'СМС':
case 'смс':
if ($user<>'unknown') {
say ("Отправляю SMS сообщение. Кому: ".$user_to.". Текст сообщения: ".$msg.". Получатель мне известен как: ".$fullName,1);
$message = iconv("UTF-8", "WINDOWS-1251", $msg);
$subject = iconv("UTF-8", "WINDOWS-1251", $subject);
SendMail($from, $sms2email, $subject, $message);
} else if (!($podstr1===false)||!($podstr1=='0')) {
say ("Я попытаюсь отправить SMS сообщение посредством e-mail. Кому: ".$user_to.". Текст сообщения: ".$msg.". Но с получателем я видимо не знакома и не уверена в представленном вами e-mail адресе.",1);
$message = iconv("UTF-8", "WINDOWS-1251", $msg);
$subject = iconv("UTF-8", "WINDOWS-1251", $subject);
SendMail($from, $user_to, $subject, $message);
} else {
say ("Увы, отправить СМС не получиться, такого адреса: ".$user_to." я ,видимо, не знаю.",1);
}
break;
// Email
case 'Email':
case 'E-mail':
case 'еmail':
case 'e-mail':
case 'письмо':
if (($user<>'unknown')&&(gg($user.'.Email')<>'')) {
say ("Отправляю e-mail. Кому: ".$user_to.". Текст письма: ".$msg.". Получатель мне известен как: ".$fullName,1);
$message = iconv("UTF-8", "WINDOWS-1251", $msg);
$subject = iconv("UTF-8", "WINDOWS-1251", $subject);
SendMail($from, gg($user.'.Email'), $subject, $message);
} else if (($user<>'unknown')&&(gg($user.'.Email')=='')) {
$fullName=gg($user.'.fullName');
$gender=gg($user.'.gender');
$ending1=($gender<>'ж') ? 'ен' : 'на';
$pronoun1=($gender<>'ж') ? 'его' : 'её';
say ("Пользователь ".$fullName." мне извест".$ending1.", но у меня нет данных о ".$pronoun1." электронном адресе.",1);
} else {
say ("Я попытаюсь отправляю e-mail на адрес: ".$user_to.". Текст письма: ".$msg.". Но с получателем я видимо не знакома и не уверена в представленом вами e-mail адресе.",1);
$message = iconv("UTF-8", "WINDOWS-1251", $msg);
$subject = iconv("UTF-8", "WINDOWS-1251", $subject);
SendMail($from, $user_to, $subject, $message);
}
break;
// iPhone
case 'iPhone':
case 'Iphone':
case 'IPhone':
case 'iphone':
case 'телефон':
if (($user<>'unknown')&&(gg($user.'.AppleID')<>'')) {
$fullName=gg($user.'.fullName');
$AppleID=gg($user.'.AppleID');
$ApplePass=dsCrypt(gg($user.'.ApplePass'),true);
$gender=gg($user.'.gender');
$AppleDevNum=(gg($user.'.AppleDevNum')=='') ? 0 : gg($user.'.AppleDevNum');
// особенность наше сообщение передадим как тему, так лучше на экране выглядит
$subject=$msg;
soundToMyiPhone($AppleID, $ApplePass, $subject, $AppleDevNum);
say ("На iPhone, пользователя: ".$fullName.", отправлен сигнал и текст на экран.",1);
} else if (($user<>'unknown')&&(gg($user.'.AppleID')=='')) {
$fullName=gg($user.'.fullName');
$gender=gg($user.'.gender');
$ending1=($gender<>'ж') ? 'ен' : 'на';
$pronoun1=($gender<>'ж') ? 'его' : 'её';
say ("Пользователь ".$fullName." мне извест".$ending1.", но у меня нет данных о ".$pronoun1." Ай Фон Ай Ди.",1);
} else {
say ("Не понятно на чей Ай Фон нужно отправить сигнал. Видимо я ".$user_to." пока не знаю!",1);
}
break;
// не понятно что
default:
say ("Тут какая-то ошибка с каналом отправки сообщения. ".$what." - такой вариант отправки мне не известен.",1);
endswitch;
|
SetGlobalWeather
|
Определяет актуальность данных "погода"
if (gg('DebugMode.active') == 1) {
DebMes('Скрипт SetGlobalWeather');
}
//Запускаем проверку каждые 10 минут
setTimeOut('SetGlobalWeather','runScript("SetGlobalWeather");',10*60);
// Кол-во часов - актуален прогноз
$hour=2;
/*
//Проверяем как давно обновилась погода с яндекеса
$ywtimestamp=strtotime(getGlobal("yw_setting.data_update"));
if ( $ywtimestamp === FALSE){
say("Отсутствует информация об обновлении погоды с яндекса",1);
}else{
if ($ywtimestamp<time()){
$ywupdate=time()-$ywtimestamp;
$ywupdate=($ywupdate/60/60);
$ywupdate=round($ywupdate);
// say("Прогноз с яндекса обновлялся ".$ywupdate." ".pluralForm($ywupdate, 'час', 'часа', 'часов')." назад",0);
echo "Прогноз с яндекса обновлялся ".$ywupdate." ч<br>";
}else{
say("Данные об обновлении погоды с яндекса не корректны",1);
echo "Данные об обновлении погоды с яндекса не корректны<br>";
}
}
*/
//Проверяем как давно обновилась погода с гисметео
$gwtimestamp=strtotime(getGlobal("gisw_fact.date"));
if ( $gwtimestamp === FALSE){
say("Отсутствует информация об обновлении погоды с гисметео",1);
}else{
if ($gwtimestamp<time()){
$gwupdate=time()-$gwtimestamp;
$gwupdate=($gwupdate/60/60);
$gwupdate=round($gwupdate);
// echo "Прогноз с гисметео обновлялся ".$gwupdate." ч<br>";
}else{
say("Данные об обновлении погоды с гисметео не корректны",1);
}
}
//Проверяем как давно обновилась погода с Open Weather Map
$owdate=strtotime(gg("ow_city.data_update"));
if ( $owdate === FALSE){
say("Отсутствует информация об обновлении погоды c Open Weather Map",1);
}else{
if ($owdate<time()){
$owdate=time()-$owdate;
$owdate=($owdate/60/60);
$owdate=round($owdate);
// say("Последний раз прогноз c Open Weather Map обновился ".$owdate." ".pluralForm($owdate, 'день', 'дня', 'дней')." назад",1);
}else{
say("Данные об обновлении прогноза погоды c Open Weather Map не корректны",1);
}
/*
if ($ywupdate <= $hour){
if(gg("gw_fact.weather")!="Погода Yandex"){
say("Меняю поставщика «погодного» контента",1);
say("Теперь погода с Яндекса.",5);
echo "Погода с Яндекса.<br>";
}
sg("gw_fact.weather", "Погода Yandex");
sg("gw_fact.temperature", gg("yw_fact.temperature"));
sg("gw_fact.weather_type", gg("yw_fact.weather_type "));
sg("gw_fact.wind_speed", gg("yw_fact.wind_speed"));
sg("gw_fact.humidity", gg("yw_fact.humidity"));
sg("gw_fact.pressure", gg("yw_fact.pressure"));
sg("gw_fact.update", strtotime(getGlobal("yw_setting.data_update")));
sg("gw_fact.image", gg("yw_fact.image"));
$img="/cached/yaweather/48x48/".gg("yw_fact.image").".png";
sg("gw_fact.image_p",$img);
sg("gw_day0.day_weather_type", gg("yw_day0.day_weather_type"));
sg("gw_day0.temp_day", gg("yw_day0.day_temperatureData_to"));
sg("gw_day0.day_wind_speed", gg("yw_day0.day_wind_speed"));
sg("gw_day0.day_humidity", gg("yw_day0.day_humidity"));
sg("gw_day1.day_weather_type", gg("yw_day1.day_weather_type"));
sg("gw_day1.temp_day", gg("yw_day1.day_temperatureData_to"));
sg("gw_day1.day_wind_speed", gg("yw_day1.day_wind_speed"));
sg("gw_day1.day_humidity", gg("yw_day1.day_humidity"));
}else*/
if($gwupdate <= $hour){
rs ('CheckGismeteo');
if(gg("gw_fact.weather")!="Погода c Gismeteo!!!"){
sg("gw_fact.weather", "Погода c Gismeteo");
sg("gw_fact.temperature", gg("gisw_fact.temperature"));
sg("gw_fact.weather_type", gg("gisw_fact.weather_type"));
sg("gw_fact.wind_speed", gg("gisw_fact.wind_speed"));
sg("gw_fact.humidity", gg("gisw_fact.humidity"));
sg("gw_fact.pressure", gg("gisw_fact.pressure"));
sg("gw_fact.image", gg("gisw_fact.img"));
$img="/cached/yaweather/48x48/".gg("gisw_fact.img").".png";
sg("gw_fact.image_p",$img);
sg("gw_day0.day_weather_type", gg("gisw_day0.day_short_weather_type"));
sg("gw_day0.temp_day", gg("gisw_day0.day_short_temperature"));
sg("gw_day0.day_wind_speed", gg("gisw_day0.day_short_wind_speed"));
sg("gw_day0.day_humidity", gg("gisw_day0.day_short_humidity"));
sg("gw_day1.day_weather_type", gg("ow_day1.weather_type"));
sg("gw_day1.temp_day", round(gg("ow_day1.temp_day")));
sg("gw_day1.day_wind_speed", round(gg("ow_day1.wind_speed")));
sg("gw_day1.day_humidity", round(gg("ow_day1.humidity")));
} else {
if(gg("gw_fact.weather")!="Погода Open Weather Map"){
say("Меняю поставщика «погодного» контента",1);
say("Теперь погода с Open Weather Map.",5);
}
sg("gw_fact.weather", "Погода Open Weather Map");
sg("gw_fact.weather_type", gg("ow_fact.weather_type "));
sg("gw_fact.temperature", round(gg("ow_fact.temperature")));
sg("gw_fact.wind_speed", round(gg("ow_fact.wind_speed")));
sg("gw_fact.humidity", round(gg("ow_fact.humidity")));
sg("gw_fact.pressure", gg("ow_fact.pressure_mmhg"));
sg("gw_fact.update", strtotime(gg("ow_day0.date")));
// sg("gw_fact.image", gg("ow_fact.image"));
// $img="/cached/openweather/image/".gg("ow_fact.image").".png";
// sg("gw_fact.image_p",$img);
sg("gw_fact.image", gg("gisw_fact.img"));
$img="/cached/yaweather/48x48/".gg("gisw_fact.img").".png";
sg("gw_fact.image_p",$img);
sg("gw_day0.day_weather_type", gg("ow_day0.weather_type"));
sg("gw_day0.temp_day", round(gg("ow_day0.temp_day")));
sg("gw_day0.day_wind_speed", round(gg("ow_day0.wind_speed")));
sg("gw_day0.day_humidity", round(gg("ow_day0.humidity")));
sg("gw_day1.day_weather_type", gg("ow_day1.weather_type"));
sg("gw_day1.temp_day", round(gg("ow_day1.temp_day")));
sg("gw_day1.day_wind_speed", round(gg("ow_day1.wind_speed")));
sg("gw_day1.day_humidity", round(gg("ow_day1.humidity")));
}
}
}
//Проверяем как давно обновилась погода с CheckYaExport
$ywtimestamp=strtotime(gg("reg_2.data_update"));
if ( $ywtimestamp === FALSE){
say("Отсутствует информация об обновлении погоды с 'яндекс пробки'",1);
DebMes("Отсутствует информация об обновлении погоды с 'яндекс пробки'");
}else{
if ($ywtimestamp<time()){
$ywupdate=time()-$ywtimestamp;
$ywupdate=($ywupdate/60/60);
$ywupdate=round($ywupdate);
DebMes("Прогноз с 'яндекс пробки' обновлялся ".$ywupdate." ч");
}else{
DebMes("Данные об обновлении погоды с 'яндекс пробки' не корректны ".$ywtimestamp);
}
}
if($ywupdate <= $hour){
if(gg("reg_2.temperature") != "NA") sg("gw_fact.weather", "Погода Yandex");
if(gg("reg_2.weather_type") != "NA") sg("gw_fact.weather_type", gg("reg_2.weather_type"));
if(gg("reg_2.wind_direction") != "NA") sg("gw_fact.wind_speed", gg("reg_2.wind_speed"));
if(gg("reg_2.wind_speed") != "NA") sg("gw_fact.wind_speed", gg("reg_2.wind_speed"));
if(gg("reg_2.temperature") != "NA") sg("gw_fact.temperature", str_replace("+","",gg("reg_2.temperature")));
if(gg("reg_2.pressure") != "NA") sg("gw_fact.pressure", gg("reg_2.pressure"));
if(gg("reg_2.humidity") != "NA") sg("gw_fact.dampness", gg("reg_2.dampness"));
if(gg("reg_2.sunset") != "NA") sg("gw_fact.sunset", gg("reg_2.sunset"));
if(gg("reg_2.sun_rise") != "NA") sg("gw_fact.sunrise", gg("reg_2.sun_rise"));
}
|
setMood
|
установка настроения
$mood=$params['mood'];
if (!$mood) {
if(gg("ThisComputer.danger")){
$mood='bad';
} else if(gg("System.stateColor")=="red"){
$mood='bad';
} else {
$mood='ok';
}
}
sg('ThisComputer.Mood',$mood);
if (!$timeout) $timeout=360;
setTimeOut('timerMood',"runScript('setMood');",$timeout);
|
TempChanged
|
Средняя температура по квартире
if (gg('DebugMode.active') == 1) {
DebMes('скрипт TempChanged');
}
$Rooms=getObjectsByClass("Rooms");
$total=count($Rooms);
$temp=0;
if (gg('ThisComputer.danger')!=1){//Если нет статуса danger
for($i=0;$i<$total;$i++) {
$RoomsTitle=gg($Rooms[$i]['TITLE'].'.Title');
$RoomsTemp=gg($Rooms[$i]['TITLE'].'.Temperature');
$RoomsTempHistory =round(getHistoryAvg($Rooms[$i]['TITLE'].'.Temperature', -2*60)); //Среднее значение в за 1 минуту
if ($RoomsTempHistory>=gg('ThisComputer.RoomsMaxTemp')) {
$msg="Температура в ".$RoomsTitle." ".$RoomsTemp;
say("Внимание!!! Зафиксированна высокая температура в помещении ".$RoomsTitle,9);
say("Термометр показывает в ".$RoomsTitle." ".$RoomsTemp."°C",10);
say("Максимальное значение ".gg('ThisComputer.RoomsMaxTemp')." ",9);
// Отправить сообщения всем подписаным
rs(SmsSend, array("value" => $msg) );
sg('ThisComputer.danger',1);//Устанавливаем флаг danger
//Отправим стикер
rs('SendSticker',array('Sticker'=>'bad'));
}
if ($RoomsTemp>1) { //Если температура в доме больше 1
$temp+=(float)$RoomsTemp;
$tot++;
}
}
for($i=0;$i<$total;$i++) {
$RoomsTitle=gg($Rooms[$i]['TITLE'].'.Title');
$RoomsTemp=gg($Rooms[$i]['TITLE'].'.Temperature');
$RoomsTempRange=gg($Rooms[$i]['TITLE'].'.TemperatureRange');
$RoomsRecommendedTemp=gg($Rooms[$i]['TITLE'].'.RecommendedTemp');
$TempRangeUP=$RoomsRecommendedTemp+$RoomsTempRange/2;
$TempRangeDOWN=$RoomsRecommendedTemp-$RoomsTempRange/2;
if($RoomsRecommendedTemp!=""){
// $data = getHistoryAvg($Rooms[$i]['TITLE'].'.Temperature', -1*60*60);
// echo "Среднее значение за 1 час ".round($data)."<br/>\n";
if ($RoomsTemp<=$TempRangeUP && $RoomsTemp>=$TempRangeDOWN) {
// echo $RoomsTitle." Температура ".$RoomsTemp."<br>";
// echo "Установлено комфортное значение температуры ".$RoomsRecommendedTemp." <br>";
// if($RoomsTempHistory>$RoomsTemp) {echo "Температура ростет<br>";}
// if($RoomsTempHistory<$RoomsTemp) {echo "Температура падает<br>";}
// echo "Температура ок <br>";
sg ($Rooms[$i]['TITLE'].'.ClimateControl',0);
}
if ($RoomsTemp>=$TempRangeUP) {
// echo $RoomsTitle." Температура ".$RoomsTemp."<br>";
// echo "Установлено комфортное значение температуры ".$RoomsRecommendedTemp." <br>";
// if($RoomsTempHistory>$RoomsTemp) {echo "Температура ростет<br>";}
// if($RoomsTempHistory<$RoomsTemp) {echo "Температура падает<br>";}
$Range=$RoomsTemp-$RoomsRecommendedTemp;
// echo "Необходимо снизить на ".$Range."<br>";
sg ($Rooms[$i]['TITLE'].'.ClimateControl',1);
}
if ($RoomsTemp<=$TempRangeDOWN) {
// echo "Температура в ".$RoomsTitle." ".$RoomsTemp."<br>";
// echo "Установлено комфортное значение температуры ".$RoomsRecommendedTemp." <br>";
// if($RoomsTempHistory>$RoomsTemp) {echo "Температура ростет<br>";}
// if($RoomsTempHistory<$RoomsTemp) {echo "Температура падает<br>";}
$Range=$RoomsTemp-$RoomsRecommendedTemp;
// echo "Необходимо поднять на ".$Range."<br>";
sg ($Rooms[$i]['TITLE'].'.ClimateControl',2);
}
}else{
sg ($Rooms[$i]['TITLE'].'.ClimateControl',0);
}
}
if ($temp){
$temp=round($temp/$tot);
}else{
$temp="ER";
}
sg('ThisComputer.TempHome',$temp);
}
|
TempChanged_copy
|
Средняя температура по квартире
if (gg('DebugMode.active') == 1) {
DebMes('скрипт TempChanged');
}
$Rooms=getObjectsByClass("Rooms");
$total=count($Rooms);
$temp=0;
if (gg('ThisComputer.danger')!=1){//Если нет статуса danger
for($i=0;$i<$total;$i++) {
$Rooms[$i]['Title']=gg($Rooms[$i]['TITLE'].'.Title');
$Rooms[$i]['Temperature']=gg($Rooms[$i]['TITLE'].'.Temperature');
$Rooms[$i]['alive']=gg($Rooms[$i]['TITLE'].'.alive');
if ($Rooms[$i]['Temperature']>=gg('ThisComputer.RoomsMaxTemp')) {
$msg="Температура в ".$Rooms[$i]['Title']." ".$Rooms[$i]['Temperature'];
say("Внимание!!! Зафиксированна высокая температура в помещении ".$Rooms[$i]['Title'],9);
say("Термометр показывает в ".$Rooms[$i]['Title']." ".$Rooms[$i]['Temperature']."°C",10);
say("Максимальное значение ".gg('ThisComputer.RoomsMaxTemp')." ",9);
// Отправить сообщения всем подписаным
rs(SmsSend, array("value" => $msg) );
sg('ThisComputer.danger',1);//Устанавливаем флаг danger
//Отправим стикер
rs('SendSticker',array('Sticker'=>'bad'));
}
if ($Rooms[$i]['Temperature']>1) { //Если температура в доме больше 1
$temp+=(float)$Rooms[$i]['Temperature'];
$tot++;
}
}
for($i=0;$i<$total;$i++) {
$RoomsTitle=gg($Rooms[$i]['TITLE'].'.Title');
$RoomsTemp=gg($Rooms[$i]['TITLE'].'.Temperature');
$RoomsTempRange=gg($Rooms[$i]['TITLE'].'.TemperatureRange');
$RoomsRecommendedTemp=gg($Rooms[$i]['TITLE'].'.RecommendedTemp');
$TempRangeUP=$RoomsRecommendedTemp+$RoomsTempRange/2;
$TempRangeDOWN=$RoomsRecommendedTemp-$RoomsTempRange/2;
if($RoomsRecommendedTemp!=""){
$data = getHistoryAvg($Rooms[$i]['TITLE'].'.Temperature', -3*60*60);
echo "Среднее значение за 3 часа ".print_r($data, true)."<br/>\n";
echo $TempRangeUP."<br>";
echo $TempRangeDOWN."<br>";
if ($RoomsTemp<=$TempRangeUP && $RoomsTemp>=$TempRangeDOWN) {
echo $RoomsTitle." Температура ".$RoomsTemp."<br>";
echo "Установлено комфортное значение температуры ".$RoomsRecommendedTemp." <br>";
echo "Температура ок <br>";
}
if ($RoomsTemp>=$TempRangeUP) {
echo $RoomsTitle." Температура ".$RoomsTemp."<br>";
echo "Установлено комфортное значение температуры ".$RoomsRecommendedTemp." <br>";
$Range=$RoomsTemp-$RoomsRecommendedTemp;
echo "Необходимо снизить на ".$Range."<br>";
}
if ($RoomsTemp<=$TempRangeDOWN) {
echo "Температура в ".$RoomsTitle." ".$RoomsTemp."<br>";
echo "Установлено комфортное значение температуры ".$RoomsRecommendedTemp." <br>";
$Range=$RoomsTemp-$RoomsRecommendedTemp;
echo "Необходимо поднять на ".$Range."<br>";
}
}
}
if ($temp){
$temp=round($temp/$tot);
}else{
$temp="ER";
}
sg('ThisComputer.TempHome',$temp);
}
|
updateTodayText
|
Устанавливает текст дня недели и даты
$day=array('Воскресенье','Понедельник','Вторник','Среда','Четверг','Пятница','Суббота');
sg("ThisComputer.Day",$day[date("w")]);
sg("ThisComputer.Date",date( "d.m.Y", time()));
// Устанавливает рабочий или будний день
if (date("w")>0 and date("w")<6) {
sg("ThisComputer.Weekdays",1);
}else{
sg("ThisComputer.Weekdays",0);
}
$months=array(1=>'января','февраля','марта','апреля','мая','июня','июля','августа','сентября','октября','ноября','декабря');
$daymonth=array(1=>'первое','второе','третье','четвертое','пятое','шестое','седьмое','восьмое','девятое','десятое','одинадцатое','двенадцатое','тринадцатое','четырнадцатое','пятнадцатое','шестнадцатое','семнадцатое','восемнадцатое','девятнадцатое','двадцатое','двадцать первое','двадцать второе','двадцать третье','двадцать четвертое','двадцать пятое','двадцать шестое','двадцать седьмое','двадцать восьмое','двадцать девятое','тридцатое','тридцать первое');
$month_num=(int)date('m');
$day_month=(int)date('j');
$day_of_month=$daymonth[$day_month];
$month_txt=$months[$month_num];
setGlobal('ThisComputer.MonthTXT',$month_txt);
setGlobal('ThisComputer.DayOfMonthTXT',$day_of_month);
|
update_gw_yesterday
|
Сохраняет сегодняшнюю погоду во вчера
sg('gw_yesterday.day_temp',gg('gw_day0.temp_day'));
sg('gw_yesterday.day_wind_speed',gg('gw_day0.day_wind_speed'));
sg('gw_yesterday.day_weather_type',gg('gw_day0.day_weather_type'));
sg('gw_yesterday.day_humidity',gg('gw_day0.day_humidity'));
|
WakeOnLAN
|
отправка "магического" пакета Wake-On-LAN
$comp_name = $params['comp_name'];
$hw_comp = $params['hw_comp'];
say('Пытаюсь включить '.$comp_name,5);
//magicPacket($hw_comp);
//if (!function_exists('magicPacket')) {
//function magicPacket($mac,$addr='255.255.255.255',$socket_number=7) {
$mac=$hw_comp;
$addr='255.255.255.255';
$socket_number=7;
//split up the mac address based upon the colons in the string
$addr_byte = explode(':', $mac);
$hw_addr = '';
for ($a=0; $a <6; $a++)
$hw_addr .=chr(hexdec($addr_byte[$a])); //convert the hex to its decimal equivalent, encode as a character, and repeat 16 times
$msg = str_repeat(chr(255),6); //FF in decimal is 255, which is then encoded as a char as with our mac address
for ($a = 1; $a <= 16; $a++)
$msg .= $hw_addr;
$s = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP); //create our socket
if ($s == false) {
say('У меня не получается включить, ошибка создания сокета',1);
echo "Error creating socket!\n";
echo "Error code is '".socket_last_error($s)."'- " . socket_strerror(socket_last_error($s));
return false;
}
else {
// setting a broadcast option to socket:
//$opt_ret = socket_set_option($s, 1, 6, TRUE);
$opt_ret = socket_set_option($s,SOL_SOCKET,SO_BROADCAST,true);
if($opt_ret <0) {
echo "setsockopt() failed, error: " . strerror($opt_ret) ."\n";
return false;
}
if(socket_sendto($s, $msg, strlen($msg), 0, $addr,$socket_number)) {
socket_close($s);
return true;
}
else {
return false;
}
}
// }
//}
|
WinShutdown
|
Выключает WIN компьютер
say("Пытаюсь выключить компьютер",9);
shell_exec("shutdown -s -f -m \\\\".$params['comp']." -t 60 -d up:125:1");
|
writeTodayAgenda
|
Сценарий записывает сегодняшние события и дела
if (file_exists('./modules/app_calendar/app_calendar.class.php')) {
include_once('./modules/app_calendar/app_calendar.class.php');
$calendar=new app_calendar();
$calendar->usual($out);
$events=$out['EVENTS_TODAY'];
$say_phrase='';
if (is_array($events)) {
$total=count($events);
$tasks=array();
$cals=array();
for($i=0;$i<$total;$i++) {
if ($events[$i]['IS_TASK']=='1' && $events[$i]['IS_DONE']!='1') {
$tasks[]=$events[$i]['TITLE'];
} elseif ($events[$i]['IS_TASK']!='1') {
$cals[]=$events[$i]['TITLE'];
}
}
$total_tasks=count($tasks);
if ($total_tasks) {
$say_phrase.="У вас на сегодня запланированы задачи. ";
for($i=0;$i<$total_tasks;$i++) {
$say_phrase.=($i+1).". ".$tasks[$i].". ";
rs('NewMessage');
}
}
$total_cals=count($cals);
if ($total_cals) {
$say_phrase.=("Сегодняшние события. ");
for($i=0;$i<$total_cals;$i++) {
$say_phrase.=$cals[$i].'. ';
}
}
}
$events=$out['EVENTS_PAST'];
if ($events[0]['TITLE']) {
$say_phrase.=" Так же напоминаю о пропущенных задачах. ";
$total_tasks=count($events);
for($i=0;$i<$total_tasks;$i++) {
$say_phrase.=($i+1).". ".$events[$i]['TITLE'].". ";
}
}
}
if ($say_phrase) {
setGlobal("mycalendar.msg", $say_phrase);
}
|
colorjpeg
|
простой анализ яркости картинки
// Создание изображения
$im = imagecreatefromjpeg('http://192.168.0.20/IMAGE.JPG');
$total_R=0;
$total_G=0;
$total_B=0;
// Размеры изображения
$width=ImageSX($im);
$height=ImageSY($im);
// Подсчитать суммарные значения по RGB
for ($x=0; $x<$width; $x++) {
for ($y=0; $y<$height; $y++) {
$rgb=ImageColorAt($im,$x,$y);
$total_R+=($rgb>>16) & 0xFF;
$total_G+=($rgb>>8) & 0xFF;
$total_B+=$rgb & 0xFF;
}
}
// Прибраться за собой
ImageDestroy($im);
// Определение значений RGB основного цвета
$avg_R=round($total_R/$width/$height);
$avg_G=round($total_G/$width/$height);
$avg_B=round($total_B/$width/$height);
echo $avg_R."<br>";
echo $avg_G."<br>";
echo $avg_B."<br>";
$avg=$avg_R+$avg_G+$avg_B;
if ($avg<"100"){
echo"На картинке пусто <br>";
echo $rgb;
}
|
getHistoryMin
|
тест история
getHistoryMin("narodmon_34797.value", -12*60*60);
|
ip
|
тест возврата ip
$url=$params['url'];
$ip=$params['ip'];
if ($ip == "") {
$ip=$_SERVER['REMOTE_ADDR'];
}
echo $ip;
|
phpmorphy
|
тест библиотеки phpmorphy
echo "<pre>";
$string= "я прошу тебя пожалуйста сделай мне гамбургер";
echo "<b>Разбор строки - ".$string."</b><br>";
$string = preg_replace('/[^\w\s]/u', ' ', $string);
$string = preg_replace('|[\s]+|s', ' ', $string);
echo "слова - ".$string."<br>";
// массив, в котором будут записаны слова по падежам
//Предложный падеж
$array_preposit= array();
//Иминительный падеж
$array_nominat= array();
//Винительный падеж
$array_accusat= array();
// массив, в котором будут записаны слова
$array_words = array();
// разбиваем строку
// разделителем выступает пробел, табуляция
// и перенос строки
$tok = strtok($string, " \t\n");
// разбиваем строку, пока не кончится предложение
while($tok) {
$array_words[] = $tok;
$tok = strtok(" \t\n");
}
// вывод результата
$i=0; while ($i < count($array_words))
{
$Word=$array_words[$i];
$i++;
require_once ("lib/phpmorphy/common.php");
// задаем настройки для использования модуля
$opts = array(
'storage' => PHPMORPHY_STORAGE_FILE,
'predict_by_suffix' => true,
'predict_by_db' => true,
'graminfo_as_text' => true,
);
// Путь к папке
$dir = 'C:/_majordomo/htdocs/lib/phpmorphy/dicts';
$lang = 'ru_RU';
// Создаем экземпляр phpMorphy
try{
$morphy = new phpMorphy($dir, $lang, $opts);
}
catch(phpMorphy_Exception $e){
echo 'Error occured while creating phpMorphy instance: '.$e;
}
// получаем слово из шаблона
$Word = mb_strtoupper($Word, 'UTF-8');
$base = $morphy->getBaseForm($Word); // возвращает массив значений
if(false === ($paradigms = $morphy->findWord($Word))) {
echo 'Can`t find word';
}
foreach($paradigms->getByPartOfSpeech('Г') as $paradigm) {
$msg= '<b>Глагол - '. $paradigm->getBaseForm().'</b>';
echo $msg."<br>";
}
foreach($paradigms->getByPartOfSpeech('С') as $paradigm) {
$msg= '<b>Существительное - '. $paradigm->getBaseForm().'</b>';
echo $msg."<br>";
$noun = $paradigm->getBaseForm();
}
foreach($paradigms->getByPartOfSpeech('П') as $paradigm) {
$msg= '<b>Прилагательное - '. $paradigm->getBaseForm().'</b>';
echo $msg."<br>";
$adjective=$paradigm->getBaseForm();
}
foreach($paradigms->getByPartOfSpeech('МС') as $paradigm) {
$msg= '<b>Местоимение - '. $paradigm->getBaseForm().'</b>';
echo $msg."<br>";
}
foreach($paradigms->getByPartOfSpeech('ЧАСТ') as $paradigm) {
$msg= '<b>Частица - '. $paradigm->getBaseForm().'</b>';
echo $msg."<br>";
}
foreach($paradigms->getByPartOfSpeech('СОЮЗ') as $paradigm) {
$msg= '<b>Союз - '. $paradigm->getBaseForm().'</b>';
echo $msg."<br>";
}
foreach($paradigms->getByPartOfSpeech('ЧИСЛ') as $paradigm) {
$msg= '<b>Числительное - '. $paradigm->getBaseForm().'</b>';
echo $msg."<br>";
}
foreach($paradigms->getByPartOfSpeech('ПРЕДЛ') as $paradigm) {
$msg= '<b>Предлог - '. $paradigm->getBaseForm().'</b>';
echo $msg."<br>";
$prepositions=$paradigm->getBaseForm();
}
// обрабатываем омонимы
echo "Лемма - ".$paradigm->getBaseForm()."<br>";
// информация о искомом слове т.к. в парадигме словоформы могут повторятся $found_word - массив
$found_word_ary = $paradigm->getFoundWordForm();
foreach($found_word_ary as $found_form) {
//граммемы
echo "Морфологическая информация - ".$found_form->getWord(), ' - ', $found_form->getPartOfSpeech(), ' ', implode(',', $found_form->getGrammems())."<br>";
}
//Глаголы
if($paradigms->getByPartOfSpeech('Г')) {
if ($found_form->hasGrammems('1Л')){
echo "1 лицо <br>";
}
if ($found_form->hasGrammems('2Л')){
echo "2 лицо <br>";
}
if ($found_form->hasGrammems('3Л')){
echo "3 лицо <br>";
}
}
//Существительное
if($paradigms->getByPartOfSpeech('С')) {
if ($found_form->hasGrammems('ПР')){
echo "Предложный падеж <br>";
$noun1=$found_form->getWord();
array_push($array_preposit,$noun1);
}
if ($found_form->hasGrammems('РД')){
echo "Родительный падеж <br>";
$noun1=$found_form->getWord();
}
if ($found_form->hasGrammems('ДТ')){
echo "Дательный падеж <br>";
$noun1=$found_form->getWord();
}
if ($found_form->hasGrammems('ИМ')){
echo "Иминительный падеж <br>";
$noun1=$found_form->getWord();
array_push($array_nominat,$noun1);
}
}
if($paradigms->getByPartOfSpeech('С')) {
if ($found_form->hasGrammems(array('НО', 'ВН'))){
echo "Винительный падеж неодушевлённое <br>";
$question="ЧТО";
$noun2=$found_form->getWord();
array_push($array_accusat,$noun2);
}
if ($found_form->hasGrammems(array('ОД', 'ВН'))){
echo "Винительный падеж одушевлённое <br>";
$question="КОГО";
$noun2=$found_form->getWord();
array_push($array_accusat,$noun2);
}
}
if($paradigms->getByPartOfSpeech('Г','ДСТ','2Л','ПВ')) {
$verb = $paradigm->getBaseForm();
}
echo "---------<br>";
}
$str0 = implode(' ',$array_nominat);
$str1 = implode(' ',$array_preposit);
$str2 = implode(' ',$array_accusat);
if ($verb){
echo "<br>НАДО ".$verb." ";
}
echo "<br>".$question." - ";
echo $str2." ";
if($prepositions=="НА"){
echo "<br>ГДЕ - НА ";
echo $str0." ";
echo $str1." ";
}else if($prepositions=="В"){
echo "<br>ГДЕ - В ";
echo $str0." ";
echo $str1." ";
}
echo "<br><b>АЛИСА ".$verb.' '.$str2.' '.$str1.' '.$adjective.'</b>';
|
ReadMail
|
тест чтение почты
$host = 'imap.yandex.ru';
$port = 993;
$login = 'login';
$pass = 'pass';
$param = '/imap/ssl/novalidate-cert';
$folder = 'INBOX';
if($mbox = imap_open("{"."{$host}:{$port}{$param}"."}$folder",$login,$pass)){
$MC = imap_check($mbox);
// Fetch an overview for all messages in INBOX
$result = imap_fetch_overview($mbox,"1:{$MC->Nmsgs}",0);
foreach ($result as $overview) {
$msgno=$overview->msgno;
$date=$overview->date;
$uid=$overview->uid;
$from=$overview->from;
$from = imap_mime_header_decode($from);
for ($i=0; $i<count($from); $i++) {
$from=$from[$i]->text;
}
$subject=$overview->subject;
$subject = imap_mime_header_decode($subject);
for ($i=0; $i<count($subject); $i++) {
$subject=$subject[$i]->text;
}
echo "$msgno $date <br> From: $from Тема: $subject $uid\n<br>";
}
imap_close($mbox);
} else {
exit ("Can't connect: " . imap_last_error() ."n"); echo "FAIL!n";
};
|
slovo
|
тест получаем основную форму слова
$Word="спи";
// подключаем модуль phpmorphy, у меня он находиться в папке с модулем SSDPFinder
require ("lib/phpmorphy/common.php");
// задаем настройки для использования модуля
$opts = array(
// storage type, follow types supported
// PHPMORPHY_STORAGE_FILE - use file operations(fread, fseek) for dictionary access, this is very slow...
// PHPMORPHY_STORAGE_SHM - load dictionary in shared memory(using shmop php extension), this is preferred mode
// PHPMORPHY_STORAGE_MEM - load dict to memory each time when phpMorphy intialized, this useful when shmop ext. not activated. Speed same as for PHPMORPHY_STORAGE_SHM type
'storage' => PHPMORPHY_STORAGE_FILE,
// Enable prediction by suffix
'predict_by_suffix' => true,
// Enable prediction by prefix
'predict_by_db' => true,
// TODO: comment this
'graminfo_as_text' => true,
);
// Path to directory where dictionaries located
$dir = 'C:/_majordomo/htdocs/lib/phpmorphy/dicts';
$lang = 'ru_RU';
// Создаем экземпляр phpMorphy
try{
$morphy = new phpMorphy($dir, $lang, $opts);
}
catch(phpMorphy_Exception $e){
die('Error occured while creating phpMorphy instance: ' . PHP_EOL . $e);
}
// получаем слово из шаблона означающее комнату/расположение
$Word = mb_strtoupper($Word, 'UTF-8');
// используя phpmorphy, получаем основную форму слова
$base = $morphy->getBaseForm($Word); // возвращает массив значений
// если массив базовых форм не пустой, берем из него первое значение
echo "Найдено " .$base[0] ;
|
sql
|
тест запрос sql новость
$sql = SQLSelectOne("select * from rss_items WHERE `CHANNEL_ID` = 1 ORDER BY ID DESC LIMIT 1,1");
$news_title=$sql['TITLE'];
$news_text=$sql['BODY'];
echo $news_title."<br>";
echo $news_text."<br>";
|
tasker
|
тестируем таскер
$devid=$params['devid'];
$batt=$params['batt'];
$cname=$params['cname'];
if($batt<=10 && $batt!=0){
say ("Устройство ".$devid." сообщило о низком уровне заряда аккумулятора.",10);
}
if($cname){
say ("Входящий звонок от ".$cname.".",10);
}
|
test
|
$dir="C:\\_majordomo\\htdocs\\telegram\\162105692\\photo";
$files = scandir($dir);
rsort($files, SORT_NUMERIC);
$lastfile = $files[0];
echo $dir.''.$lastfile.'<br>';
|
TestTerminal
|
Тест отправки странички
$address='192.168.0.143'; // ip-адрес планшета
$service_port='7999';
$in='url:http://192.168.0.77/popup/scenes/8.html'; // команда для отправки
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "<br/>\n";
return 0;
}
$result = socket_connect($socket, $address, $service_port);
if ($result === false) {
echo "socket_connect() failed.\nReason: ($result) " . socket_strerror(socket_last_error($socket)) . "\n";
return 0;
}
socket_write($socket, $in, strlen($in));
socket_close($socket);
|
test_iBot
|
тест iiiBot
$message='пошути';
runScript('iiiBot', array('message'=>$message));
|
tvjpg
|
include_once(DIR_MODULES.'app_smarttv/app_smarttv.class.php');
$smartTv=new app_smarttv();
$smartTv->control('LG','curChan');
|
vk_spb_today_send_to_db
|
То что происходит в городе кидаем в базу
$url="https://api.vk.com/method/wall.get?domain=spb_crash&count=10&filter=owner";
//Работаем со строкой JSON
$data = json_decode(file_get_contents($url), true);
for ($i = 0; $i < count($data['response']); $i++) {
$html=$data['response'][$i]['text'];
$html=iconv('utf-8', 'cp1251', $html);
$date=$data['response'][$i]['date'];
$date=date("m.d.y, H:m:s", $date);
$id=$data['response'][$i]['id'];
$attachment=$data['response'][$i]['attachment'];
if ($attachment['photo']){
$attach=$attachment['photo']['src_xbig'];
}else{
$attach='';
}
if ($html) {
//соединяемся с mysql
include_once("./config.php");
$connect_to_db = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD)
or die("Could not connect: " . mysql_error());
//---
mysql_query('SET NAMES "cp1251"', $connect_to_db);
// подключаемся к базе данных
mysql_select_db("db_terminal",$connect_to_db)
or die("Could not select DB: " . mysql_error());
$sql="INSERT INTO `vk_news_spb_today` (VK_ID, HTML, ATTACH) VALUES ('$id', '$html', '$attach') ON DUPLICATE KEY UPDATE VK_ID=VK_ID"; // запрос (Дупликейт дабы не завписывалось два раза)
$result=mysql_query($sql,$connect_to_db); // Выполнения запроса
mysql_close($connect_to_db);
} // закрываем соединение
}
|