Спасибо!

Мы очень рады, что Вам нравится данный проект и вы проголосовали за его развитие.

Работа над задачами по проекту отнимает у его разработчика самое ценное — время, так что небольшая компенсация в виде материальной поддержки поднимет интерес к разработке и позволит сделать больше задач для общей пользы :)

OK

доработать сценарий импорта с сайте starline-online.ru

Владелец задачи: directman, Екатеринбург - Россия
Текущий статус: Отмена выполнения (архив)

тема на форуме http://majordomo.smartliving.ru/forum/viewtopic.ph...

Код требует небольшой доработки, так как второму запросу пришлось прикрутить кукисы из браузерного запроса. Код работает, но иногда выводится капча.

Для интеграции требуется установленная сигнализация или охранный маяк, подключеные к сервису starline телематика (starline-online.ru). Список сигнализаций можно узнать на сайте производителя. У меня сигнализация A93+CAN2LIN+GSM+установка вышли примерно в 17 т.р.

Работает: получение координат, статуса работы двигателя, охраны, напряжения, в общем всех параметров, что есть на сайте:
Скрипт сам создает объекты класса starline-online (его требуется создать предварительно), которые он получает с сайта.

Если кто доработает скрипт, добавлю бюджет проекта.

$cookie_file = ROOT . 'cached/starline_cookie.txt'; //в этом файле будет храниться сессия
//$cookie_file = 'dialog_cookie.txt'; //в этом файле будет храниться сессия
// STEP 1 -- LOGIN

$url = 'https://starline-online.ru/user/login'; // ссылка, по которой нам надо зайти
// задаём поля, которые будут отправлены при логине
$fields = array(
'LoginForm[login]' => gg('balance.StarlineLogin'), // номер телефона
'LoginForm[rememberMe]' => 'on',
'LoginForm[pass]' => gg('balance.StarlinePass')

);

//print_r($fields);
echo "<br>";
$fields_string = '';
foreach ($fields as $key => $value) {
$fields_string .= urlencode($key) . '=' . urlencode($value) . '&';
}
rtrim($fields_string, '&');
///echo $fields_string;

//echo "<br>";
echo $data;
echo "<br>";
echo "<br>";
$ch = curl_init();
//curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, count($fields));
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
//curl_setopt($ch, CURLOPT_POST, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0',
'Accept: application/json, text/javascript, /; q=0.01',
'Content-Type: application/x-www-form-urlencoded; charset=UTF-8',
'X-Requested-With: XMLHttpRequest'
));

$result = curl_exec($ch);
curl_close($ch);
echo $result;
echo "<br>";
echo "-------------------------";
echo "<br>";

echo $cookie_file;
//print_r($_COOKIE);
echo "<br>";

//STEP 2 -- GET DATA
echo "<br>";
echo "-------------------------";
echo "<br>";
$url = 'https://starline-online.ru/device?tz=300&_=1512134458324';
// это собственно страница, на которую нам надо заходить уже залогинившись
$ch = curl_init();
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
// curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
//curl_setopt($ch, CURLOPT_POST, count($fields));
//curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
//'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0',
//'Accept: application/json, text/javascript, /; q=0.01',
//'Content-Type: application/x-www-form-urlencoded; charset=UTF-8',
//'X-Requested-With: XMLHttpRequest'

':authority:starline-online.ru',
':method:GET',
':path:/device?tz=300&_=1513105401911',
':scheme:https',
'accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8',
'accept-encoding:gzip, deflate, br',
'accept-language:ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7',
'cookie:uechat_34028_first_time=1513103119079; _ym_uid=1513103122184396845; utmc=219212379; utmz=219212379.1513103122.1.1.utmcsr=(direct)|utmccn=
тут вставить из из отладчика браузера Гугл хром, нужно найти запрос по адресу и отуда выкусить код для вставки
'upgrade-insecure-requests:1',
'user-agent:Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Mobile Safari/537.36'

));

$result = curl_exec($ch);
curl_close($ch);
//SaveFile(ROOT . 'cached/dialog_result.txt', $result); // сохранять в файл не обязательно, это я делаю просто для того чтобы посмотреть что внутри

