MegaLight - контроллер освещения на Arduino Mega 2560+W5100

Подключение исполнительных устройств, датчиков, контроллеров.

Модератор: immortal

olehs
Сообщения: 1115
Зарегистрирован: Вс июн 14, 2015 11:08 am
Благодарил (а): 85 раз
Поблагодарили: 342 раза

Re: MegaLight - контроллер освещения на Arduino Mega 2560+W5

Сообщение olehs » Вс июл 07, 2019 12:49 pm

Yashalta писал(а):
Вс апр 14, 2019 12:10 pm
в моем случае
http://192.168.18.110/state?c=get&n=51
но, ни чего не происходит и ничего не возвращает мне. я и так пробовал
$handle = fopen("http://192.168.18.110/state?c=get&n=51", "r");
тоже ни чего не происходит!
во второй версии в параметр n нужно передавать имя файла выхода, а не номер пина, например

Код: Выделить всё

getUrl("http://192.168.18.110/state?c=get&n=2E_Hall_r51");
За это сообщение автора olehs поблагодарил:
Yashalta (Вс июл 07, 2019 3:06 pm)
Рейтинг: 1.16%
serega4ex
Сообщения: 7
Зарегистрирован: Пн ноя 16, 2015 9:45 am
Благодарил (а): 3 раза
Поблагодарили: 0

Re: MegaLight - контроллер освещения на Arduino Mega 2560+W5100

Сообщение serega4ex » Чт окт 17, 2019 10:10 pm

Подскажите пожалуйста как настроить в MDM DOORBELL. В мониторе порта статус меняется, а как сделать чтоб звук в MDM проиграл не пойму :)
Yashalta
Сообщения: 315
Зарегистрирован: Вс май 20, 2018 9:27 am
Благодарил (а): 160 раз
Поблагодарили: 29 раз

Re: MegaLight - контроллер освещения на Arduino Mega 2560+W5100

Сообщение Yashalta » Чт ноя 21, 2019 7:50 pm

Вопрос!
Но, сначала опишу проблему!
Я живу в деревне и тут у нас не редкость отключение света. Если электричество отключили вечером в тот момент когда в каких либо комнатах включен свет то, при появлении электричества Raspberry пингует "Megy" и если нет связи с Megой запускается скрипт который перезагружает Arduino Mega! И в этот момент на секунду гаснет свет во всех комнатах где он включен! Свет гаснет каждый раз когда вы перезагружаете Arduino Mega!
Вопрос: Можно ли, что либо сделать, что бы при перезагрузке "Arduino Mega" свет не гас?

У меня свет полностью контролируется при помощи "MegaLight" Все хорошо работает уже несколько месяцев, в очередной раз хочу сказать автору СПАСИБО!!!
ngservis
Сообщения: 92
Зарегистрирован: Ср ноя 19, 2014 4:15 pm
Откуда: Альметьевск
Благодарил (а): 7 раз
Поблагодарили: 4 раза

Re: MegaLight - контроллер освещения на Arduino Mega 2560+W5100

Сообщение ngservis » Пт ноя 22, 2019 9:31 am

Который раз убеждаюсь , что все работает без сбоев . Единственной и очень существенное неудобство для меня , это каждый раз , переконфигурировании карты , лазить на чердак дома , где стоит контроллер. Не планируете ли версию устройства , с удаленной конфигурацией по сети , без majordomo, ввиду его низкой надёжности. Было бы здорово !?

Отправлено с моего Redmi 6A через Tapatalk

Rasberry PI + arduino mega 2560
olehs
Сообщения: 1115
Зарегистрирован: Вс июн 14, 2015 11:08 am
Благодарил (а): 85 раз
Поблагодарили: 342 раза

Re: MegaLight - контроллер освещения на Arduino Mega 2560+W5100

Сообщение olehs » Пт ноя 22, 2019 12:11 pm

