FAQ php, MySQL, bash и т.д.

Обсуждение статей, технологий домашней автоматизации, программных и аппаратных решений
Burst
Сообщения: 113
Зарегистрирован: 25 янв 2018, 13:22
Откуда: Балашиха

Re: FAQ php, MySQL, bash и т.д.

Сообщение Burst » 30 май 2018, 15:02

xsash писал(а):
30 май 2018, 08:16
Burst писал(а):
29 май 2018, 23:21
Децентрализованная схема тоже имеет право на жизнь, у меня например центральный только шкаф для Ethernet подключений, а щитки по одному на этаж. Так намного удобней и проще, иначе в центре был бы просто гигантский щит и куча проводов.
Ну в принципе это нормально, вспомните даже картинки из сети серверных, или на ютубе как собирают шкафы под модули умного дома на сименс.

Но я чуть не о том, и вероятно или меня, или я не допонял вас. Неважно сколько мег/других контролеров у вас в сети и где они располагаются. Они же в общей сетке? Почему не поставить 1 сервер (комп, одноплатник, прочее). Сейчас то как все и кем разруливается? Где логика дома то живет?
Ну да, вроде это и логично. Все контроллеры в одной сети. Простая базовая логика (нажал клавишу - включил/выключил лампочку) на контроллере, более продвинутая (по показаниям датчиков влажности - включил/выключил на определенное время вентилятор, по показаниям датчиков СО2 - повернул клапан приточки и т.д.) на центральном сервере. Если место в щитке позволяет одноплатник можно и в щиток ставить, сервер понятно в обычные щиток не поставишь без его модификации - тепло нужно как то сбрасывать. Я поставил в щиток, т.к. в плату однопроводные "свистки" воткнуты, хотя разводка позволяет и в телекоммуникационный шкаф все затянуть.

xsash
Сообщения: 239
Зарегистрирован: 08 авг 2016, 12:27

Re: FAQ php, MySQL, bash и т.д.

Сообщение xsash » 30 май 2018, 16:06

Да, но вы не описываете почему скрипты из разных мест дергают данные, контроллеры же не дергают - нет. Значит дергает сервер. И.... и я не вижу почему это нельзя свернуть в один скрипт обработки данных и хранения этих данных централизовано

Lisasv
Сообщения: 19
Зарегистрирован: 04 янв 2015, 22:05
Откуда: Тюм. обл.,г.Заводоуковск
Контактная информация:

Re: FAQ php, MySQL, bash и т.д.

Сообщение Lisasv » 30 май 2018, 16:23

У меня модуль каждые 50 сек. отправляет на сервер всё свое состояние-лампы включены/выключены, нагрузка включена/выключена, датчики, температура в своей локальной области.И сервер знает, что модуль жив, иначе сообщение мне о неполадках. Далее включил лампу с сервера, модуль ответил, что да всё ОК, контроль однако. Вот и набегает много дёрганий. Далее, без всякого crona у меня скрипт запускается всегда.Почти каждую секунду на сервер приходит посылка от модулей. Если всё это хозяйство собрать в один шкаф, то всё равно нужен будет не один CPU обработчик периферии(привет STM32F103Z или ещё серьёзней).

И вот может кому поможет в будущем, сделал такой код, чтобы скрипты запускались по очереди и не лезли друг на друга.
Пол дня тестирую, пока все скрипты идут на сервер ровным строем.

<?
$lock='Y:\lock'; //RAM disk (Radeon_AMD_RAMDisk)

while( file_exists($lock)==TRUE and $Tims_pd+3>$Tims_pdw) //крутить если файл блокировки есть и максимально 3 сек
{
$Tims_pdw=time();
usleep (50000);
}

if (file_exists($lock)==TRUE) // если не дождался(см.выше) то принудительно удалить блок.файл
{
unlink($lock);
echo 'Файл lock был принудительно удалён';
}

if ( file_exists($lock)==FALSE) //если файла блокировки нет, то запустить скрипт в работу
{
touch($lock);//создать файл блокировки

//Тело скрипта

if(unlink($lock)==TRUE)
echo " Erase lock files OK";
else
echo " Erase lock files False";

else
// Была проблема,


}
?>

Burst
Сообщения: 113
Зарегистрирован: 25 янв 2018, 13:22
Откуда: Балашиха

Re: FAQ php, MySQL, bash и т.д.

Сообщение Burst » 30 май 2018, 16:48

xsash писал(а):
30 май 2018, 16:06
Да, но вы не описываете почему скрипты из разных мест дергают данные, контроллеры же не дергают - нет. Значит дергает сервер. И.... и я не вижу почему это нельзя свернуть в один скрипт обработки данных и хранения этих данных централизовано
По разному можно реализовать. Вот коллега ниже пишет что раз в 50 секунд данные с контроллера скидывает. А мне например нужно часть датчиков опрашивать почаще (например влажности), а часть пореже (температуры для управления отоплением). Соответственно один скрипт "слушает" контроллеры и выполняет определенные действия, параллельно складывает информацию в БД. Несколько демонов на сервере опрашивают датчики на контроллерах или локально подключенные датчики и складывают информацию в ту же базу. А отдельная программа уже обрабатывает данные из БД и отрабатывает свои алгоритмы.
Lisasv писал(а):
30 май 2018, 16:23
У меня модуль каждые 50 сек. отправляет на сервер всё свое состояние-лампы включены/выключены, нагрузка включена/выключена, датчики, температура в своей локальной области.И сервер знает, что модуль жив, иначе сообщение мне о неполадках. Далее включил лампу с сервера, модуль ответил, что да всё ОК, контроль однако. Вот и набегает много дёрганий. Далее, без всякого crona у меня скрипт запускается всегда.Почти каждую секунду на сервер приходит посылка от модулей. Если всё это хозяйство собрать в один шкаф, то всё равно нужен будет не один CPU обработчик периферии(привет STM32F103Z или ещё серьёзней).

И вот может кому поможет в будущем, сделал такой код, чтобы скрипты запускались по очереди и не лезли друг на друга.
Пол дня тестирую, пока все скрипты идут на сервер ровным строем.
Через семафоры не пробовали делать? Так вроде покрасивее получается и записывать на диск ничего не надо, все крутится в памяти на уровне ядра.

Lisasv
Сообщения: 19
Зарегистрирован: 04 янв 2015, 22:05
Откуда: Тюм. обл.,г.Заводоуковск
Контактная информация:

Re: FAQ php, MySQL, bash и т.д.

Сообщение Lisasv » 30 май 2018, 18:45

Burst писал(а):
30 май 2018, 16:48
Через семафоры не пробовали делать? Так вроде покрасивее получается и записывать на диск ничего не надо, все крутится в памяти на уровне ядра.
Раньше с семафорами не сталкивался, изучу информацию, интересно, спасибо.

Ответить