@unlink($cookie_file);

echo $result;
echo "<br>";
echo "-------------------------";
echo "<br>";
$data=json_decode($result,true);
//$objn=$data[0]['id'];
//print_r($data);
//$objn=$data[0]['answer']['devices']['alias'];

//echo $ctemp;
//echo $etemp;
//echo $imei;
//echo $name;
//echo $objn.'----------------';
//addClassObject('livegpstracks',$objn);
//$src=$data[0];

echo "<br>";
echo "-------------------------";
echo "<br>";

$names=$data['answer']['devices'];

foreach ($names as $key=> $value ) {
// echo $key.':'.$value. "<br>";
foreach ($value as $key2=> $value2 ) {
if ($key2=='alias' ) {
echo $key2.':'.$value2. "<br>";
//$devicename=strreplace(" ","",$value2);
$devicename=$value2;
if (gg($devicename."."."alias")<>$devicename) {
echo "добавляем новое устройство ".$devicename;
addClassObject('starline-online',$devicename);}
}
if (is_array($value2))
{echo "это массив";
echo "<br>";
foreach ($value2 as $key3=> $value3 ) {

echo $key3.':'.$value3. "<br>";

sg($devicename.'.'.$key3,$value3);
///
if (is_array($value3))
{echo "это массив";
echo "<br>";
foreach ($value3 as $key4=> $value4 ) {
echo $key4.':'.$value4. "<br>";
sg($devicename.'.'.$key4,$value4);
}}

///

}

} else {
echo $devicename.'.'.$key2."::::".$value2;
echo "<br>";
sg($devicename.'.'.$key2,$value2);
sg($devicename.'.updated',date('d.m.Y H:i:s'));

}
}
$url = BASE_URL . '/gps.php?latitude=' . gg($devicename.'.y')
. '&longitude=' . gg($devicename.'.x')
. '&altitude=' . gg($devicename.'.altitude')
. '&accuracy=' . gg($devicename.'.gpsaccuracy')
. '&provider=' . gg($devicename.'.gsm_lvl')
. '&speed=' .gg($devicename.'.speed')
. '&battlevel=' . gg($devicename.'.battery')
. '&charging=' . gg($devicename.'.charging')
. '&deviceid=' .gg($devicename.'.imei') ;

getURL($url, 0);

$pars= array(
'imei' => gg($devicename.'.imei'),
'x' => gg($devicename.'.y'),
'y' => gg($devicename.'.x'),
'speed' => gg($devicename.'.speed'),
'vysota' => gg($devicename.'.altitude')
);
print_r($pars);

runScript('livegpsupdate',$pars);
}

//////////////

Тэги: majordomo,старлайн starline автозапуск
 
(2)
 
Подписаться на обновления (7)
 

Недавно поддержали

directman 154.85 RUB
directman

)

21.16 RUB
directman

Сколько есть ))

4.81 RUB

Идеи по развитию

Вы можете помочь в развитии проекта, сообщив об ошибках, поделившись своими идеями или проголосовав за уже добавленные. В случае добавления ошибок, обязательно указывайте детали окружения (ОС, версия ПО и т.п.), сообщения об ошибках без деталей будут игнорироваться.

Другие задачи пользователя

Дополнение phpmyadmin
Дополнение sendemail
Дополнение mdmproxy
Дополнение mqtt_paw
Дополнение ironlogic
Дополнение deCONZ
Дополнение eq3-MAX!
Дополнение zigbee2mqtt
Дополнение Сamshoter
Дополнение ESPCounter
Дополнение BLEtool
Дополнение WOL
Дополнение Ржунемогу
Дополнение Mag250
Дополнение Счетчики Меркурий
Дополнение rtl433
Дополнение MagicHome
Дополнение Милур
Современная сцена для мажордомо
Дополнение slack
Дополнение livegpstracks.com
Дополнение starline-online.ru
Дополнение Виджет состояние системы
Дополнение webconsole
Дополнение Погода Яндекс
[Модуль] webconsole
[Модуль] livegpstracks.com
[Дополнение] виджет Состояние системы
[модуль] starline-online
Получение баланса МТС
Получение оценок школьника в сетевом городе ИРТЕХ