Yashalta писал(а):
Чт ноя 21, 2019 7:50 pm
Вопрос!
Но, сначала опишу проблему!
Я живу в деревне и тут у нас не редкость отключение света. Если электричество отключили вечером в тот момент когда в каких либо комнатах включен свет то, при появлении электричества Raspberry пингует "Megy" и если нет связи с Megой запускается скрипт который перезагружает Arduino Mega! И в этот момент на секунду гаснет свет во всех комнатах где он включен! Свет гаснет каждый раз когда вы перезагружаете Arduino Mega!
Вопрос: Можно ли, что либо сделать, что бы при перезагрузке "Arduino Mega" свет не гас?

У меня свет полностью контролируется при помощи "MegaLight" Все хорошо работает уже несколько месяцев, в очередной раз хочу сказать автору СПАСИБО!!!
У Меги при сбросе пины переводятся в логический 0 (кроме разве что тех, на которые что-то подвешено). Думаю, без дополнительной аппаратной логики ту не обойтись.

Но я не совсем понимаю, зачем перегружать мегу при отсутсвии пинга. Она зависает, или что?
olehs
Сообщения: 1115
Зарегистрирован: Вс июн 14, 2015 11:08 am
Благодарил (а): 85 раз
Поблагодарили: 342 раза

Re: MegaLight - контроллер освещения на Arduino Mega 2560+W5100

Сообщение olehs » Пт ноя 22, 2019 12:32 pm

ngservis писал(а):
Пт ноя 22, 2019 9:31 am
Который раз убеждаюсь , что все работает без сбоев . Единственной и очень существенное неудобство для меня , это каждый раз , переконфигурировании карты , лазить на чердак дома , где стоит контроллер. Не планируете ли версию устройства , с удаленной конфигурацией по сети , без majordomo, ввиду его низкой надёжности. Было бы здорово !?

Отправлено с моего Redmi 6A через Tapatalk
Есть несколько причин, по которым ответ скорее нет, чем да :(
Первая - маленькое количество оперативки у меги не позволяет без значительных усилий сделать нормальный веб-сервер. Конечно, это возможно, но это реально нужно ковырять, выдумывать. Нужно переносить на клиента веб-морду, логику, организовывать работу веб-сервера с карточкой, чтобы тянуть библиотеки и т.д.
Из первой причины происходит вторая - я боюсь, что превратившись из простого PLC (которым и задумывался данный проект) в веб-сервер, могут возникнуть проблемы с надежностью и бесперебойностью работы основного функционала. Например, пока браузер качает jQuery с карточки, по всему дому не будут правильно отрабатываться двойные клики, таймауты и т.д. Чтобы избежать этого, нужно тоже вложить усилия.
Ну и третья - лень :oops: . Уже года три, как у меня дома работает MegaLight2 и уже года два, как я туда даже и не заглядывал. Ну просто давно все настроил, домашние уже ко всему привыкли и всех все устраивает)

На самом деле проект ведь открытый и пока еще довольно простой. Если есть желающие что-то доделать - да всегда пожалуйста.
За это сообщение автора olehs поблагодарили (всего 2):
ngservis (Пт ноя 22, 2019 1:48 pm) • Molostov (Чт дек 26, 2019 5:30 pm)
Рейтинг: 2.33%
Yashalta
Сообщения: 315
Зарегистрирован: Вс май 20, 2018 9:27 am
Благодарил (а): 160 раз
Поблагодарили: 29 раз

Re: MegaLight - контроллер освещения на Arduino Mega 2560+W5100

Сообщение Yashalta » Пт ноя 22, 2019 1:11 pm

olehs писал(а):
Пт ноя 22, 2019 12:11 pm
Но я не совсем понимаю, зачем перегружать мегу при отсутсвии пинга. Она зависает, или что?
Нет, она не зависает, работает как самостоятельная единица так и в команде если инет есть! Много раз за эти несколько месяцев свет гас на час и более, порою и полдня и каждый раз при появлении электричества все штатно у меня запускалось, до вчерашнего вечера! Вчера я не был дома, мне звонят мои и говорят, что свет во всем доме моргает и продолжается это уже несколько часов!

