Re: [Модуль] Sonoff (dev_sonoff)
Добавлено: Ср апр 10, 2019 5:43 pm
что то поздновато выпустили, нам такое уже не надо
Я пытаюсь)) честно. Оно работает, работает прикольно (в смысле моментально реагирует на всё), но отваливается иногда...я даже по ходу знаю причину, но пока не понял как решить.
Никита, исправь пожалуйста а то после обновы индикатор в gsm потерялся. Тут выше код правильный он в файле dev_sonoff_devices_search.incsamolet писал(а): Чт мар 21, 2019 10:06 pm О как еще получилось, удалил лишнюю строчку, тоже работает
//paging($res, 100, $out); // search result paging
$total=count($res);
for($i=0;$i<$total;$i++) {
foreach($res_online as $id_online){
if($res[$i]['ID']==$id_online['DEVICE_ID'] && $id_online['VALUE']==1 && $id_online['TITLE']=='online') $res[$i]['ONLINE']='1';
if($res[$i]['ID']==$id_online['DEVICE_ID'] && ($id_online['TITLE']=='rssi' || $id_online['TITLE']=='gsm_rssi')) {
if ($id_online['VALUE']>= -50) {$res[$i]['RSSI_LVL']=100; $res[$i]['RSSI_COLOR']='#5cb85c';}
elseif ($id_online['VALUE']>= -65) {$res[$i]['RSSI_LVL']=77; $res[$i]['RSSI_COLOR']='#f0ad4e';}
elseif ($id_online['VALUE']>= -80) {$res[$i]['RSSI_LVL']=52; $res[$i]['RSSI_COLOR']='#f0ad4e';}
elseif ($id_online['VALUE']>= -95) {$res[$i]['RSSI_LVL']=26; $res[$i]['RSSI_COLOR']='#d9534f';}
else {$res[$i]['RSSI_LVL']=0; $res[$i]['RSSI_COLOR']='#d9534f';}
}
}
$res[$i]['IMG']='/img/sonoff/'.$res[$i]['UIID'].'.jpg';
Странно, вроде не трогал этот файл...может на компе неактуальная версия была...хз...ок, поправлю.samolet писал(а): Сб апр 13, 2019 10:32 pm Никита, исправь пожалуйста а то после обновы индикатор в gsm потерялся. Тут выше код правильный он в файле dev_sonoff_devices_search.inc
А ты на сокеты то перевёл цикл? Закоментил в цикле то что сверху, раскоментил то что снизу, как я писал?samolet писал(а): Сб апр 13, 2019 10:32 pm цикл пока не упал ни разу уже 30 минут ни чего не падает
заметил следующее
после вкл выкл с телефона статус в мажорик идет примерно 6-10 сек. когда как, а если с мажорика вкл. выкл. то статус в телефоне виден сразу, возможно это как то связано с нагрузкой на прогу мажордом.
А вы уверены что цикл не падает? В логе ошибками не сыплет? Может он падает, потом восстанавливается? Так то странно, потому что когда я из консоли только цикл запускаю - стабильно валится в момет ping-а. Спс за инфу с 4х канальным реле. Вполне возможно, что не всё учёл, ещё пересмотрю код.arsrem писал(а): Вс апр 14, 2019 1:47 am Всем доброго времени суток!
Переключил на сокеты и отвалилось управление на 4-канальном сонофе.
Одноканальный РФ работает как надо. Посмотрим до утра как он себя вести будет.
сейчас утро - прошло 8,5 часов примерно)) модуль с рф пока еще не отвалился
Вот код, цикл не отвалился все работает, где надо раскоментил, и закоментилnick7zmail писал(а): Вс апр 14, 2019 11:03 amСтранно, вроде не трогал этот файл...может на компе неактуальная версия была...хз...ок, поправлю.samolet писал(а): Сб апр 13, 2019 10:32 pm Никита, исправь пожалуйста а то после обновы индикатор в gsm потерялся. Тут выше код правильный он в файле dev_sonoff_devices_search.incА ты на сокеты то перевёл цикл? Закоментил в цикле то что сверху, раскоментил то что снизу, как я писал?samolet писал(а): Сб апр 13, 2019 10:32 pm цикл пока не упал ни разу уже 30 минут ни чего не падает
заметил следующее
после вкл выкл с телефона статус в мажорик идет примерно 6-10 сек. когда как, а если с мажорика вкл. выкл. то статус в телефоне виден сразу, возможно это как то связано с нагрузкой на прогу мажордом.
У меня в МД статус почти сразу прилетает 1-1,5 сек задержка максимум.
Код: Выделить всё
<?php
chdir(dirname(__FILE__) . '/../');
include_once("./config.php");
include_once("./lib/loader.php");
include_once("./lib/threads.php");
include_once("./lib/websockets/sonoffws.class.php");
set_time_limit(0);
// connecting to database
$db = new mysql(DB_HOST, '', DB_USER, DB_PASSWORD, DB_NAME);
include_once("./load_settings.php");
include_once(DIR_MODULES . "control_modules/control_modules.class.php");
$ctl = new control_modules();
include_once(DIR_MODULES . 'dev_sonoff/dev_sonoff.class.php');
$dev_sonoff_module = new dev_sonoff();
$dev_sonoff_module->getConfig();
$tmp = SQLSelectOne("SELECT ID FROM dev_sonoff_devices LIMIT 1");
if (!$tmp['ID'])
exit; // no devices added -- no need to run this cycle
echo date("H:i:s") . " running " . basename(__FILE__) . PHP_EOL;
$latest_check=0;
$checkEvery=$dev_sonoff_module->config['POLL_PERIOD'];
//websockets
$wssurl=$dev_sonoff_module->getWssUrl();
$sonoffws = new SonoffWS($wssurl, $config);
while (1)
{
//====================================HTTP POLLING===================================
/* setGlobal((str_replace('.php', '', basename(__FILE__))) . 'Run', time(), 1);
//http polling devices
if ((time()-$latest_check)>$checkEvery) {
$latest_check=time();
echo date('Y-m-d H:i:s').' Polling devices...';
$dev_sonoff_module->processCycle();
}*/
//====================================END HTTP POLLING===============================
//====================================WSS POLLING====================================
setGlobal((str_replace('.php', '', basename(__FILE__))) . 'Run', time(), 1);
echo date('Y-m-d H:i:s').' Polling devices...';
if($sonoffws->isConnected()) {
//выполняем если подключено
$read = array($sonoffws->getSocket());
$write = NULL;
$except = NULL;
if (false === ($num_changed_streams = stream_select($read, $write, $except, $checkEvery))) {
// Обработка ошибок
} elseif ($num_changed_streams > 0) {
// Как минимум на одном из потоков произошло что-то интересное
$recv=$sonoffws->receive();
if($dev_sonoff_module->config['DEBUG']) {
debmes('[wss] +++ '.$recv, 'cycle_dev_sonoff_debug');
}
$dev_sonoff_module->wssRecv($recv, $sonoffws);
}
} else {
//переподключаемся
$sonoffws = new SonoffWS($wssurl, $config);
$sonoffws->socketUrl=$wssurl;
$sonoffws->connect();
if($sonoffws->isConnected()) {
$dev_sonoff_module->wssInit($sonoffws);
}
}
//====================================END WSS POLLING================================
if (file_exists('./reboot') || IsSet($_GET['onetime']))
{
$db->Disconnect();
exit;
}
sleep(1);
}