espdata
|
прием данных с ESP8266
if ($params['idesp']=="") { return; } //Если ID устройства отсутствует, то перестаем отрабатывать сценарий
addClass('ESP8266'); //Создаем класс ESP8266
addClassObject('ESP8266',$params['idesp']); //Создаем в классе ESP8266 объект где в качестве имени
addClassProperty('ESP8266', 'vdd', 90); //Создаёт свойство класса и указывает, что необходимо хранить историю значений 90 дней
addClassProperty('ESP8266', 'bmpp', 90); //Создаёт свойство класса и указывает, что необходимо хранить историю значений 90 дней
addClassProperty('ESP8266', 'bmpt', 90); //Создаёт свойство класса и указывает, что необходимо хранить историю значений 90 дней
addClassProperty('ESP8266', 'dhth1', 90); //Создаёт свойство класса и указывает, что необходимо хранить историю значений 90 дней
addClassProperty('ESP8266', 'dhth2', 90); //Создаёт свойство класса и указывает, что необходимо хранить историю значений 90 дней
addClassProperty('ESP8266', 'dhtt1', 90); //Создаёт свойство класса и указывает, что необходимо хранить историю значений 90 дней
addClassProperty('ESP8266', 'dhtt2', 90); //Создаёт свойство класса и указывает, что необходимо хранить историю значений 90 дней
addClassProperty('ESP8266', 'dsw1', 90); //Создаёт свойство класса и указывает, что необходимо хранить историю значений 90 дней
addClassProperty('ESP8266', 'updated', 1); //Создаёт свойство класса и указывает, что необходимо хранить историю значений 1 дней
addClassProperty('ESP8266', 'updatedTime', 1); //Создаёт свойство класса и указывает, что необходимо хранить историю значений 1 дней
addClassProperty('ESP8266', 'alive', 1); //Создаёт свойство класса и указывает, что необходимо хранить историю значений 1 дней
//Распихиваем всё по свойствам. Если полученное значение пустое, то свойство не записываем
if ($params['bmpp']!="") { sg(($params['idesp'].".bmpp"),$params['bmpp']); } //Данные с датчика BMP (давление)
if ($params['bmpt']!="") { sg(($params['idesp'].".bmpt"),$params['bmpt']); } //Данные с датчика BMP (температура)
if ($params['counter']!="") { sg(($params['idesp'].".counter"),$params['counter']); } //Количество импульсов со счетчика
if ($params['dhth1']!="") { sg(($params['idesp'].".dhth1"),$params['dhth1']); } //Данные с первого датчика DHT (влажность)
if ($params['dhth2']!="") { sg(($params['idesp'].".dhth2"),$params['dhth2']); } //Данные со второго датчика DHT (влажность)
if ($params['dhtt1']!="") { sg(($params['idesp'].".dhtt1"),$params['dhtt1']); } //Данные с первого датчика DHT (температура)
if ($params['dhtt2']!="") { sg(($params['idesp'].".dhtt2"),$params['dhtt2']); } //Данные со второго датчика DHT (температура)
if ($params['dsw1']!="") { sg(($params['idesp'].".dsw1"),$params['dsw1']); } //Данные с датчика DS18B20 №1
if ($params['dsw2']!="") { sg(($params['idesp'].".dsw2"),$params['dsw2']); } //Данные с датчика DS18B20 №2
if ($params['dsw3']!="") { sg(($params['idesp'].".dsw3"),$params['dsw3']); } //Данные с датчика DS18B20 №3
if ($params['dsw4']!="") { sg(($params['idesp'].".dsw4"),$params['dsw4']); } //Данные с датчика DS18B20 №4
if ($params['dsw5']!="") { sg(($params['idesp'].".dsw5"),$params['dsw5']); } //Данные с датчика DS18B20 №5
if ($params['freemem']!="") { sg(($params['idesp'].".freemem"),$params['freemem']); } //Объем свободной памяти модуля
if ($params['hostname']!="") { sg(($params['idesp'].".hostname"),$params['hostname']); } //Имя модуля
if ($params['light']!="") { sg(($params['idesp'].".light"),$params['light']); } //Данные с датчика BH1750
if ($params['uptime']!="") { sg(($params['idesp'].".uptime"),$params['uptime']); } //Время непрерывной работы модуля
if ($params['vdd']!="") { sg(($params['idesp'].".vdd"),$params['vdd']); } //Напряжение на модуле
if ($params['ver']!="") { sg(($params['idesp'].".ver"),$params['ver']); } //Версия прошивки
if ($params['ip']!="") { sg(($params['idesp'].".ip"),$params['ip']); } //Версия прошивки
sg(($params['idesp'].".idesp"),$params['idesp']); //
|
frostCalc
|
расчет заморозков
$t13 = gg("Rostov.Temp13h"); // Считываем значение температуры в 13 часов дня
$t21 = gg("Rostov.Temp21h"); // Считываем значение температуры в 21 час вечера
if ($t13 == "" or $t21 == "") {return;} //Недостаточно данных для расчета заморозков
$z = "0%";
$x = $t13 - $t21;
if ( $t21 >= $t13 ) {return;} //Расчет заморозков невозможен. Температура растет
if ( $t21 < 0 ) {return;} //Расчет заморозков невозможен. Температура ниже нуля
if ( $t21 < 11 && $x < 11 )
{
$t_graph = array(
0 => array(0.375, 11, 0),
1 => array(0.391, 8.7, 10),
2 => array(0.382, 6.7, 20),
3 => array(0.382, 4.7, 40),
4 => array(0.391, 2.7, 60),
5 => array(0.4, 1.6, 80));
$z = "100%";
for ( $i = 0; $i < count($t_graph); $i++ )
{
$y1 = $t_graph[$i][0] * $x + $t_graph[$i][1];
if ( $t21 > $y1)
{
$z = $t_graph[$i][2]."%";
break;
}
}
}
//$frost="Вероятность заморозков: ";
$frost=$z;
sg("Rostov.frost",$frost);
|
getMovesData
|
прием данных с приложения Moves
$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;
}
|
OpenHardwareServer
|
Снятие показаний с сервера OHM
$ch = curl_init('http://192.168.1.200:8085/data.json');//здесь заменить IP на свой http://*:8085/data.json
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$ohm = curl_exec($ch);
$json = json_decode($ohm);
$TempMB = $json -> {'Children'}[0] -> {'Children'}[0] -> {'Children'}[0] ->{'Children'}[1] -> {'Children'}[0] -> {'Value'};
$FanMB = $json -> {'Children'}[0] -> {'Children'}[0] -> {'Children'}[0] ->{'Children'}[2] -> {'Children'}[0] -> {'Value'};
$TempCPU = $json -> {'Children'}[0] -> {'Children'}[1] -> {'Children'}[1] ->{'Children'}[0] -> {'Value'};
$UsedCPU = $json -> {'Children'}[0] -> {'Children'}[1] -> {'Children'}[2] ->{'Children'}[0] -> {'Value'};
$UsedMem = $json -> {'Children'}[0] -> {'Children'}[2] -> {'Children'}[0] ->{'Children'}[0] -> {'Value'};
$TempHDD = $json -> {'Children'}[0] -> {'Children'}[4] -> {'Children'}[0] ->{'Children'}[0] -> {'Value'};
$UsedHDD = $json -> {'Children'}[0] -> {'Children'}[4] -> {'Children'}[1] ->{'Children'}[0] -> {'Value'};
$TempMB = round($TempMB,1);
$FanMB = round($FanMB,1);
$TempCPU = round($TempCPU,1);
$UsedCPU = round($UsedCPU,1);
$UsedMem = round($UsedMem,1);
$TempHDD = round($TempHDD,1);
$UsedHDD = round($UsedHDD,1);
setGlobal('SmartServer.TempMB', $TempMB);
setGlobal('SmartServer.FanMB', $FanMB);
setGlobal('SmartServer.TempCPU', $TempCPU);
setGlobal('SmartServer.UsedCPU', $UsedCPU);
setGlobal('SmartServer.UsedMem', $UsedMem);
setGlobal('SmartServer.TempHDD', $TempHDD);
setGlobal('SmartServer.UsedHDD', $UsedHDD);
|
Pogoda Yandex
|
Снятие данных о погоде с Яндекс.Погода
$city_id=34735;
$data_file="http://export.yandex.ru/weather-ng/forecasts/$city_id.xml?".rand(); // адрес xml файла
$xml = simplexml_load_file($data_file); // раскладываем xml на массив
$temp=$xml->fact->temperature;
// отдельно записываем температуру в 13 и 21 для расчета заморозков
if (date('G')==13) {sg("Rostov.Temp13h",$temp);}
if (date('G')==21) {sg("Rostov.Temp21h",$temp);}
// Если значение температуры положительно, для наглядности добавляем "+"
if ($temp>0) {$temp='+'.$temp;}
sg("Rostov.Temp",$temp);
sg("Rostov.City",Ростов-на-Дону);
sg("Rostov.Type",$xml->fact->weather_type);
sg("Rostov.Pressure",$xml->fact->pressure);
sg("Rostov.Humidity",$xml->fact->humidity);
sg("Rostov.WindSpeed",$xml->fact->wind_speed);
sg("Rostov.Image",$xml->fact->image);
sg("Rostov.UpTime",$xml->fact->uptime);
$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 'se':
$dir="юго-восточный";
break;
case 'ne':
$dir="северо-восточный";
break;
case 'calm':
$dir="штиль";
break;
};
sg("Rostov.WindDir",$dir);
sg("Rostov.MoonRise",$xml->day[0]->moonrise);
sg("Rostov.MoonSet",$xml->day[0]->moonset);
$fase=$xml->day[0]->moon_phase;
switch ($fase){
case '0':
$fase="полнолуние";
break;
case '1':
$fase="убывающая Луна";
break;
case '2':
$fase="убывающая Луна";
break;
case '3':
$fase="убывающая Луна";
break;
case '4':
$fase="последняя четверть";
break;
case '5':
$fase="убывающая Луна";
break;
case '6':
$fase="убывающая Луна";
break;
case '7':
$fase="убывающая Луна";
break;
case '8':
$fase="новолуние";
break;
case '9':
$fase="растущая Луна";
break;
case '10':
$fase="растущая Луна";
break;
case '11':
$fase="растущая Луна";
break;
case '12':
$fase="первая четверть";
break;
case '13':
$fase="растущая Луна";
break;
case '14':
$fase="растущая Луна";
break;
case '15':
$fase="растущая Луна";
break;
default:
$fase="n/a";
};
sg("Rostov.Moonfase",$fase);
$dir1 = $xml->fact->season;
switch ($dir1){
case 'winter':
$dir1="зима";
break;
case 'summer':
$dir1="лето";
break;
case 'autumn':
$dir1="осень";
break;
case 'spring':
$dir1="весна";
break;
}
sg("Rostov.season",$dir1); //время года
$rain1=gg("Rostov.Type");
$rain2=$xml->day[0]->day_part[0]->weather_type;
$rain3=$xml->day[0]->day_part[1]->weather_type;
$rain4=$xml->day[0]->day_part[2]->weather_type;
$rain5=$xml->day[0]->day_part[3]->weather_type;
$rain=($rain1. $rain2. $rain3. $rain4. $rain5);
$pos = strpos($rain, "дожд");
if ($pos === false) {
sg("Rostov.Rain",0);
} else {
sg("Rostov.Rain",1);
}
|
RCSwitch
|
скрипт приема RC команд
$id=$params['rcswitch'];
// RCSwitch movment sensors
$obj = getObject($id);
if ($obj){
sg($id.".status", 1);
clearTimeOut($id.'_move');
setTimeOut("$id._move","sg(\"$id.status\",0);", 20);
exit;
}
DebMes("Unknown RCSwitch signal: $id");
|
SunsetChange
|
Расчет заката, восхода, сумерек
$sun_info = date_sun_info(time(), 47.05, 40.45);
$sunrise=$sun_info[sunrise];
$sunset=$sun_info[sunset];
$civil_beg=$sun_info[civil_twilight_begin];
$civil_end=$sun_info[civil_twilight_end];
$naut_beg=$sun_info[nautical_twilight_begin];
$naut_end=$sun_info[nautical_twilight_end];
$astro_beg=$sun_info[astronomical_twilight_begin];
$astro_end=$sun_info[astronomical_twilight_end];
$transit=$sun_info[transit];
$transit_night=$sunrise-$sunset;
$sunriseHum=date("H:i", $sunrise);
$sunsetHum=date("H:i", $sunset);
$transitHum=date("H:i", $transit);
$transitNightHum=date("H:i", $transit_night);
$civil_begHum=date("H:i", $civil_beg);
$civil_endHum=date("H:i", $civil_end);
$naut_begHum=date("H:i", $naut_beg);
$naut_endHum=date("H:i", $naut_end);
$astro_begHum=date("H:i", $astro_beg);
$astro_endHum=date("H:i", $astro_end);
sg("Rostov.Transit",$transitHum);
sg("Rostov.TransitNight",$transitNightHum);
sg("Rostov.Civilbeg",$civil_begHum);
sg("Rostov.Civilend",$civil_endHum);
sg("Rostov.SunRise",$sunriseHum);
sg("Rostov.SunSet",$sunsetHum);
|
updateEleCount
|
Обновление показаний счетчка
// получение мгновенных значений
ser_register("Ruslan Umaev #1","1874567298");
//подготовка данных
$cmd = array(0x00,0x00,0x27,0x75,0x63,0xF2,0xB2);
$c="";
for($i=0; $i < count($cmd); $i++){$c .= chr($cmd[$i]);}
//открытие порта, запись и чтение данных;
//открытие
ser_open("COM5", 9600, 8, "None", "1", "None");
// проверка доступности порта;
if (ser_isopen() == true ){$debmesa="1";
}else {$debmesa="0";
};
//запись данных;
ser_write($c);
sleep(1);
//чтение данных;
for ($i=0; $i<14; $i++) {$j = ser_readbyte(); $result[$i]=$j;
if ($result[$i]<0) ($result[$i]=$result[$i]+256);
};
//закрытие порта
ser_close();
//расчет значений;
$Uv = round(((($result[5])>>4)*100)+((($result[5])&0x0f)*10)+(($result[6])>>4)+((($result[6])&0x0f)/10),1);
$Ia = round(((($result[7])>>4)*10)+(($result[7])&0x0f)+((($result[8])>>4)/10)+((($result[8])&0x0f)/100),2);
$Pv = round(((($result[9])&0x0f)*10)+(($result[10])>>4)+((($result[10])&0x0f)/10)+((($result[11])>>4)/100)+((($result[11])&0x0f)/1000),3);
//Значения Uv, Ia, Pv теперь можно передать в базу MajorDoMo
sg('SensorVolt.value',$Uv);
sg('SensorAmper.value',$Ia);
sg('SensorVatt.value',$Pv);
sg('SensorVatt.alive',$debmesa);
sg('SensorAmper.alive',$debmesa);
sg('SensorAmper.alive',$debmesa);
//echo $Uv."Вольт"."<br>";
//echo $Ia."Ампер"."<br>";
//echo $Pv."кВт"."<br>";
sleep(1);
// получение данных счетчика
//подготовка данных
$cmd = array(0x00,0x00,0x27,0x75,0x27,0xF2,0x81);
$c="";
for($i=0; $i < count($cmd); $i++){$c .= chr($cmd[$i]);}
//открытие порта, запись и чтение данных;
//открытие
ser_open("COM5", 9600, 8, "None", "1", "None");
//запись данных;
ser_write($c);
sleep(1);
//чтение данных;
for ($i=0; $i<30; $i++) {$j = ser_readbyte(); $result[$i]=$j;
if ($result[$i]<0) ($result[$i]=$result[$i]+256);
};
//закрытие порта
ser_close();
//расчет значений;
$T1 = ((($result[6])>>4)*1000)+((($result[6])&0x0f)*100)+((($result[7])>>4)*10)+(($result[7])&0x0f)+((($result[8])>>4)/10)+((($result[8])&0x0f)/100);
$T2 = ((($result[10])>>4)*1000)+((($result[10])&0x0f)*100)+((($result[11])>>4)*10)+(($result[11])&0x0f)+((($result[12])>>4)/10)+((($result[12])&0x0f)/100);
$SUMM = $T1+$T2;
//Значение SUMM теперь можно передать в базу MajorDoMo
sg('ElectroMeter.counter',$SUMM);
sg('ElectroMeter.alive',$debmesa);
|
UpdateLocation
|
Обновление местонахождения
$locatAH=getGlobal("Ruslan.atHome"); //получить значение местонахождения дома
$locatAW=getGlobal("Ruslan.atWork"); //получить значение местонахождения на работе
$locatSA=getGlobal("Ruslan.seenAt"); //получить значение местонахождения по координатам
$locatNo="местонахождение неизвестно";
//проверяем метонахождение по GPS
if ($locatSA) {$locat=$locatSA;
} else { $locat=$locatNo;
} ;
// проверяем местонахождение дома
if ($locatAH=='1') {$locat="дома";
} ;
// проверяем местонахождение на работе
if ($locatAW=='1') {$locat="на работе";
};
setGlobal("Ruslan.Locat",$locat);
$locatAH=getGlobal('Galina.atHome'); //получить значение местонахождения дома
$locatAW=getGlobal('Galina.atWork'); //получить значение местонахождения на работе
$locatSA=getGlobal('Galina.seenAt'); //получить значение местонахождения по координатам
//проверяем метонахождение по GPS
if ($locatSA) {$locat=$locatSA;
} else { $locat=$locatNo;
} ;
// проверяем местонахождение дома
if ($locatAH=='1') { $locat="дома";
} ;
// проверяем местонахождение на работе
if ($locatAW=='1') { $locat="на работе";
};
setGlobal("Galina.Locat",$locat);
$locatAH=getGlobal("Yaroslav.atHome"); //получить значение местонахождения дома
$locatAW=getGlobal("Yaroslav.atWork"); //получить значение местонахождения на работе
$locatSA=getGlobal("Yaroslav.seenAt"); //получить значение местонахождения по координатам
//проверяем метонахождение по GPS
if ($locatSA) {$locat=$locatSA;
} else { $locat=$locatNo;
} ;
// проверяем местонахождение дома
if ($locatAH=='1') { $locat="дома";
} ;
// проверяем местонахождение на работе
if ($locatAW=='1') { $locat="на работе";
};
setGlobal("Yaroslav.Locat",$locat);
|
BalansModem
|
Запрос баланса 3G модема
include_once(ROOT.'lib/hardware/smsgw.php');
$res=sendUSD('*100#', '753951');
if (!$res) {setTimeOut('Balans','RunScript("BalansModem");',60);
} else {
$res=substr($res, 0, 3);
$balance=floatval($res);
sg('ThisComputer.Balance', $balance);
//say("Баланс ".round(gg("ThisComputer.Balance"))." рублей");
}
|
CountMounthWater
|
Снятие показаний водного счетчика суточное
//считываем текущее значение накопительного счетчика
//ДОДЕЛАТЬ
$old_countmounth=getGlobal("WaterMeter.counterMonth");
$countermounth=getGlobal("WaterMeter.counter");
$countmounth=$countermounth-$old_countmounth;
sg("WaterMeter.counterMonth",$countmounth);
|
jconhs
|
график Highstock
// Получить имя и проверить
if ( isset($params['name']) ) { $name = $params['name']; } else { returm; }
// Разбить на объект и свойство
$name = explode('.', $name);
// Получить объект по имени
$obj=getObject($name[0]);
// Получить id свойства
$prop_id=$obj->getPropertyByName($name[1], $obj->class_id, $obj->id);
// Получаем VALUE_ID для следующей таблицы
$pvalue=SQLSelectOne("SELECT * FROM pvalues WHERE PROPERTY_ID='".$prop_id."' AND OBJECT_ID='".$obj->id."'");
// Получаем таблицу
$arr_s = SQLSelect("SELECT UNIX_TIMESTAMP(ADDED) as ADDED, VALUE FROM phistory WHERE VALUE_ID='".$pvalue['ID']."' ORDER BY ADDED");
// Собрать структуру JSON
$st = $params['callback'].'([';
foreach($arr_s as $s) {
if ($f) { $st .=','; }
$st .= '['.$s['ADDED'].'000,'.$s['VALUE'].']' ;
$f=1;
}
$st .= '])';
// Ответ
echo ($st);
|
sendSMS
|
отправка SMS уведомлений
include_once(ROOT.'lib/hardware/smsgw.php');
$data=gg("SMSmesg.Text");
$repic=('+'.trim(gg("SMSmesg.Recipient")));
$res=sendSMS($repic, $data, "753951");
sg("SMSmesg.Text"," ");
|
systemMaintenance
|
Обслуживание системы
// Оптимизация данных
$host = 'localhost';
//$fp = popen('nohup php -f $host/scripts/optimize_history.php &', 'r');
//pclose($fp);
safe_exec("curl.exe --max-time=1800 $host/scripts/optimize_history.php");
// Оптимизация новостей
SQLExec("DELETE FROM rss_items WHERE TO_DAYS(NOW())-TO_DAYS(ADDED)>3");
|
test
|
setTimeOut('testTimer','say("Hello world!");',30);
|
timeNow
|
|
Tudey
|
Разбор текущей даты
//Узнаем и разбираем текущую дату
$days=array('воскресенье','понедельник','вторник','среда','четверг','пятница','суббота');
$months=array(1=>'январь','февраль','март','апрель','май','июнь','июль','август','сентябрь','октябрь','ноябрь','декабрь');
$months2=array(1=>'января','февраля','марта','апреля','мая','июня','июля','августа','сентября','октября','ноября','декабря');
$daymonth=array(1=>'первое','второе','третье','четвертое','пятое','шестое','седьмое','восьмое','девятое','десятое','одинадцатое','двенадцатое','тринадцатое','четырнадцатое','пятнадцатое','шестнадцатое','семнадцатое','восемнадцатое','девятнадцатое','двадцатое','двадцать первое','двадцать второе','двадцать третье','двадцать четвертое','двадцать пятое','двадцать шестое','двадцать седьмое','двадцать восьмое','двадцать девятое','тридцатое','тридцать первое');
$day_num=(int)date('w');
$month_num=(int)date('m');
$day_month=(int)date('j');
$day_of_month=$daymonth[$day_month];
$day_of_week=$days[$day_num];
$month_txt1=$months[$month_num];
$month_txt2=$months2[$month_num];
addClass('Time'); addClassObject('Time', 'Time');
sg('Time.MonthNum',$month_num);
sg('Time.MonthTXT',$month_txt1);
sg('Time.MonthTXTalt',$month_txt2);
sg('Time.DayOfMonthNum',$day_month);
sg('Time.DayOfMonthTXT',$day_of_month);
sg('Time.DayOfWeekTXT',$day_of_week);
sg('Time.DayOfWeekNum',$day_num);
//say("Узнаю и разбираю текущую дату");
|
WaterCounterUpdateHour
|
Снятие показаний водного счетчика часовое
//считываем из базы старое значение временного счетчика
$old_count=getGlobal("WaterMeter.tempcount");
//считываем текущее значение счетчика Меги в литрах
$state = file_get_contents('http://192.168.1.110/sec/?pt=1&cmd=get');
if (!$state) {$count=$old_count;
} else {$value = explode('/',$state);
$count = substr($value[1],0)*10;
}
//проверка на факт отключения питания
if ($count == 0){
if (timeBetween('01:05','23:50')) {
if ($old_count != 0) {
say ("Сбой питания MegaD", -1);
$count=$old_count;
}
}
}
//рассчитываем часовое потребление
$counthour=$count-$old_count;
sg('WaterMeter.hourIntake',$counthour);
// расчитываем накопительные показания счетчика
$old_countday=getGlobal("WaterMeter.counter");
$countday=$counthour/1000;
$countday=$old_countday + $countday;
sg('WaterMeter.counter',$countday);
if (timeIs('00:00')) {
sg('WaterMeter.dayIntake',$count);
//обнуляем показания накопительного счетчика в базе и обнуляем счетчик Меги
$count = 0;
$state = file_get_contents('http://192.168.1.110/sec/?pt=1&cnt=0');
}
//записываем в базу значения счетчиков
sg('WaterMeter.tempcount',$count);
callMethod("WaterMeter.countChanged");
|
wol
|
$ipaddr = "HTPC -i -d -u Ruslan";
$cmd="rundll32.exe Powrprof.dll,SetSuspendState";
$app='C:\\_majordomo\\apps\PSTools\\PsExec '.'\\'.$ipaddr.' '.$cmd;
safe_Exec($app);
|