А у меня Rasberry как получает связь с инетом то, начинает проверять связь со всеми периферийными устройствами. Если с кем либо связи нет то, перезагружает его/их. Обычно одного перезапуска достаточно! Почему-то у меня ардуинки сами не восстанавливают соединение с инетом если он появляется, нужно их перезагружать!
Но, вчера что то было из рада вон выходящее! Ардуинки не подклучались к инету, хотя он был т.к. я удаленно подключался к "MD" и мог в cron-e отключить проверку связи и тогда перестал бы моргать свет во всем доме. Но, тогда я бы не смог удаленно управлять освещением и т.п. Я перезагрузил "MD" с телефона и это не помогло. Тогда я сказал, что бы они отключили "главный рубильник" отключив тем самым свет во всем доме и после снова его включили. Это действие помогло!

Я теперь после этой проблемки поправлю код, что бы он после 3-х неудачных перезапусков Arduinки прекращал проверку связи с этим модулем! таким образом свет не будет бесконечно моргать в доме!
Но, было бы здорово как-то "обойти" сброс пинов в логический "0" при перезагрузке!
olehs
Сообщения: 1115
Зарегистрирован: Вс июн 14, 2015 11:08 am
Благодарил (а): 85 раз
Поблагодарили: 342 раза

Re: MegaLight - контроллер освещения на Arduino Mega 2560+W5100

Сообщение olehs » Пт ноя 22, 2019 1:17 pm

У W5100 есть проблемы с запуском
https://www.youtube.com/watch?v=9ZBeprOqC3w
Попробуйте, может в этом дело
За это сообщение автора olehs поблагодарил:
Yashalta (Пт ноя 22, 2019 2:17 pm)
Рейтинг: 1.16%
Yashalta
Сообщения: 315
Зарегистрирован: Вс май 20, 2018 9:27 am
Благодарил (а): 160 раз
Поблагодарили: 29 раз

Re: MegaLight - контроллер освещения на Arduino Mega 2560+W5100

Сообщение Yashalta » Пт ноя 22, 2019 2:22 pm

olehs писал(а):
Пт ноя 22, 2019 1:17 pm
У W5100 есть проблемы с запуском
https://www.youtube.com/watch?v=9ZBeprOqC3w
Попробуйте, может в этом дело
Круть, теоретически это это должно помочь! т.к. я постоянно нажимал на кнопку сброса когда моделировал разные ситуации с инетом на своем стенде! Поэтому я написал скрипт для перезагрузки Arduino Mega. Обязательно опишусь, но думаю это не скоро!
Yashalta
Сообщения: 315
Зарегистрирован: Вс май 20, 2018 9:27 am
Благодарил (а): 160 раз
Поблагодарили: 29 раз

Re: MegaLight - контроллер освещения на Arduino Mega 2560+W5100

Сообщение Yashalta » Сб дек 14, 2019 7:29 pm

Я тут немного "допилил", может кому пригодиться!
1. В классе "MegaLight" добавляем свойства
Ваш_объект.date_info
Ваш_объект.previous_unix_time
Ваш_объект.time_ON
Ваш_объект.time_OFF
Ваш_объект.total_time
Ваш_объект.total_unix_time
Ваш_объект.info - в поле "info" вписываем ручками где лампа находится к примеру "на кухне".
2. В объекте "ThisComputer" в методе "setRelayState" заменить на код ниже

Код: Выделить всё

