MoneyExchange
|
Курс валют
// Американский доллар
$file = simplexml_load_file("http://www.cbr.ru/scripts/XML_daily.asp?date_req=".date("d/m/Y"));
$xml = $file->xpath("//Valute[@ID='R01235']");
$valute = strval($xml[0]->Value);
$dollar = str_replace(",",".",$valute);
$olddate = date('d/m/Y', strtotime("-1 days"));
$file2 = simplexml_load_file("http://www.cbr.ru/scripts/XML_daily.asp?date_req=" . $olddate);
$xml2 = $file2->xpath("//Valute[@ID='R01235']");
$valute2 = strval($xml2[0]->Value);
$dollar2 = str_replace(",",".",$valute2);
if ($dollar>$dollar2){
sg("USD.direction","2");
} elseif ($dollar<$dollar2){
sg("USD.direction","1");
} else {
sg("USD.direction","0");
}
$delta = $dollar-$dollar2;
sg("USD.delta",number_format($delta, 2));
sg("USD.data_old",number_format($dollar2, 2));
sg("USD.data",number_format($dollar, 2));
sg("USD.updatedTime", date("y-m-d H:i"));
//EUR
$file3 = simplexml_load_file("http://www.cbr.ru/scripts/XML_daily.asp?date_req=".date("d/m/Y"));
$xml3 = $file3->xpath("//Valute[@ID='R01239']");
$valute3 = strval($xml3[0]->Value);
$eur = str_replace(",",".",$valute3);
$olddate4 = date('d/m/Y', strtotime("-1 days"));
$file4 = simplexml_load_file("http://www.cbr.ru/scripts/XML_daily.asp?date_req=" . $olddate4);
$xml4 = $file4->xpath("//Valute[@ID='R01239']");
$valute4 = strval($xml4[0]->Value);
$eur2 = str_replace(",",".",$valute4);
if ($eur>$eur2){
sg("EUR.direction","2");
} elseif ($eur<$eur2){
sg("EUR.direction","1");
} else {
sg("EUR.direction","0");
}
$delta2 = $eur-$eur2;
sg("EUR.delta",number_format($delta2, 2));
sg("EUR.data_old",number_format($eur2, 2));
sg("EUR.data",number_format($eur, 2));
sg("EUR.updatedTime", date("y-m-d H:i"));
//Казахский тенге
// say("обновление курсов валюты");
$file5 = simplexml_load_file("http://www.cbr.ru/scripts/XML_daily.asp?date_req=".date("d/m/Y"));
$xml5 = $file5->xpath("//Valute[@ID='R01335']");
$valute5 = strval($xml5[0]->Value);
$kzt = str_replace(",",".",$valute5);
$olddate6 = date('d/m/Y', strtotime("-1 days"));
$file6 = simplexml_load_file("http://www.cbr.ru/scripts/XML_daily.asp?date_req=" . $olddate6);
$xml6 = $file6->xpath("//Valute[@ID='R01335']");
$valute6 = strval($xml6[0]->Value);
$kzt2 = str_replace(",",".",$valute6);
if ($kzt>$kzt2){
sg("KZT.direction","2");
} elseif ($kzt<$kzt2){
sg("KZT.direction","1");
} else {
sg("KZT.direction","0");
}
$delta3 = $kzt-$kzt2;
sg("KZT.delta",number_format($delta3, 2));
sg("KZT.data_old",number_format($kzt2, 2));
sg("KZT.data",number_format($kzt, 2));
sg("KZT.updatedTime", date("y-m-d H:i"));
// Китайский юань
$file7 = simplexml_load_file("http://www.cbr.ru/scripts/XML_daily.asp?date_req=".date("d/m/Y"));
$xml7 = $file7->xpath("//Valute[@ID='R01375']");
$valute7 = strval($xml7[0]->Value);
$cny = str_replace(",",".",$valute7);
$olddate8 = date('d/m/Y', strtotime("-1 days"));
$file8 = simplexml_load_file("http://www.cbr.ru/scripts/XML_daily.asp?date_req=" . $olddate8);
$xml8 = $file8->xpath("//Valute[@ID='R01375']");
$valute8 = strval($xml8[0]->Value);
$cny2 = str_replace(",",".",$valute8);
if ($cny>$cny2){
sg("CNY.direction","2");
} elseif ($cny<$cny2){
sg("CNY.direction","1");
} else {
sg("CNY.direction","0");
}
$delta4 = $cny-$cny2;
sg("CNY.delta",number_format($delta4, 2));
sg("CNY.data_old",number_format($cny2, 2));
sg("CNY.data",number_format($cny, 2));
sg("CNY.updatedTime", date("y-m-d H:i"));
|
PowerOn_Evelina
|
Включение компьютера Эвелины
$ip_or_host ="192.168.0.31"; //ip удаленного устройства
$mac_addres ="00:24:21:29:50:bb"; //mac удаленного устройства
$port = '7';
$package = chr(255).chr(255).chr(255).chr(255).chr(255).chr(255);
$parts_mac = explode(':', $mac_addres);
for ($i=0; $i < 6; $i++) $transform_mac .= chr(hexdec($parts_mac[$i]));
for($i = 1; $i <= 16; $i++) $package .= $transform_mac;
$wol = fsockopen("udp://$ip_or_host", $port);
for($i = 0; $i < 5; $i++) fwrite($wol, $package);
fclose($wol);
|
PowerOn_Ilya
|
Включение компьютера Ильюши
/*
$ip_or_host ="192.168.0.30"; //ip удаленного устройства
$mac_addres ="00:1a:4d:7b:d3:f9"; //mac удаленного устройства
$port = '7';
$package = chr(255).chr(255).chr(255).chr(255).chr(255).chr(255);
$parts_mac = explode(':', $mac_addres);
for ($i=0; $i < 6; $i++) $transform_mac .= chr(hexdec($parts_mac[$i]));
for($i = 1; $i <= 16; $i++) $package .= $transform_mac;
$wol = fsockopen("udp://$ip_or_host", $port);
for($i = 0; $i < 5; $i++) fwrite($wol, $package);
fclose($wol);
*/
$mac_addr='00:1a:4d:7b:d3:f9'; // mac-адрес устройства
magicPacket($mac_addr);
function magicPacket($mac,$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) {
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;
}
}
}
|
reset error
|
сброс ошибок с "НЕИЗВЕСНАЯ КОМАНДА"
SQLExec("UPDATE users SET ACTIVE_CONTEXT_ID=0 WHERE 1");
|
turnOffAll
|
Выключение освещения (везде)
callMethod("MegaD1_Relays10.turnOff"); //Кухня
callMethod("MegaD1_Relays7.turnOff"); //Ванная
callMethod("MegaD1_Relays8.turnOff"); //КОрион
callMethod("MegaD2_Relays7.turnOff"); //Прожектор
callMethod("MegaD2_Relays8.turnOff"); //Котельная
callMethod("MegaD3_Relays12.turnOff"); //Ильюшина
callMethod("MegaD3_Relays13.turnOff"); //Эвелины
callMethod("MegaD1_Relays11.turnOff"); //Зал
|
WeekDayType
|
Определение выходного или праздничного дня
function getDateInfo($date) {
$days = array('воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота');
$months = array(1 => 'январь', 'февраль', 'март', 'апрель', 'май', 'июнь', 'июль', 'август', 'сентябрь', 'октябрь', 'ноябрь', 'декабрь');
$months2 = array(1 => 'января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря');
$daymonth = array(1 => 'первое', 'второе', 'третье', 'четвертое', 'пятое', 'шестое', 'седьмое', 'восьмое', 'девятое', 'десятое', 'одиннадцатое', 'двенадцатое', 'тринадцатое', 'четырнадцатое', 'пятнадцатое', 'шестнадцатое', 'семнадцатое', 'восемнадцатое', 'девятнадцатое', 'двадцатое', 'двадцать первое', 'двадцать второе', 'двадцать третье', 'двадцать четвертое', 'двадцать пятое', 'двадцать шестое', 'двадцать седьмое', 'двадцать восьмое', 'двадцать девятое', 'тридцатое', 'тридцать первое');
$dateInfo = array();
$dateInfo['this_year'] = (int) date('Y', $date);
$dateInfo['day_num'] = (int) date('w', $date);
$dateInfo['month_num'] = (int) date('m', $date);
$dateInfo['day_month'] = (int) date('j', $date);
$dateInfo['day_of_month'] = $daymonth[$dateInfo['day_month']];
$dateInfo['day_of_week'] = $days[$dateInfo['day_num']];
$dateInfo['month_txt1'] = $months[$dateInfo['month_num']];
$dateInfo['month_txt2'] = $months2[$dateInfo['month_num']];
return $dateInfo;
}
function weekDay($date) {
$this_year = (int) date('Y', $date);
//Загружаем производственный календарь
$productionCalendar = @file_get_contents('http://xmlcalendar.ru/data/ru/' . $this_year . '/calendar.xml');
if ($productionCalendar) { //Если прочитали без ошибок
sg('DateTime.productionCalendar', $productionCalendar); //Запишем на всякий случай))
} else { //Если не прочиталось
$productionCalendar = gg('DateTime.productionCalendar'); // Возьмем ранее загруженный календарь
}
//Проверяем сегодняшний день по производственному календарю (рабочий или нет)
$weekDay = -1;
$this_date = date('m.d', $date);
$calend = new SimpleXMLElement($productionCalendar);
foreach ($calend->days->day as $day) {
$type = $day->attributes()->t; //тип дня: 1 - выходной день, 2 - короткий день, 3 - рабочий день (суббота/воскресен)
$CalDate = $day->attributes()->d; //дата
if ($this_date == $CalDate) {
if ($type == 1) { //выходной
$weekDay = 0;
} elseif ($type == 2) {
//Короткий день
//$weekDay = 1;
} elseif ($type == 3) { //Перенесенный рабочий
$weekDay = 0;
}
}
}
//Если в производственном календаре ничего не нашлось
if ($weekDay == -1) {
if (date('w', $date) == 0 || date('w', $date) == 6) {
$weekDay = 0;
} else {
$weekDay = 1;
}
}
return $weekDay;
}
$today = getDateInfo(strtotime("now"));
$tomorrow = getDateInfo(strtotime("+1 day"));
$today['weekDay'] = weekDay(strtotime("now"));
$tomorrow['weekDay'] = weekDay(strtotime("+1 day"));
//Сохраняем данные
sg('DateTime.DateNow',date( "d.m.Y", time()));
//Сегодня
sg('today.thisYear', $today['this_year']);
sg('today.monthNum', $today['month_num']);
sg('today.monthTXT', $today['month_txt1']);
sg('today.monthTXTalt', $today['month_txt2']);
sg('today.dayOfMonthNum', $today['day_month']);
sg('today.dayOfMonthTXT', $today['day_of_month']);
sg('today.dayOfWeekTXT', $today['day_of_week']);
sg('today.dayOfWeekNum', $today['day_num']);
sg('today.isWeekDay', $today['weekDay']);
//Сегодня (временно, потом удалить, ибо объекты переносятся
sg('ThisComputer.DateNow',date( "d.m.Y", time()));
sg('ThisComputer.thisYear', $today['this_year']);
sg('ThisComputer.MonthNum', $today['month_num']);
sg('ThisComputer.MonthTXT', $today['month_txt1']);
sg('ThisComputer.MonthTXTalt', $today['month_txt2']);
sg('ThisComputer.DayOfMonthNum', $today['day_month']);
sg('ThisComputer.DayOfMonthTXT', $today['day_of_month']);
sg('ThisComputer.DayOfWeekTXT', $today['day_of_week']);
sg('ThisComputer.DayOfWeekNum', $today['day_num']);
sg('ThisComputer.isWeekDay', $today['weekDay']);
//Завтра
sg('tomorrow.thisYear', $tomorrow['this_year']);
sg('tomorrow.monthNum', $tomorrow['month_num']);
sg('tomorrow.monthTXT', $tomorrow['month_txt1']);
sg('tomorrow.monthTXTalt', $tomorrow['month_txt2']);
sg('tomorrow.dayOfMonthNum', $tomorrow['day_month']);
sg('tomorrow.dayOfMonthTXT', $tomorrow['day_of_month']);
sg('tomorrow.dayOfWeekTXT', $tomorrow['day_of_week']);
sg('tomorrow.dayOfWeekNum', $tomorrow['day_num']);
sg('tomorrow.isWeekDay', $tomorrow['weekDay']);
|
Бра
|
включение тусклого освещения на Ильюшкиной бра
callMethod('MegaD3_Relays10.turnOn');
callMethod('MegaD3_Relays10.turnOff');
callMethod('MegaD3_Relays10.turnOn');
callMethod('MegaD3_Relays10.turnOff');
callMethod('MegaD3_Relays10.turnOn');
|
Прожектор
|
работа прожектора во дворе
if(gg('isDark')) {
callMethod('MegaD2_Relays7.turnOn'); // включаем свет
SetTimeOut("lightOff",'callMethod("MegaD2_Relays7.turnOff");', 5*60);
} else {
callMethod("MegaD2_Relays7.turnOff");
}
|
AlarmPhones
|
Сработал будильник на телефоне
say($params ['boss']. '! Сработал будильник на Вашем телефоне! Будьте любезны отключить его!',2);
|
birthday
|
Дни рождения
say ("Проверим, есть ли сегодня дни рождения у кого-нибудь из пользователей.",-1);
$TCd=gg("ThisComputer.DayOfMonthNum");
$TCm=gg("ThisComputer.MonthNum");
$fullName='unknown';
$objects=getObjectsByClass("Users");
foreach($objects as $obj) {
$user=$obj['TITLE'];
list($USd, $USm, $USy) = explode(".", gg($user.".Brithday"));
if (($USd == $TCd)&($USm == $TCm)) {
$fullName=gg($user.".fullName");
$bodytext=$fullName.": ";
$bodytext.=getRandomLine(birthday);
$bodytext.=" С днем рождения!";
say($bodytext,1);
sleep (15);
playSound('pust_begut_neukliuzhe');
// runScript('send_mes', array('to'=>$fullName,'subj'=>"- HappyBirthday -",'msg'=>$bodytext,'what'=>"SMS"));
}
}
if ($fullName=='unknown') {
say ("На сегодня я дней рождения не обнаружила.",-1);
}
|
dayGreeting
|
Добрый день
say('Добрый день ХОЗЯИН!!! Рада видеть Вас дома!!!',1);
|
eveningGreeting
|
Добрый вечер
say('Добрый вечер мои ДОРОГИЕ! Как я рада Вашем приходу!',1);
|
goodNight
|
Спокойной ночи
say('Дети! Пора ложиться спать! Готовьте свои постели ко сну, а я Вам через 5 минут спою колыбельную',1);
SetTimeOut("goodNightSay", 'say ("Спокойной ночи, Мои дорогие! Приятных снов!",1);',5*60);
SetTimeOut("goodNightPlaySound", 'playSound("spokojnojnochimalyshi");',305);
|
HolidaysToday
|
Праздники сегодня
libxml_use_internal_errors(true);
$rss = simplexml_load_file("http://www.calend.ru/img/export/calend.rss");
//var_dump(ini_get('allow_url_fopen'));
//var_dump($rss);
if($rss != false) {
$strDate = gg('ThisComputer.DayOfMonthNum') . " " . gg('ThisComputer.MonthTXTalt') . ' - ';
$hol = '';
foreach ($rss->channel->item as $item) {
$pos = strpos($item->title, $strDate);
if ($pos !== false) {
//echo $item->title . " ; " . $item->category . "<br />";
$hol .= str_replace($strDate, "", $item->title) . ", ";
}
}
if ($hol != '') {
sg ('ThisComputer.HolidaysToday',$hol);
say('Праздники и события на сегодня: ' . $hol,1);
}
}
else {
echo "Failed loading XML\n";
foreach (libxml_get_errors() as $error) {
echo "\t", $error->message;
}
}
|
iiiBot
|
виртуальный собеседник
define('BOT_TOKEN', 'a6dc5cab-70ca-44f4-b507-4252a845d1f5'); //Идентификатор бота с iii.ru
class Bot {
protected $key = null;
protected $session = null;
private $salt = 'some very-very long string without any non-latin characters due to different string representations inside of variable programming languages';
/**
* @param $key - Ключ из урла после создания инфа
*/
public function __construct($key) {
$this->key = $key;
}
/**
* @param null $session - Идентификатор сессии существуюющей, если нет то создается новая
* @return string Идентификатор текущей сессии
*/
public function session($session = null) {
if ($session === null) {
$response = file_get_contents('http://iii.ru/api/2.0/json/Chat.init/' . $this->key . '/');
$this->session = $this->decode($response)->result->cuid;
} else {
$this->session = $session;
}
return $this->session;
}
/**
* ОТправить сообщение боту
* @param string $message Сообщение
* @return string Ответ
*/
public function say($message) {
$request = '["' . $this->session . '","' . $message . '"]';
$myCurl = curl_init();
curl_setopt_array($myCurl, array(
CURLOPT_URL => 'http://iii.ru/api/2.0/json/Chat.request',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $this->encode($request)
));
$response = curl_exec($myCurl);
curl_close($myCurl);
return $this->decode($response)->result->text->tts;
}
/**
* Кодирование сообщения
* @param $message
* @return string
*/
private function encode($message) {
$message = base64_encode($message);
$ml = strlen($message);
$kl = strlen($this->salt);
$encoded = "";
for ($i = 0; $i < $ml; $i++) {
$encoded = $encoded . ($message[$i] ^ $this->salt[$i % $kl]);
}
return base64_encode($encoded);
}
/**
* Декодирование сообщения
* @param $message
* @return mixed|null
*/
private function decode($message) {
$msg = base64_decode($message);
$ml = strlen($msg);
$kl = strlen($this->salt);
$decoded = "";
for ($i = 0; $i < $ml; $i++) {
$decoded.= ($msg[$i] ^ $this->salt[$i % $kl]);
}
return json_decode(base64_decode($decoded));
}
}
if ($params['message']) {
$sessionId = gg('ThisComputer.iiiBotSessionId');
$message = $params['message'];
$bot = new Bot(BOT_TOKEN);
if ($sessionId == '') {
$session = $bot->session();
sg('ThisComputer.iiiBotSessionId', $session);
} else {
$session = $bot->session($sessionId);
}
$response = $bot->say($message);
say($response);
}
|
InComing
|
Звонок телефона
say($params ['boss']. '! Вам звонит '. $params ['name']. ' номер '.$params ['number'],1);
|
morningGreeting
|
Доброе утро!
$status="";
$status.="Доброе утро!!! ";
$status.="Сегодня ".gg('today.dayOfMonthTXT');
$status.=" ".gg('today.monthTXTalt');
$status.=" ".gg('today.dayOfWeekTXT');
say($status,1);
// say("Сегодня ". gg('today.dayOfMonthTXT')."". gg('today.monthTXTalt')."". gg('today.dayOfWeekTXT'),1);
|
NowSayWeather
|
Погода сейчас
$status="Сейчас за окном";
// Температура
$w=round(gg("ow_fact.temperature"));
$tempw=$w;
if($w < "0"){
$tempw=abs($w);
}
if($w > "0"){
$templus=" +";
}
if($tempw >= 11 and $tempw <= 14){
$tempcels=" градусов ";
}else{
while ($tempw > 9){
$tempw=$tempw-10;
}
if($tempw == 0 or $tempw >= 5 and $tempw <= 9){
$tempcels= градусов ; }
if($tempw == 1){
$tempcels= градус ; }
if($tempw >= 2 and $tempw <= 4){
$tempcels= градуса ; }
}
$status.=' ' .$templus. ' '. "$w" .' ' .$tempcels.' Цельсия,';
// облачность
$status.=" ". gg("ow_fact.weather_type").".";
// Влажность
$status.=' Относительная влажность: '. gg('ow_fact.humidity')."%. ";
// Давление
$pressure=round(gg("ow_fact.pressure_mmhg"));
if ($pressure<728) {
$stp=" Атмосферное давление пониженное, ";
} elseif ($pressure>768) {
$stp=" Атмосферное давление повышенное, ";
} else {
$stp=" Атмосферное давление нормальное, ";
}
$status.="$stp". "и составляет " .$pressure." милиметров ртутного столба. ";
// Направление ветра
$dir =round(gg("ow_fact.wind_direction"),1, PHP_ROUND_HALF_DOWN);
$windDirection = ['Северный ', 'Северо-северо-восточный ', 'Северо-восточный ', 'Восточно-северо-восточный ', 'Восточный ', 'Восточно-юго-восточный ', 'Юго-восточный ', 'Юго-юго-восточный ', 'Южный ', 'Юго-юго-западный ', 'Юго-западный ', 'Западно-юго-западный ', 'Западный ', 'Западно-северо-западный ', 'Северо-западный ', 'Северо-северо-западный ', 'Северный '];
$direction = $windDirection[round($dir / 22.5)];
// $status.= 'Ветер '."$direction ";
// Скорость ветра
$windspeed=round(gg('ow_fact.wind_speed'));
$temps=$windspeed;
if($temps >= 11 and $temps <= 14){
$tempspeed=" метров ";
}else{
while ($temps > 9){
$temps=$temps-10;
}
if($temps == 0 or $temps >= 5 and $temps <= 9){
$tempspeed= метров ; }
if($temps == 1){
$tempspeed= метр ; }
if($temps >= 2 and $temps <= 4){
$tempspeed= метра ; }
}
//
if ($windspeed<1) {
$stw.=" Ветра нет. ";
} elseif ($windspeed<3) {
$stw.=" Ветер слабый. ";
} elseif ($windspeed<6) {
$stw.=" Ветер умеренный. ";
} elseif ($windspeed<9) {
$stw.=" Ветер сильный. ";
} else {
$stw.=" Ожидается ураган ";
}
$status.= "$stw". $direction. $temps. ' ' .$tempspeed.' в секунду.';
say($status,1);
|
SayJokes
|
Анекдоты
/*
1 - Анекдот;
2 - Рассказы;
3 - Стишки;
4 - Афоризмы;
5 - Цитаты;
6 - Тосты;
8 - Статусы;
11 - Анекдот (+18);
12 - Рассказы (+18);
13 - Стишки (+18);
14 - Афоризмы (+18);
15 - Цитаты (+18);
16 - Тосты (+18);
18 - Статусы (+18);
*/
function GetJoke($ctype = 11) {
$pretext = array("Слушай", "Слушайте шутку", "Слушай анекдот", "Вот шутка смешная", "Еще шутка");
$number = mt_rand(0, count($pretext) - 1);
$res = geturl('http://rzhunemogu.ru/Rand.aspx?CType=' . $ctype, 0);
$res = win2utf($res);
$xml = new SimpleXMLElement($res);
$joke = trim(preg_replace('/\s{2,}/', ' ', $xml->content));
$joke = $pretext[$number] . ': ' . $joke;
if (strlen($joke) > 500) {
sleep(10);
GetJoke();
} else {
//return $joke;
//say($pretext[$number].':', 1);
say($joke, 1);
}
}
//if (gg('ThisComputer.SayJokes') != 0) {
GetJoke();
//}
|
SayMoneyExchange
|
проговаривание курса валют
$status="";
$status.="Сегодня курс валют Центрального Банка России состовляет: ";
$status.="доллар - ".gg('USD.data'). " рубля. ";
$status.="евро - ".gg('EUR.data'). " рубля. ";
$status.="100 казахских тенге - ".gg('KZT.data'). " рубля. ";
$status.="10 китайских юаней - ".gg('CNY.data'). " рубля. ";
say($status,1);
|
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,1);
}
|
TodaySayWeather
|
Погода на сегодня
$status="Сегодня синоптики нам обещают:";
// Температура
$w_day=round(gg("ow_day0.temp_day"));
$w_night=round(gg("ow_day0.temp_night"));
$tempw=$w_night;
if($w_night < "0"){
$tempw=abs($w_night);
}
if($w_night > "0"){
$tem_night_plus=" +";
}
if ($w_day > "0"){
$tem_day_plus=" +";
}
if($tempw >= 11 and $tempw <= 14){
$tempcels=" градусов ";
}else{
while ($tempw > 9){
$tempw=$tempw-10;
}
if($tempw == 0 or $tempw >= 5 and $tempw <= 9){
$tempcels= градусов ; }
if($tempw == 1){
$tempcels= градус ; }
if($tempw >= 2 and $tempw <= 4){
$tempcels= градуса ; }
}
$status.=' Днем' .$tem_day_plus. "$w_day, " .' Ночью '. $tem_night_plus. ' '."$w_night " .$tempcels.' Цельсия,';
// облачность
$status.=" ". gg("ow_day0.weather_type").".";
// Влажность
$status.=' Относительная влажность: '. gg('ow_day0.humidity')."%. ";
// Давление
$pressure=round(gg("ow_day0.pressure_mmhg"));
if ($pressure<728) {
$stp=" Атмосферное давление будет пониженным, ";
} elseif ($pressure>768) {
$stp=" Атмосферное давление будет повышенным, ";
} else {
$stp=" Атмосферное давление будет нормальным, ";
}
$status.="$stp". "и составит " .$pressure." милиметров ртутного столба. ";
// Направление ветра
$dir =round(gg("ow_day0.wind_direction"),1, PHP_ROUND_HALF_DOWN);
$windDirection = ['Северным ', 'Северо-северо-восточным ',
'Северо-восточным ', 'Восточно-северо-восточным ',
'Восточным ', 'Восточно-юго-восточным ', 'Юго-восточным ',
'Юго-юго-восточным ', 'Южным ', 'Юго-юго-западным ',
'Юго-западным ', 'Западно-юго-западным ', 'Западным ',
'Западно-северо-западным ', 'Северо-западным ',
'Северо-северо-западным ', 'Северным '];
$direction = $windDirection[round($dir / 22.5)];
// Скорость ветра
$windspeed=round(gg('ow_day0.wind_speed'));
$temps=$windspeed;
if($temps >= 11 and $temps <= 14){
$tempspeed=" метров ";
}else{
while ($temps > 9){
$temps=$temps-10;
}
if($temps == 0 or $temps >= 5 and $temps <= 9){
$tempspeed= метров ; }
if($temps == 1){
$tempspeed= метр ; }
if($temps >= 2 and $temps <= 4){
$tempspeed= метра ; }
}
//
if ($windspeed<1) {
$stw.=" Ветра почти не будет нет. ";
} elseif ($windspeed<3) {
$stw.=" Ожидается слабый ветерок. ";
} elseif ($windspeed<6) {
$stw.=" Ветер будет умеренным. ";
} elseif ($windspeed<9) {
$stw.=" Ожидается сильный ветер. ";
} else {
$stw.=" должен быть ураган ";
}
$status.= "$stw". $direction. $temps. ' ' .$tempspeed.' в секунду.';
sg("ThisComputer.TodayWeather",$status);
say($status,1);
|
Demo01
|
Здравствуйте, меня зовут Алиса. Я представляю систему умного дома Мажордомо и сейчас расскажу о том, что я знаю и умею.
rs('DemoSay','Здравствуйте, меня зовут Алиса.');
rs('DemoSay','Я представляю систему умного дома Мажордомо.');
rs('DemoSay','и сейчас расскажу о том, что я знаю и умею. ');
sleep(1);
//setTimeOut('DemoTimer',"runScript('Demo02')",1);
|
Demo02
|
Во-первых, я в курсе того, какая температура в разных комнатах и могу регулировать систему отопления, в зависимости от ваших предпочтений. Например, сейчас в гостиной ХХ градусов цельсия -- это оптимальная температура и я отключила подогрев для экономии расхода газа (или: это немного прохладно и я включила подогрев). Влажность воздуха ХХ процентов. Если дома будет сухо, то я включу увлажнитель воздуха. Так же я знаю, что на улице сегодня ХХ дождь,снег, а завтра будет ХХ ясно. Я обязательно предупрежу об этом утром.
rs('DemoSay','First of all I do know the temperature in every room.');
rs('DemoSay','I can control heating according to your preferences.');
$t=gg('Livingroom.Temperature');
rs('DemoSay','Take a look at the daily chart.');
runScript('runCommandHP',array('cmd'=>'explorer "http://192.168.0.17/jpgraph/?p=sensorZal.temp&type=24h&width=1500&height=500"'));
rs('DemoSay','Now it is '.$t.' degrees in the living room');
if ($t>=gg('ThisComputer.ZalTemp')) {
rs('DemoSay','Temperature is optimal so I have turned off heating to save the energy.');
} else {
rs('DemoSay','It is pretty cold so the heating is turned on.');
}
$h=gg('sensorHumidityRemote3.humidity');
rs('DemoSay','Humidity is '.$h.' %.');
rs('DemoSay','When the air is dry I turn on the humidifier.');
$t=gg('ws.tempOutside');
$forecast=gg('WeatherTomorrow');
$forecast=str_replace('°','',$forecast);
$forecast=str_replace('...',' ',$forecast);
runScript('runCommandHP',array('cmd'=>'explorer http://pogoda.by/'));
rs('DemoSay','Also I do know that temperature outside is '.$t.' degrees.');
rs('DemoSay','Forecast for tomorrow is '.$forecast.' degrees.');
rs('DemoSay','Have a look at the detailed forecast on the screen.');
rs('DemoSay','I will remind about it in the morning.');
sleep(2);
setTimeOut('DemoTimer',"rs('Demo03')",1);
|
Demo03
|
В мои обязанности входит наблюдение за тем, где находятся мои хозяева. Я знаю, что Алексей сейчас …, а Наташа … Уровень заряда телефона Алексея ХХ процентов, а телефона Наташи ХХ процентов. Если телефон будет разряжен, то я об этом предупрежу. Так же я знаю, когда дома никого нет и когда кто-то приходит домой, чтобы рационально управлять домашними системами.
rs('DemoSay','One of my duties is locaiton tracking of family members.');
rs('DemoSay','I can show you where they have been for past 24 hours.');
runScript('runCommandHP',array('cmd'=>'explorer http://192.168.0.17/popup/app_gpstrack.html'));
$sergei_location=gg('Serge.seenAt');
$sergei_steps=gg('Serge.moves_walk_distance');
$sergei_level=gg('Serge.BattLevel');
$alesya_location=gg('Alesya.seenAt');
$alesya_level=gg('Alesya.BattLevel');
$alesya_steps=gg('Alesya.moves_walk_distance');
$sergei_location='home';
if ($sergei_location!='') {
rs('DemoSay','I do know that Sergei is in the place called '.$sergei_location);
}
/*
if ($sergei_location==$alesya_location) {
rs('DemoSay','Alice is in the same place');
} elseif ($alesya_location!='') {
rs('DemoSay','Alice is in the place called '.$alesya_location);
}
*/
//rs('DemoSay','Сергей прошёл вчера пешком '.$sergei_steps.' километров.');
rs('DemoSay','Battery level of his smartphone is at '.$sergei_level.' %.');
rs('DemoSay','I will notify when the phone\'s batter level will be running out.');
rs('DemoSay','Also I do know when nobody\'s home so I can set some appliences in a green mode.');
sleep(2);
setTimeOut('DemoTimer',"rs('Demo04')",1);
|
Demo04
|
Кстати, об управлении. Я могу управлять различными приборами или, например, светом. Вот смотрите, я сейчас немного поиграю с освещением. (переключает свет cветильников, меняет освещение) У меня записано несколько световых сцен под различные обстоятельства. Ещё по утрам я поднимаю шторы и закрываю их вечером, посмотрите как это происходит (в спальне поднимаются/опускаются шторы). Ко мне можно обратиться и через Интернет, так что вы можете меня попросить открыть ворота, даже если никого нет дома и с помощью системы видео-наблюдения контролировать, что происходит. (открывает ворота, выводит на компьютер картинку с камеры)
rs('DemoSay','Talking about control...');
rs('DemoSay','I can control different appliences and lights.');
rs('DemoSay','This is how I can play with lights.');
sleep(4);
cm('lcw1.switch');
sleep(1);
cm('lcw7.switch');
sleep(1);
cm('lcw8.switch');
sleep(1);
cm('lcw1.switch');
sleep(1);
cm('lcw2.switch');
sleep(1);
cm('lcw3.switch');
sleep(1);
cm('lcw4.switch');
callMethod("MiLamp2.setRandomColor");
rs('DemoSay','I have several scenarios for the lights and can run them autmatically.');
rs('DemoSay','Also I can close down the curtains in the evening and open them up in the morning.');
rs('DemoSay','This is how I do it.');
sleep(2);
callMethod('BedroomCurtains.open');
sleep(10);
rs('DemoSay','You can talk to me by the Internet so I can open the entry gates remotely.');
cm('EntryGates.open');
sleep(20);
cm('EntryGates.Close');
setTimeOut('DemoTimer',"rs('Demo05')",1);
|
Demo05
|
Кроме управления механизмами, я могу помочь и с развлечением. Например, сейчас включу какую-нибудь музыку из вашей коллекции. (включает музыку) Или, например, радио (включает радио). Ну или даже поставить мультфильм для ребёнка. (включает фильм на мониторе)
rs('DemoSay','Beside that I can help with entertainment.');
rs('DemoSay','For example, I can turn on some music from the list of your favorites.');
runScript('playFavoriteMusic');
sleep(15);
runScript('playPause');
sleep(2);
rs('DemoSay','Or I can play radio');
runScript('playSomethingCool');
sleep(16);
runScript('playPause');
sleep(2);
rs('DemoSay','And I can start some movie for the kids.');
runScript('runCommandHP',array('cmd'=>'explorer d:\001.avi'));
sleep(21);
runScript('runCommandHP',array('cmd'=>'cmd.exe /c taskkill /F /IM vlc.exe'));
sleep(2);
setTimeOut('DemoTimer',"rs('Demo07')",1);
|
Demo06
|
Ну как, понравилось? А ещё вы можете у меня что-нибудь спросить. Я могу найти ответы на вопросы “что такое” или “кто такой”. Попробуйте, спросите!
rs('DemoSay','How do you like it?');
rs('DemoSay','Also you can ask me about something');
rs('DemoSay','I can find answers to the questions "what is" or "who is"');
sleep(8);
context_activate(42);
|
Demo07
|
Спасибо за внимание и всегда к вашим услугам
rs('DemoSay','Thank you for attention. Always at your service!');
setTimeOut('DemoTimer',"rs('DemoEnd');",1);
|
DemoEnd
|
окончание демонстрационного режима
|
DemoSay
|
if (gg('DemoCancel')) {
return;
}
$ph='';
if (!is_array($params)) {
$ph=$params;
}
if (!$ph) {
$ph="Hello, world!";
}
/*
$path=ROOT.'cached/voice/sapi_'.md5($ph).'.mp3';
if (file_exists($path) && 0) {
echo str_replace('/','\\',DOC_ROOT.'/rc/madplay.exe '.$path);
exec(str_replace('/','\\',DOC_ROOT.'/rc/madplay.exe '.$path));
} else {
exec(('cscript '.DOC_ROOT.'/rc/sapi_cached.js '.utf2win($ph)));
}
*/
$google_file=GoogleTTS($ph, 'en');
//echo $google_file;
if ($google_file) {
@touch($google_file);
//echo(str_replace('/','\\',DOC_ROOT.'/rc/madplay.exe '.$google_file));
safe_exec(str_replace('/','\\',DOC_ROOT.'/rc/madplay.exe '.$google_file));
/*
$tmp=explode(' ',$ph);
$total=count($tmp);
$word_delay=2;
$total_delay=$total*$word_delay;
sleep($word_delay);
*/
}
|
DemoStart
|
setGlobal('DemoMode',1);
set_time_limit(180);
setTimeOut('DemoStart','runScript("Demo01");',1);
|