cameraFtpUpload
|
Камера залила новую картинку
$filename=$params['FILENAME'];
//sg("cameraFtpUploadFileName",basename($filename));
// Удалим самый старый файл
safe_exec("rm /var/www/ftp/".gg("WebCamScreen10.filename"));
// сдвинем все вниз на 1
sg("WebCamScreen10.filename",gg("WebCamScreen09.filename"));
sg("WebCamScreen09.filename",gg("WebCamScreen08.filename"));
sg("WebCamScreen08.filename",gg("WebCamScreen07.filename"));
sg("WebCamScreen07.filename",gg("WebCamScreen06.filename"));
sg("WebCamScreen06.filename",gg("WebCamScreen05.filename"));
sg("WebCamScreen05.filename",gg("WebCamScreen04.filename"));
sg("WebCamScreen04.filename",gg("WebCamScreen03.filename"));
sg("WebCamScreen03.filename",gg("WebCamScreen02.filename"));
sg("WebCamScreen02.filename",gg("WebCamScreen01.filename"));
sg("WebCamScreen01.filename",basename($filename));
// переберем все снимки и вырежем дату и время отдельно
$objects=getObjectsByClass("WebCamScreen");
foreach($objects as $obj) {
sg($obj['TITLE'].".date",substr(gg($obj['TITLE'].".filename"),17,4)."-".substr(gg($obj['TITLE'].".filename"),21,2)."-".substr(gg($obj['TITLE'].".filename"),23,2));
sg($obj['TITLE'].".time",substr(gg($obj['TITLE'].".filename"),25,2).":".substr(gg($obj['TITLE'].".filename"),27,2).":".substr(gg($obj['TITLE'].".filename"),29,2));
}
// Включим свет в туалете, если ночью кто-то проходит через зал
if(gg("SleepAllMode.active")&&(time()-gg("WebCamScreen01.timeStamp")>30*60)){
say("Включаю свет в туалете.");
callMethod("NooLiteD_TualetTop.turnOn"); // включим свет в туалете
SetTimeOut("NooLiteD_TualetTop_turnOff",'callMethod("NooLiteD_TualetTop.turnOff");', 25*60); // запланируем выключить свет в туалете через 25 минут
}
sg("WebCamScreen01.timeStamp",time());
|
sensorsUbuntu
|
Сенсоры сервера
exec("sensors",$asensors);
for($i=0;$i<count($asensors);$i++) {
ereg("[^:]*\:[ ]*([0-9+-.]*)",$asensors[$i],$arr);
$temp = trim($arr[1]);
$temp = str_replace('+','',$temp);
switch (substr($asensors[$i],0,6)) {
case 'temp1:':
sg('system_temp1',$temp);
break;
case 'Core 0':
sg('system_Core0',$temp);
break;
case 'Core 1':
sg('system_Core1',$temp);
break;
};
};
$temp=exec("\/usr\/sbin\/hddtemp \/dev\/sda1");
ereg("[^:]*\:[ ]*[^:]*\:[ ]*([0-9+-.]*)",$temp,$arr);
$temp = trim($arr[1]);
$temp = str_replace('+','',$temp);
sg('system_hdd1temp',$temp);
$data = shell_exec('uptime');
$uptime = explode(' up ', $data);
$uptime = explode(',', $uptime[1]);
sg('system_uptime',trim($uptime[0]));
$bytes = disk_free_space(".");
$si_prefix = array( 'B', 'KB', 'MB', 'GB', 'TB', 'EB', 'ZB', 'YB' );
$base = 1024;
$class = min((int)log($bytes , $base) , count($si_prefix) - 1);
$temp = round($bytes / pow($base,$class)) . ' ' . $si_prefix[$class];
sg('system_freespace',$temp);
|
getMisfitData
|
Получение данных
//$start_date='2014-11-01';
//$end_date='2014-11-01';
$start_date=gg('lemur.moves_ok');
$end_date=date("Y-m-d");
$access_token="eZmNzHKUHr04U3954gByB6QRmsboQcn7Ke36lf98B5WfTUs6NJXaN7oCOUITNmNbyoWrZH9zPylMqLPNgk98P9FJVmCMjK5cP9kOyrC0rhd1y3FbjbhzV9P8oEOoCxgTLJWw9i1MPBeZMp8ZV7S0psgSDwbPiADZibNIghEWudlcLe2XNz0DLJR8MG1THe4rMKSpKWnAHKh60NJQQrGbYbIvLNcqnWcUZgscxXLypgXQUbVMqzhnJd4mVrarnrw";
$url = "https://api.misfitwearables.com/move/resource/v1/user/me/activity/summary?start_date=".$start_date."&end_date=".$end_date."&detail=true&access_token=".$access_token;
$content=getURL($url,0);
$data=json_decode($content);
echo $data->summary[0]->date;
echo 2222;
print "555\n";
var_dump($content);
foreach($data->summary as $activity) {
if ((int)$activity->steps>0){
sg('lemur.moves_ok',$activity->date);
}
echo '111111111';
echo date('Y-m-d H:i:s',strtotime($activity->date." 23:59:59"));
echo '222222222';
echo $activity->date;
echo strtotime($activity->date." 23:59:59");
echo date_format(strtotime($activity->date." 23:59:59"),'Y-m-d H:i:s');
echo '3333333333333';
echo $activity->date." 23:59:59";
echo $activity->date." 23:59:59";
echo '2014-11-05 22:10:17';
setGlobalOnTime('lemur.moves_steps',$activity->steps,$activity->date." 23:59:59");
echo '4444444444';
echo (int)$activity->steps; //
setGlobalOnTime('lemur.moves_walk_distance',(float)$activity->distance*1.609,$activity->date." 23:59:59");
echo (float)$activity->distance*1.609; //
}
|
getMovesData
|
Получение данных
$date=date('Ymd',time()-24*60*60); // yesterday
$users=getObjectsByClass('Users');
foreach($users as $user) {
$object=$user['TITLE'];
$token=getGlobal($object.'.moves_token');
if ($token && getGlobal($object.'.moves_ok')!=$date) {
echo "User: $object<br>";
$res=getMovesData($token,$date);
if (isset($res['wlk']) ) {
$steps_total=$res['wlk']['steps'];
$steps_distance=round($res['wlk']['distance']/1000,2);
$transport_distance=round($res['trp']['distance']/1000,2);
setGlobal($object.'.moves_ok',$date);
setGlobal($object.'.moves_steps',$steps_total);
setGlobal($object.'.moves_walk_distance',$steps_distance);
setGlobal($object.'.moves_transport_distance',$transport_distance);
echo "Steps: $steps_total<br/>";
echo "Walk distance: $steps_distance<br/>";
echo "Transport distance: $transport_distance<br/>";
} else {
echo "Error getting data";
}
echo "<hr>";
}
}
//------------------------------------------------------
function getMovesData($token,$date) {
$data=array(
'date'=>$date,
'access_token'=>$token
);
$url ="http://moves-export.herokuapp.com/data";
$post = 'date='.$data['date'].'&access_token='.$data['access_token'];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS,$post);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$result = curl_exec($ch);
curl_close($ch);
$data=(array)json_decode($result);
$data = $data["data"][0];
$res=array();
foreach($data->segments as $segment) {
foreach($segment->activities as $activity) {
$res[$activity->activity]['distance']+=(float)$activity->distance;
$res[$activity->activity]['steps']+=(int)$activity->steps;
}
}
return $res;
}
|
getMovesData_copy
|
Получение данных
$date= '2014-11-09'; //date('Ymd',time()-24*60*60); // yesterday
$users=getObjectsByClass('Users');
foreach($users as $user) {
$object=$user['TITLE'];
$token=getGlobal($object.'.moves_token');
if ($token ) {
echo "User: $object<br>";
$res=getMovesData($token,$date);
if (isset($res['wlk']) ) {
$steps_total=$res['wlk']['steps'];
$steps_distance=round($res['wlk']['distance']/1000,2);
$transport_distance=round($res['trp']['distance']/1000,2);
echo "Steps: $steps_total<br/>";
echo "Walk distance: $steps_distance<br/>";
echo "Transport distance: $transport_distance<br/>";
} else {
echo "Error getting data";
}
echo "<hr>";
}
}
//------------------------------------------------------
function getMovesData($token,$date) {
$data=array(
'date'=>$date,
'access_token'=>$token
);
$url ="http://moves-export.herokuapp.com/data";
$post = 'date='.$data['date'].'&access_token='.$data['access_token'];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS,$post);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$result = curl_exec($ch);
curl_close($ch);
echo $result;
$data=(array)json_decode($result);
$data = $data["data"][0];
$res=array();
foreach($data->segments as $segment) {
foreach($segment->activities as $activity) {
echo "distance: $activity->distance<br/>";
$res[$activity->activity]['distance']+=(float)$activity->distance;
$res[$activity->activity]['steps']+=(int)$activity->steps;
}
}
return $res;
}
|
getWithingsData
|
Получает данные с сайта весов withings WS-50
echo "000<br />";
$wbs = new wbs_Account(); // создаем экземпляр класса
echo "001<br />";
$wbs->setUserEmail(gg('ws_ema.UserEmail')); //логин
$wbs->setUserPassword(gg('ws_ema.UserPassword')); //пароль
echo gg('ema.UserEmail')."002<br />";
$usersList = $wbs->getUsersList(); // берем список пользователей
echo "003<br />";
//print_r($usersList);
$objects=getObjectsByClass("WS");
foreach($objects as $obj) {
$usr = $obj['TITLE'];
echo gg($usr.".UserId")."111<br />";
foreach ($usersList as $user) {
$user->setLimit(3);
$measuresgroups = $user->getMeasures();
$userid = $user->getID();
if ($userid == gg($usr.".UserId")) { // указываем Id пользователя
if ($measuresgroups) {
print_r($measuresgroups );
foreach($measuresgroups as $group) {
$date = date('Y-m-d', $group->getDate());
$time = date('H:i:s', $group->getDate());
foreach($group->getMeasures() as $measure) {
if ($measure->getType() == 1){
$weight = $measure->getValue();//."\n";
}
elseif ($measure->getType() == 6){
$fatRatio = $measure->getValue();//."\n";
}
elseif ($measure->getType() == 11){
$heartPulse = $measure->getValue();//."\n";
}
}
}
}
}
}
sg($usr.".weightDate",$date);
sg($usr.".weightTime",$time);
sg($usr.".weight",$weight);
sg($usr.".fatRatio",$fatRatio);
sg($usr.".heartPulse",$heartPulse);
// вывод на экран
echo $userid."<br />";
echo $date."<br />";
echo $time."<br />";
echo $weight."<br />";
echo $fatRatio."<br />";
echo $heartPulse."<br />";
}
// вывод на экран
// echo $userid."<br />";
// echo $date."<br />";
// echo $time."<br />";
// echo $weight."<br />";
// echo $fatRatio."<br />";
// echo $heartPulse."<br />";
// запись в базу
//setGlobal("ScaleF.Userid",$userid);
//setGlobal("ScaleF.weightDate",$date);
//setGlobal("ScaleF.weightTime",$time);
//setGlobal("ScaleF.weight",$weight);
?>
|
погода yandex
|
Запрос погоды на yandex.ru
//$city_id=28807;
$data_file="http://export.yandex.ru/weather-ng/forecasts/28807.xml";//$city_id.xml?".rand(); // адрес xml файла
$xml = simplexml_load_file($data_file); // раскладываем xml на массив
$temp=$xml->fact->temperature;
// Если значение температуры положительно, для наглядности добавляем "+"
if ($temp>0) {$temp='+'.$temp;}
sg("YandexSamara.Temp",$temp);
sg("YandexSamara.City",$xml->city);
sg("YandexSamara.Type",$xml->fact->weather_type);
sg("YandexSamara.Pressure",$xml->fact->pressure);
sg("YandexSamara.Humidity",$xml->fact->humidity);
sg("YandexSamara.WindSpeed",$xml->fact->wind_speed);
sg("YandexSamara.Image",$xml->fact->image);
sg("YandexSamara.MorningTemp",$xml->{'day'}->{'day_part'}[0]->{'temperature-data'}->{'avg'});
sg("YandexSamara.MorningWeatherType",$xml->{'day'}->{'day_part'}[0]->{'weather_type'});
sg("YandexSamara.DayTemp",$xml->{'day'}->{'day_part'}[1]->{'temperature-data'}->{'avg'});
sg("YandexSamara.DayWeatherType",$xml->{'day'}->{'day_part'}[1]->{'weather_type'});
sg("YandexSamara.EveningTemp",$xml->{'day'}->{'day_part'}[2]->{'temperature-data'}->{'avg'});
sg("YandexSamara.EveningWeatherType",$xml->{'day'}->{'day_part'}[2]->{'weather_type'});
sg("YandexSamara.NightTemp",$xml->{'day'}->{'day_part'}[3]->{'temperature-data'}->{'avg'});
sg("YandexSamara.NightWeatherType",$xml->{'day'}->{'day_part'}[3]->{'weather_type'});
sg("YandexSamara.TomorrowDayTemp",$xml->{'day'}[1]->{'day_part'}[1]->{'temperature_to'});
sg("YandexSamara.TomorrowDayWeatherType",$xml->{'day'}[1]->{'day_part'}[1]->{'weather_type'});
$dir = $xml->fact->wind_direction;
switch ($dir){
case 's':
$dir="южное";
break;
case 'n':
$dir="северное";
break;
case 'w':
$dir="западное";
break;
case 'e':
$dir="восточное";
break;
case 'sw':
$dir="юго-западное";
break;
case 'nw':
$dir="северо-западное";
break;
case 'calm':
$dir="штиль";
break;
}
sg("YandexSamara.WindDir",$dir);
sg("YandexSamara.SunRise",$xml->day[0]->sunrise);
sg("YandexSamara.SunSet",$xml->day[0]->sunset);
// Запишем температуру вчерашнего дня для этого часа
$SQLText = " SELECT ph.value as val";
$SQLText.= " FROM pvalues pv, objects o, properties p, phistory ph ";
$SQLText.= " WHERE pv.object_id = o.id ";
$SQLText.= " AND p.id = pv.property_id ";
$SQLText.= " AND o.title = 'YandexSamara' ";
$SQLText.= " AND p.title = 'Temp' ";
$SQLText.= " AND ph.value_id = pv.id ";
$SQLText.= " AND UNIX_TIMESTAMP( pv.updated ) - UNIX_TIMESTAMP( ph.added ) <24 *60 *60 +30 *60 ";
$SQLText.= " ORDER BY ph.added ";
$SQLText.= " LIMIT 1 ";
$tempYesterday = SQLSelectOne($SQLText);
sg("YandexSamara.tempYesterday",$tempYesterday['val'] );
|
AutoRemoteMessage
|
отправляет сообщение hi на IP-телефона
$ip=gg('Nexus.address');
$msg='hi';
$data_string='{"message":"'.$msg.'","sender":"A_SUA_KEY","ttl":0,"communication_base_params":{"type":"Message","fallback":false,"via":"Wifi"},"version":"1.63"}';
$ch = curl_init('http://'.$ip.':1817/');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string))
);
$result = curl_exec($ch);
echo $result;
|
blueOff
|
Машина остановилась
say("Машина остановилась",5);
say(gg("ema.Location"),1);
if (isWeekDay() && timeBetween('07:00', '09:00')){
say('Миша приехал на работу');
}
if (isWeekDay() && timeBetween('17:00', '19:00')){
say('Миша приехал домой');
}
|
blueOn
|
Машина поехала
say("Машина поехала",5);
say(gg("ema.Location"),1);
|
call
|
Входящий телефонный звонок
$cname=trim($params['cname']);
say('Внимание, звонит '.$cname,1);
|
mute
|
Убирает все звуки
setGlobal('minMsgLevel',1);
if (gg("Radio.RadioIsPlay")){
callMethod("Radio.RadioStop");
}
|
powerConnect
|
sg('ema.charging',1);
say('Зарядное устройство подключено.');
|
powerDisconnect
|
sg('ema.charging',0);
say('Зарядное устройство отключено.');
|
shineOff
|
Shine потеряно
|
shineOn
|
Shine найдено
|
ZionIn
|
Zion появился
|
ZionInLemur
|
Zion появился
|
ZionOut
|
Zion пропал
|
ZionOutLemur
|
Zion пропал
|
13diod
|
if (getGlobal('ThisComputer.diod13val')) {
//exec("mode com1: BAUD=9600 PARITY=N data=8 stop=1 xon=off");
//exec("sudo chmod a+rw /dev/ttyUSB0");
exec("stty -F /dev/ttyUSB0 cs8 9600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts -hupcl");
$fp =fopen("/dev/ttyUSB0", "w");
fwrite($fp, chr(32));
fclose($fp);
say("Светодиод включен",5);
} else {
//exec("mode com1: BAUD=9600 PARITY=N data=8 stop=1 xon=off");
//exec("sudo chmod a+rw /dev/ttyUSB0");
exec("stty -F /dev/ttyUSB0 cs8 9600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts -hupcl");
$fp =fopen("/dev/ttyUSB0", "w");
fwrite($fp, chr(0));
fclose($fp); ;
say("Светодиод выключен",5);
}
|
ArduRead
|
Чтение с ардуины
exec("sudo chmod 777 /dev/ttyACM0");
exec("stty -F /dev/ttyACM0 cs8 9600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts -hupcl");
$fp =fopen("/dev/ttyACM0", "r");
while (fread($fp, 1) != 0xA) {
// fread($fp, 1);
$a = fgets($fp);
say($a);
}
fclose($fp);
say("Светодиод включен",5);
|
ArduRead2
|
Способ чтения с Ардуины через php_serial.class.php
include "php_serial.class.php";
say('1');
$serial = new phpSerial;
//Задаем путь к Arduino (У вас может быть совсем по другому)
say('2');
$serial->deviceSet("/dev/ttyACM0");
//Это стандарт
say('3');
$serial->confBaudRate(9600);
$serial->confParity("none");
$serial->confCharacterLength(8);
$serial->confStopBits(1);
$serial->confFlowControl("none");
say('4');
$serial->deviceOpen();
say('5');
//Отправляем команду
$serial->sendMessage(chr($_POST['msg']));
//Читаем ответ Arduino
say('6');
$read = $serial->readPort();
//Зыкрываем соединение
say('7');
$serial->deviceClose();
say($read);
|
compOff
|
getURL('http://192.168.1.183:8000/?action=System.Shutdown',0);
|
Getgeocode
|
say(Getgeocode('50.24191','53.228075'));
//$data_file="http://geocode-maps.yandex.ru/1.x/?geocode=E50.24191,N53.228075"; // адрес xml файла
// $xml = simplexml_load_file($data_file); // раскладываем xml на массив
// $res=$xml->{'ymaps'}->{'GeoObjectCollection'}->{'featureMember'}[0]->{'GeoObject'}->{'metaDataProperty'}->{'GeocoderMetaData'}->{'AddressDetails'}->{'Country'}->{'AddressLine'};
// $res=$xml->{'GeoObjectCollection'}->{'featureMember'}[0]->{'GeoObject'}->{'metaDataProperty'}->{'GeocoderMetaData'}->{'AddressDetails'}->{'Country'}->{'AddressLine'};
// say($res);
|
iii
|
iii
class ModIiiRu
{
// IiiID можно взять из ссылки на бота из рейтинга
// const IiiID = '3aecd642-3f4c-431d-8124-123906a34882';
// выдери ответ нужного ифа и подставь в нижнюю строку
const IiiID = '6d739a70-bc74-46f6-8a95-79730c2e6ed0';
public function cmd($cmd)
{
$data = json_encode(array(self::IiiID, $cmd));
$data = self::xorKey($data, false);
$data = self::sendMessage($data);
$data = json_decode($data);
$text = $data->result->text->value;
return $text;
}
private static function sendMessage($send){
$url='http://iii.ru/api/2.0/json/Chat.request';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 3);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $send);
$res = curl_exec($ch);
if (!$res)
return false;
curl_close($ch);
return self::xorKey($res, true);
}
public static function xorKey($res, $decode)
{
$key = "some very-very long string without any non-latin characters due to different string representations inside of variable programming languages";
$keylen = strlen($key);
$res = $decode ? base64_decode($res) : base64_encode($res);
$strlen = strlen($res);
$i = 0;
$result = '';
while ($i<$strlen)
{
$buf = $res[$i] ^ $key[$i % $keylen];
$result .= $buf;
$i++;
}
$result= $decode ? base64_decode($result) : base64_encode($result);
return $result;
}
}
$command=$params['command'];
$mod = new ModIiiRu();
say($mod->cmd($command));
//say("111111111111111");
//$data1 ="JBYkV3oyBgg2ejNWPzoRBTYUBBA/ICNbNA15AyYzLVo7JxBSIS1DFCIpYBU7IDMCeicpCD4iLyULSzRhVDkPcQcbY1VZPy8MKjRTSQ:";
//$data1 = $mod->xorKey($data1, true);
//say($data1);
|
PogodaSay
|
Проговаривает погоду
say(gg("Sinoptik.description"),1);
|
t3
|
date("Y-m-d", $time)
//say(date("Y-m-d", $time));
//say((date("YmdHis",substr(gg("WebCamScreen01.filename"),17,14))));
say(time()-1384253721);
|
test
|
$uagent = "Opera/9.80 (Windows NT 6.1; WOW64) Presto/2.12.388 Version/12.14";
$ch = curl_init( 'http://www.yandex.ru' );
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_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;
say($content);
|
test111
|
$data_file="http://export.yandex.ru/weather-ng/forecasts/28807.xml";//$city_id.xml?".rand(); // адрес xml файла
$xml = simplexml_load_file($data_file); // раскладываем xml на массив
$temp=$xml->fact->temperature;
echo $temp;
//$image1=$xml->fact->image;
$image2=$xml->fact->{'image-v3'};
echo $image2;
|
test333
|
Тестирование отправки сообщений на телефон Миши
callMethod("ema.SendSMS",array("value"=>"Внимание включена тревога!!!"));
|
testtest
|
say(date( "H:i", time()),0);
|
test_setGlobalOnTime
|
test_setGlobalOnTime
echo '11';
setGlobalOnTime('test1.prop','680','2014-11-05 22:10:17');
echo '22';
|
timeNow
|
|
тест ВК
|
runScript("VkMusic", array('VALUE'=>'19714559', 'MODE'=>0));
|
тест календаря
|
include_once('./modules/app_calendar/app_calendar.class.php');
$calendar=new app_calendar();
$calendar->usual($out);
$id = 20;
$calendar->task_done($id);
|
Intercom_Open
|
Открыть домофон
sg('Relay_Intercom_On.status',1);
sleep(1);
sg('Relay_Intercom_On.status',0);
|
SavePhoto
|
Сохраняет фотку
safe_exec('wget -O /var/www/ftp/Doorbell'.date("YmdHis").'.jpg http://192.168.1.111:8080/?action=snapshot');
|
sayTodayAgenda
|
Cкрипт, который по утрам может говорить запланированные на сегодня дела и события, используя данные из модуля Календарь
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);
}
|
shutdownBigComp
|
Выключает большой компьютер
say('Выключаю компьютер');
safe_exec("smbclient //192.168.1.183/shutdown -U alice 1 -c 'prompt; mput 1.txt'");
|
ventilyation30min
|
Включение вентиляции на пол часа
say("Внимание! Вентиляция включена.",1);
callMethod("NooLiteD_KuhnyaVit.turnOn");
callMethod("NooLiteD_TualetVit.turnOn");
SetTimeOut("Vent_Off",'callMethod("NooLiteD_KuhnyaVit.turnOff");callMethod("NooLiteD_TualetVit.turnOff");say("Вентиляция выключена.",1);', 60*30);
|
VkMusic
|
Скрипт для прослушивания музыки Вконтакте
if ($params['VALUE']) {
getURL('http://192.168.1.140:8080/requests/status.xml?command=pl_empty',0);
$token = '90f746152410e109e724079ff711ec8e64fd1475878028fb100e227c48213714934050d4516b4605087dd';
if ($params['MODE'] != 0) {
$trackName = $params['VALUE'];
$link = 'https://api.vk.com/method/audio.search.xml?q=' . urlencode($trackName) . '&count=50&access_token=' . $token;
} else {
$uid = $params['VALUE'];
$link = 'https://api.vk.com/method/audio.get.xml?uid=' . urlencode($uid) . '&access_token=' . $token;
}
$res = getURL($link,0);
$xml = new SimpleXMLElement($res);
// $tempPlaylist = sys_get_temp_dir() . "\playlist.m3u";
$tempPlaylist = "/tmp/playlist.m3u";
$fp = fopen($tempPlaylist, "w");
fwrite($fp, '#EXTM3U' . "\r\n");
foreach ($xml->audio as $item) {
fwrite($fp, '#EXTINF:' . $item->duration . ', ' . $item->artist . ' - ' . $item->title . "\r\n");
fwrite($fp, $item->url . "\r\n");
fwrite($fp, "\r\n");
}
fclose($fp);
// getURL('http://127.0.0.1/rc/?command=vlc_play¶m='.$tempPlaylist, 0);
getURL('http://192.168.1.140:8080/requests/status.xml?command=in_play&input='.$tempPlaylist,0);
}
|
WOL
|
Отправляет компьютеру "волшебный" пакет, будит его
magicPacket('00:1a:4d:4d:7f:7e');
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;
}
}
}
|