$objects=getObjectsByClass("MegaLight");
foreach($objects as $obj) {
 if(gg($obj['TITLE'].".ID") == $params["id"])
 {
    sg($obj['TITLE'].".status", $params["on"]);
    sg($obj['TITLE'].".value", $params["v"]);

$now_date = date("d-m-Y H:i:s");

    if(gg($obj['TITLE'].".status") == '1')
    {
    sg($obj['TITLE'].".time_ON", $now_date);
    sg($obj['TITLE'].".on_off_auto", 'Вкл.');
    say('Свет включили  '.gg($obj['TITLE'].".info").' с настенного выключателя!',1);
    }
    else
    {
    sg($obj['TITLE'].".time_OFF", $now_date);
    sg($obj['TITLE'].".on_off_auto", 'Откл.');
    say('Свет отключили  '.gg($obj['TITLE'].".info").' с настенного выключателя!',1);
    
$time_ON=gg($obj['TITLE'].".time_ON");        // Время предыдущего включения света
$time_OFF=gg($obj['TITLE'].".time_OFF");     // Время предыдущего отключения света
$total_unix_time =gg($obj['TITLE'].".total_unix_time");  // Общее время работы лампы
$A = strtotime($time_OFF) - strtotime($time_ON); // Расчитываем предыдущее количество секунд работы лампы
sg($obj['TITLE'].".previous_unix_time",$A); // Записываем предыдущее время работы в свойство объекта
$B = $total_unix_time  + $A; // Расчитываем общее количество секунд работы лампы
sg($obj['TITLE'].".total_unix_time",$B); // Устанавливаем общее время работы
     
    #callMethod($obj['TITLE']. ".Test_time_metod");

$diff = $B;
$years = floor($diff / (365*60*60*24)); 
if ($years > 0) 
  $years = $years."-год(а/лет/)";
else 
  $years = FALSE;
$months = floor(($diff - $years * 365*60*60*24) / (30*60*60*24)); 
if ($months > 0) 
  $months = $months."-месяц(а/ев)";
else 
  $months = FALSE;
$days = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24)); 
if ($days > 0) 
  $days = $days."-день(я/ей)";
else 
  $days = FALSE;
$hours = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24 - $days*60*60*24) / (60*60));
if ($hours > 0) 
  $hours = $hours."-час(а/ов)";
else 
  $hours = FALSE;
$minutes = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24 - $days*60*60*24 - $hours*60*60)/ 60); 
if ($minutes > 0) 
  $minutes = $minutes."-минут(а/ы)";
else 
  $minutes = FALSE;
$seconds = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24 - $days*60*60*24 - $hours*60*60 - $minutes*60));
if ($seconds > 0) 
  $seconds = $seconds."-секунд";
else 
  $seconds = FALSE;
setGlobal($obj['TITLE'].".total_time",("$years$months$days$hours$minutes$seconds"));
    }
   break;
 }
}
В результате мы получим:
Каждый раз когда будет ВКЛючен/ОТКЛючен какой либо выключатель света не важно как, с телефона, компа или с настенного выключателя у нас фиксируется время! Зная время включения и отключения легко посчитать время работы, как последнее время работы, так и общее время работы за какой-то период времени.
Порою на производстве нужно знать сколько времени проработал тот, или иной станок/агрегат. Зная заявленное время работы производителем минус фактическое отработанное время можно заранее закупить рем. комплект. Ну, а для нас просто не будет лишним знать сколько отработала лампа по факту.

Вопрос:
Как добавить в эту строку
$handle = fopen("http://192.168.18.110/state?c=set&n=52&o=1", "r");
еще одну переменную, которая ни чего не будет делать, её роль быть маркером! Маркер который будет говорить системе, что эта команда была отправлена с телефона и т.п.
Как я это вижу.
$handle = fopen("http://192.168.18.110/state?c=set&n=52&o=1&z=t", "r");
где &z=t - маркер который означает, что команда отправлена с телефона
если &z=с - команда отправлена с компьютера
если &z=p - команда отправлена с планшета
а если этого маркера нет то, команда отправлена с настенного выключателя
Ответить