Ну да, вроде это и логично. Все контроллеры в одной сети. Простая базовая логика (нажал клавишу - включил/выключил лампочку) на контроллере, более продвинутая (по показаниям датчиков влажности - включил/выключил на определенное время вентилятор, по показаниям датчиков СО2 - повернул клапан приточки и т.д.) на центральном сервере. Если место в щитке позволяет одноплатник можно и в щиток ставить, сервер понятно в обычные щиток не поставишь без его модификации - тепло нужно как то сбрасывать. Я поставил в щиток, т.к. в плату однопроводные "свистки" воткнуты, хотя разводка позволяет и в телекоммуникационный шкаф все затянуть.xsash писал(а): ↑30 май 2018, 08:16Ну в принципе это нормально, вспомните даже картинки из сети серверных, или на ютубе как собирают шкафы под модули умного дома на сименс.
Но я чуть не о том, и вероятно или меня, или я не допонял вас. Неважно сколько мег/других контролеров у вас в сети и где они располагаются. Они же в общей сетке? Почему не поставить 1 сервер (комп, одноплатник, прочее). Сейчас то как все и кем разруливается? Где логика дома то живет?
FAQ php, MySQL, bash и т.д.
Re: FAQ php, MySQL, bash и т.д.
Re: FAQ php, MySQL, bash и т.д.
Да, но вы не описываете почему скрипты из разных мест дергают данные, контроллеры же не дергают - нет. Значит дергает сервер. И.... и я не вижу почему это нельзя свернуть в один скрипт обработки данных и хранения этих данных централизовано
-
- Сообщения: 19
- Зарегистрирован: 04 янв 2015, 22:05
- Откуда: Тюм. обл.,г.Заводоуковск
- Контактная информация:
Re: FAQ php, MySQL, bash и т.д.
У меня модуль каждые 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
// Была проблема,
}
?>
И вот может кому поможет в будущем, сделал такой код, чтобы скрипты запускались по очереди и не лезли друг на друга.
Пол дня тестирую, пока все скрипты идут на сервер ровным строем.
<?
$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
// Была проблема,
}
?>
Re: FAQ php, MySQL, bash и т.д.
По разному можно реализовать. Вот коллега ниже пишет что раз в 50 секунд данные с контроллера скидывает. А мне например нужно часть датчиков опрашивать почаще (например влажности), а часть пореже (температуры для управления отоплением). Соответственно один скрипт "слушает" контроллеры и выполняет определенные действия, параллельно складывает информацию в БД. Несколько демонов на сервере опрашивают датчики на контроллерах или локально подключенные датчики и складывают информацию в ту же базу. А отдельная программа уже обрабатывает данные из БД и отрабатывает свои алгоритмы.
Через семафоры не пробовали делать? Так вроде покрасивее получается и записывать на диск ничего не надо, все крутится в памяти на уровне ядра.Lisasv писал(а): ↑30 май 2018, 16:23У меня модуль каждые 50 сек. отправляет на сервер всё свое состояние-лампы включены/выключены, нагрузка включена/выключена, датчики, температура в своей локальной области.И сервер знает, что модуль жив, иначе сообщение мне о неполадках. Далее включил лампу с сервера, модуль ответил, что да всё ОК, контроль однако. Вот и набегает много дёрганий. Далее, без всякого crona у меня скрипт запускается всегда.Почти каждую секунду на сервер приходит посылка от модулей. Если всё это хозяйство собрать в один шкаф, то всё равно нужен будет не один CPU обработчик периферии(привет STM32F103Z или ещё серьёзней).
И вот может кому поможет в будущем, сделал такой код, чтобы скрипты запускались по очереди и не лезли друг на друга.
Пол дня тестирую, пока все скрипты идут на сервер ровным строем.