Arduino Mega Server
Модератор: Alex
-
- Сообщения: 7
- Зарегистрирован: Пт ноя 11, 2016 9:47 pm
- Благодарил (а): 2 раза
- Поблагодарили: 0
Re: Arduino Mega Server
Прежде всего хотел бы поблагодарить за такой замечательный продукт, как AMS!
Сотворил я на его базе (Arduino Mega 2560 + W5100) переключатель антенн с вэб-интрефесом, чтобы сидя дома переключать антенны, подключенные к SDR-приемнику, что стоит на работе
И возник вопрос со стабильностью - периодически девайс перестает откликаться на запросы, иногда чрез некоторое время он оживает и начинает отвечать, а иногда уходит в ступор до выключения питания. Девайс воткнут в боевую сеть и траффик там порядочный, в том числе и широковещаетельный - ARP и тд и тп
Вопрос в чем - проверен ли AMS в работе при большом количестве широковещательных запросов в сети или стоит выделить под него отдельную подсеть ?
Сотворил я на его базе (Arduino Mega 2560 + W5100) переключатель антенн с вэб-интрефесом, чтобы сидя дома переключать антенны, подключенные к SDR-приемнику, что стоит на работе
И возник вопрос со стабильностью - периодически девайс перестает откликаться на запросы, иногда чрез некоторое время он оживает и начинает отвечать, а иногда уходит в ступор до выключения питания. Девайс воткнут в боевую сеть и траффик там порядочный, в том числе и широковещаетельный - ARP и тд и тп
Вопрос в чем - проверен ли AMS в работе при большом количестве широковещательных запросов в сети или стоит выделить под него отдельную подсеть ?
-
- Сообщения: 2357
- Зарегистрирован: Пт апр 20, 2012 12:53 pm
- Благодарил (а): 42 раза
- Поблагодарили: 262 раза
Re: Arduino Mega Server
Скорее всего дело не в сети, а в ваших изменения в коде АМС. Но это легко проверить — запустите вашу систему в пустой сети и посмотрите изменится ли ситуация с зависаниями.И возник вопрос со стабильностью - периодически девайс перестает откликаться на запросы, иногда чрез некоторое время он оживает и начинает отвечать, а иногда уходит в ступор до выключения питания. Девайс воткнут в боевую сеть и траффик там порядочный, в том числе и широковещаетельный - ARP и тд и тп
Вопрос в чем - проверен ли AMS в работе при большом количестве широковещательных запросов в сети или стоит выделить под него отдельную подсеть ?
-
- Сообщения: 7
- Зарегистрирован: Пт ноя 11, 2016 9:47 pm
- Благодарил (а): 2 раза
- Поблагодарили: 0
Re: Arduino Mega Server
Похоже, дело было в NTP - у меня наружу он открыт только для контроллеров домена, а сами они отвечают только членам домена с аутентификацией. Девайс не мог получить время ни снаружи, ни от местных серверов. Отрубил модули RTC и NTP и пока, тьфу-тьфу, все работает стабильно и откликается быстрее.
- ser009
- Сообщения: 595
- Зарегистрирован: Сб окт 13, 2012 9:55 am
- Благодарил (а): 4 раза
- Поблагодарили: 43 раза
Re: Arduino Mega Server
Может кто прикручивал?
Где можно задать шкалы X и Y. Я так понимаю график должен рисоваться по середине , а не вверху. И хотелось бы увеличить время скажем до 1 часа, чтобы была видна динамика при медленно изменяющихся параметрах
Re: Arduino Mega Server
Не подскажете новичку, чем недовольна программа.
Скачал AMS.
В настройках IDE, сделал как указано.
Библиотеки не обновлял.
IDE сегодняшней версии 1.8.5
Без подключения плат запустил проверку и получил такую ошибку:
*** Сообщение запрещено. Сообщение похоже на спам. ***
Скачал AMS.
В настройках IDE, сделал как указано.
Библиотеки не обновлял.
IDE сегодняшней версии 1.8.5
Без подключения плат запустил проверку и получил такую ошибку:
СпойлерПоказать
Arduino: 1.8.5 (Windows 10), Плата:"Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)"
ВНИМАНИЕ: Категория '' в библиотеке Ethernet2 не является действительной. Установка на 'Uncategorized'
In file included from D:\Arduino\ArduinoMegaServer\Sketches\ams\Arduino\arduino_mega_server\arduino_mega_server.ino:115:0:
D:\Arduino\ArduinoMegaServer\Sketches\ams\Arduino\libraries\DS1307RTC/DS1307RTC.h:19:22: error: 'tmElements_t' has not been declared
static bool read(tmElements_t &tm);
^
D:\Arduino\ArduinoMegaServer\Sketches\ams\Arduino\libraries\DS1307RTC/DS1307RTC.h:20:23: error: 'tmElements_t' has not been declared
static bool write(tmElements_t &tm);
^
D:\Arduino\ArduinoMegaServer\Sketches\ams\Arduino\arduino_mega_server\rtc.ino: In function 'void rtcInit()':
rtc:10: error: 'setSyncProvider' was not declared in this scope
setSyncProvider(getNtpTime);
^
rtc:14: error: 'setSyncProvider' was not declared in this scope
setSyncProvider(RTC.get); // get time from RTC
^
D:\Arduino\ArduinoMegaServer\Sketches\ams\Arduino\arduino_mega_server\rtc.ino: In function 'void rtcSync()':
rtc:24: error: 'setSyncProvider' was not declared in this scope
setSyncProvider(getNtpTime);
^
rtc:26: error: 'timeStatus' was not declared in this scope
if (timeStatus() != timeNotSet) {
^
rtc:26: error: 'timeNotSet' was not declared in this scope
if (timeStatus() != timeNotSet) {
^
D:\Arduino\ArduinoMegaServer\Sketches\ams\Arduino\arduino_mega_server\rtc.ino: In function 'void serialRTC()':
rtc:42: error: 'year' was not declared in this scope
Serial.print(year());
^
rtc:44: error: 'month' was not declared in this scope
printDigits(month());
^
rtc:46: error: 'day' was not declared in this scope
printDigits(day());
^
rtc:48: error: 'hour' was not declared in this scope
printDigits(hour());
^
rtc:50: error: 'minute' was not declared in this scope
printDigits(minute());
^
rtc:52: error: 'second' was not declared in this scope
printDigits(second());
^
D:\Arduino\ArduinoMegaServer\Sketches\ams\Arduino\arduino_mega_server\rtc.ino: In function 'void showDuration(time_t)':
rtc:73: error: 'SECS_PER_DAY' was not declared in this scope
if(duration >= SECS_PER_DAY){
^
rtc:78: error: 'SECS_PER_HOUR' was not declared in this scope
if(duration >= SECS_PER_HOUR){
^
rtc:83: error: 'SECS_PER_MIN' was not declared in this scope
if(duration >= SECS_PER_MIN){
^
D:\Arduino\ArduinoMegaServer\Sketches\ams\Arduino\arduino_mega_server\rtc.ino: In function 'void checkEvent(time_t*)':
rtc:94: error: 'now' was not declared in this scope
time_t timeNow = now();
^
D:\Arduino\ArduinoMegaServer\Sketches\ams\Arduino\arduino_mega_server\rtc.ino: In function 'void setNtpInterval()':
rtc:149: error: 'timeStatus' was not declared in this scope
if (timeStatus() == timeNotSet) {
^
rtc:149: error: 'timeNotSet' was not declared in this scope
if (timeStatus() == timeNotSet) {
^
rtc:150: error: 'setSyncInterval' was not declared in this scope
setSyncInterval(18);
^
D:\Arduino\ArduinoMegaServer\Sketches\ams\Arduino\arduino_mega_server\server_ajax.ino: In function 'String makeTime()':
server_ajax:226: error: 'hour' was not declared in this scope
s += makeDigits(hour());
^
server_ajax:227: error: 'second' was not declared in this scope
if (second() % 2 == 0) {s += " ";}
^
server_ajax:229: error: 'minute' was not declared in this scope
s += makeDigits(minute());
^
D:\Arduino\ArduinoMegaServer\Sketches\ams\Arduino\arduino_mega_server\server_ajax.ino: In function 'void responseDash(EthernetClient)':
server_ajax:789: error: 'day' was not declared in this scope
s += makeTag("day", "", String(day()));
^
server_ajax:790: error: 'month' was not declared in this scope
s += makeTag("month", "", String(month()));
^
server_ajax:791: error: 'weekday' was not declared in this scope
s += makeTag("weekday", "", String(weekday()));
^
D:\Arduino\ArduinoMegaServer\Sketches\ams\Arduino\arduino_mega_server\tntp.ino: In function 'time_t getNtpTime()':
tntp:54: error: 'setSyncInterval' was not declared in this scope
setSyncInterval(3600);
^
tntp:55: error: 'SECS_PER_HOUR' was not declared in this scope
return secsSince1900 - 2208988800UL + timeZone * SECS_PER_HOUR;
^
tntp:59: error: 'setSyncInterval' was not declared in this scope
setSyncInterval(18);
^
D:\Arduino\ArduinoMegaServer\Sketches\ams\Arduino\arduino_mega_server\upload.ino: In function 'void uploadWorks()':
upload:160: error: 'setSyncProvider' was not declared in this scope
setSyncProvider(RTC.get);
^
upload:162: error: 'timeStatus' was not declared in this scope
if (timeStatus() != timeSet) {
^
upload:162: error: 'timeSet' was not declared in this scope
if (timeStatus() != timeSet) {
^
Несколько библиотек найдено для "Ethernet.h"
Используется: D:\Arduino\ArduinoMegaServer\Sketches\ams\Arduino\libraries\Ethernet
Не используется: C:\Program Files (x86)\Arduino\libraries\Ethernet
exit status 1
'setSyncProvider' was not declared in this scope
Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"
ВНИМАНИЕ: Категория '' в библиотеке Ethernet2 не является действительной. Установка на 'Uncategorized'
In file included from D:\Arduino\ArduinoMegaServer\Sketches\ams\Arduino\arduino_mega_server\arduino_mega_server.ino:115:0:
D:\Arduino\ArduinoMegaServer\Sketches\ams\Arduino\libraries\DS1307RTC/DS1307RTC.h:19:22: error: 'tmElements_t' has not been declared
static bool read(tmElements_t &tm);
^
D:\Arduino\ArduinoMegaServer\Sketches\ams\Arduino\libraries\DS1307RTC/DS1307RTC.h:20:23: error: 'tmElements_t' has not been declared
static bool write(tmElements_t &tm);
^
D:\Arduino\ArduinoMegaServer\Sketches\ams\Arduino\arduino_mega_server\rtc.ino: In function 'void rtcInit()':
rtc:10: error: 'setSyncProvider' was not declared in this scope
setSyncProvider(getNtpTime);
^
rtc:14: error: 'setSyncProvider' was not declared in this scope
setSyncProvider(RTC.get); // get time from RTC
^
D:\Arduino\ArduinoMegaServer\Sketches\ams\Arduino\arduino_mega_server\rtc.ino: In function 'void rtcSync()':
rtc:24: error: 'setSyncProvider' was not declared in this scope
setSyncProvider(getNtpTime);
^
rtc:26: error: 'timeStatus' was not declared in this scope
if (timeStatus() != timeNotSet) {
^
rtc:26: error: 'timeNotSet' was not declared in this scope
if (timeStatus() != timeNotSet) {
^
D:\Arduino\ArduinoMegaServer\Sketches\ams\Arduino\arduino_mega_server\rtc.ino: In function 'void serialRTC()':
rtc:42: error: 'year' was not declared in this scope
Serial.print(year());
^
rtc:44: error: 'month' was not declared in this scope
printDigits(month());
^
rtc:46: error: 'day' was not declared in this scope
printDigits(day());
^
rtc:48: error: 'hour' was not declared in this scope
printDigits(hour());
^
rtc:50: error: 'minute' was not declared in this scope
printDigits(minute());
^
rtc:52: error: 'second' was not declared in this scope
printDigits(second());
^
D:\Arduino\ArduinoMegaServer\Sketches\ams\Arduino\arduino_mega_server\rtc.ino: In function 'void showDuration(time_t)':
rtc:73: error: 'SECS_PER_DAY' was not declared in this scope
if(duration >= SECS_PER_DAY){
^
rtc:78: error: 'SECS_PER_HOUR' was not declared in this scope
if(duration >= SECS_PER_HOUR){
^
rtc:83: error: 'SECS_PER_MIN' was not declared in this scope
if(duration >= SECS_PER_MIN){
^
D:\Arduino\ArduinoMegaServer\Sketches\ams\Arduino\arduino_mega_server\rtc.ino: In function 'void checkEvent(time_t*)':
rtc:94: error: 'now' was not declared in this scope
time_t timeNow = now();
^
D:\Arduino\ArduinoMegaServer\Sketches\ams\Arduino\arduino_mega_server\rtc.ino: In function 'void setNtpInterval()':
rtc:149: error: 'timeStatus' was not declared in this scope
if (timeStatus() == timeNotSet) {
^
rtc:149: error: 'timeNotSet' was not declared in this scope
if (timeStatus() == timeNotSet) {
^
rtc:150: error: 'setSyncInterval' was not declared in this scope
setSyncInterval(18);
^
D:\Arduino\ArduinoMegaServer\Sketches\ams\Arduino\arduino_mega_server\server_ajax.ino: In function 'String makeTime()':
server_ajax:226: error: 'hour' was not declared in this scope
s += makeDigits(hour());
^
server_ajax:227: error: 'second' was not declared in this scope
if (second() % 2 == 0) {s += " ";}
^
server_ajax:229: error: 'minute' was not declared in this scope
s += makeDigits(minute());
^
D:\Arduino\ArduinoMegaServer\Sketches\ams\Arduino\arduino_mega_server\server_ajax.ino: In function 'void responseDash(EthernetClient)':
server_ajax:789: error: 'day' was not declared in this scope
s += makeTag("day", "", String(day()));
^
server_ajax:790: error: 'month' was not declared in this scope
s += makeTag("month", "", String(month()));
^
server_ajax:791: error: 'weekday' was not declared in this scope
s += makeTag("weekday", "", String(weekday()));
^
D:\Arduino\ArduinoMegaServer\Sketches\ams\Arduino\arduino_mega_server\tntp.ino: In function 'time_t getNtpTime()':
tntp:54: error: 'setSyncInterval' was not declared in this scope
setSyncInterval(3600);
^
tntp:55: error: 'SECS_PER_HOUR' was not declared in this scope
return secsSince1900 - 2208988800UL + timeZone * SECS_PER_HOUR;
^
tntp:59: error: 'setSyncInterval' was not declared in this scope
setSyncInterval(18);
^
D:\Arduino\ArduinoMegaServer\Sketches\ams\Arduino\arduino_mega_server\upload.ino: In function 'void uploadWorks()':
upload:160: error: 'setSyncProvider' was not declared in this scope
setSyncProvider(RTC.get);
^
upload:162: error: 'timeStatus' was not declared in this scope
if (timeStatus() != timeSet) {
^
upload:162: error: 'timeSet' was not declared in this scope
if (timeStatus() != timeSet) {
^
Несколько библиотек найдено для "Ethernet.h"
Используется: D:\Arduino\ArduinoMegaServer\Sketches\ams\Arduino\libraries\Ethernet
Не используется: C:\Program Files (x86)\Arduino\libraries\Ethernet
exit status 1
'setSyncProvider' was not declared in this scope
Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"
- ser009
- Сообщения: 595
- Зарегистрирован: Сб окт 13, 2012 9:55 am
- Благодарил (а): 4 раза
- Поблагодарили: 43 раза
Re: Arduino Mega Server
Еще одно интересное замечание.
Если есть клиенты nrf24, то при перезагрузке сервера приходится перезапускать и клиентов.
Если есть клиенты nrf24, то при перезагрузке сервера приходится перезапускать и клиентов.
-
- Сообщения: 2575
- Зарегистрирован: Пт ноя 06, 2015 10:22 am
- Откуда: Кишинёв
- Благодарил (а): 303 раза
- Поблагодарили: 282 раза
Re: Arduino Mega Server
Извините , а откуда тогда Вы получаете время??? Я понимаю , что можно обойтись без этого , но только на период изучения возможностей АМС. Тогда уж можно прикрутить железные часики.prapor писал(а):....Похоже, дело было в NTP....... Девайс не мог получить время ни снаружи, ни от местных серверов. Отрубил модули RTC и NTP...
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
-
- Сообщения: 2575
- Зарегистрирован: Пт ноя 06, 2015 10:22 am
- Откуда: Кишинёв
- Благодарил (а): 303 раза
- Поблагодарили: 282 раза
Re: Arduino Mega Server
Очень давно я прикрутил аналоговые часики на .JS Код очень похож на многофунциональный индикатор.ser009 писал(а):Вопрос по графикам AMS.
Может кто прикручивал?
Где можно задать шкалы X и Y. Я так понимаю график должен рисоваться по середине , а не вверху. И хотелось бы увеличить время скажем до 1 часа, чтобы была видна динамика при медленно изменяющихся параметрах
СпойлерПоказать
Код: Выделить всё
// clock
var oldSeconds = 0;
function updateClock() {
var t = new Date();
var clockArms = [t.getHours(), t.getMinutes(), t.getSeconds()];
if (clockArms[2] == oldSeconds) return; //секунды не менялись? выйти
oldSeconds = clockArms[2];
var c = document.getElementById('clock');
var ctx = c.getContext('2d');
//очистить канву:
//ctx.fillStyle = 'white'; // фон квадрата часов
ctx.fillRect(0, 0, c.width, c.height);
//нарисовать контур часов:
var x = Math.round(c.width/2);
var y = Math.round(c.height/2);
var r = Math.round(Math.min(x,y));
ctx.beginPath();
ctx.arc(x,y,r,0,2*Math.PI,true);
ctx.fillStyle = 'rgba(200,200,200,1)';// задает фон внутри циферблата
ctx.fill(); //????????
ctx.lineWidth = 1;
ctx.strokeStyle = 'rgba(128,128,128,0)';//-----------------------------окружность!!!!!
ctx.stroke();
ctx.closePath();
//нарисовать метки циферблата и цифры:
ctx.save();
ctx.textBaseline = "middle";
ctx.textAlign = "center";
// ctx.shadowColor = "rgb(128,0,0)"; //тени возле цифр
// ctx.shadowOffsetX = 3;
// ctx.shadowOffsetY = 3;
// ctx.shadowBlur = 6;
var delta = Math.max(8,Math.round(r/10)); //для размера шрифта и отсечек
ctx.font = 'bold '+delta+'pt sans-serif';
var u=Math.PI/2;
var r1=r-delta;
for (var i=1; i<=12; i++) {
ctx.beginPath();
var x1 = x+Math.round(r1*Math.cos(u)), //так можно узнать позиции делений циферблата
y1 = y-Math.round(r1*Math.sin(u)),
x2 = x+Math.round(r*Math.cos(u)),
y2 = y-Math.round(r*Math.sin(u));
ctx.strokeStyle = 'rgb(99,99,99)';
ctx.moveTo(x1,y1);
ctx.lineTo(x2,y2);
u+=Math.PI/6;
ctx.stroke();
ctx.closePath();
ctx.beginPath();
ctx.fillStyle = 'rgba(33,33,33,0)';
//ctx.fillText (''+(13-i),x1,y1); //а так вывести цифры по часовому кругу
ctx.fill();
ctx.closePath();
}
ctx.restore();
//нарисовать стрелки:
clockArms[1] += clockArms[2] / 60;
clockArms[0] += clockArms[1] / 60;
drawClockArm(ctx, x, y, clockArms[0] * 30, 2*r/2.5 - 15, 5, 'navy'); // длина , толщина и цвет стрелок
drawClockArm(ctx, x, y, clockArms[1] * 6, 2*r/2.2 - 10, 3, 'darkgreen');
drawClockArm(ctx, x, y, clockArms[2] * 6, 2*r/2.0 - 6, 2, 'darkred');
}
function drawClockArm(ctx, x,y, degrees, len, lineWidth, style) {
ctx.save();
ctx.lineWidth = lineWidth;
ctx.lineCap = 'round';
ctx.translate(x, y);
ctx.rotate((degrees - 90) * Math.PI / 180);
ctx.strokeStyle = style;
ctx.beginPath();
ctx.moveTo(-len / 10, 0);
ctx.lineTo(len, 0);
ctx.stroke();
ctx.restore();
}
function initClock() {
window.setInterval(updateClock, 333); //интервал обновления - треть секунды
}
onload = initClock;]
По поводу NRF24. Не всегда , но тоже на такое поведение натыкался. Хотя даже если в сериале " передача не удалась", цифры нормально доходят до сервера.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
-
- Сообщения: 2
- Зарегистрирован: Вс май 21, 2017 7:13 pm
- Благодарил (а): 0
- Поблагодарили: 1 раз
Re: Arduino Mega Server
Всем привет!
Заглянул в тему после статьи на хабре: https://geektimes.ru/post/259898/
Возник вопрос: использую w5100 для выхода ардуинки в сеть, использую стандартную библиотечку для этой платы, после прочтения статьи (в ней описан баг с подвисаниями клиентов web-сервера) захотелось обойти описанный в статье баг, как это можно сделать?
Спасибо.
Заглянул в тему после статьи на хабре: https://geektimes.ru/post/259898/
Возник вопрос: использую w5100 для выхода ардуинки в сеть, использую стандартную библиотечку для этой платы, после прочтения статьи (в ней описан баг с подвисаниями клиентов web-сервера) захотелось обойти описанный в статье баг, как это можно сделать?
Спасибо.
-
- Сообщения: 2575
- Зарегистрирован: Пт ноя 06, 2015 10:22 am
- Откуда: Кишинёв
- Благодарил (а): 303 раза
- Поблагодарили: 282 раза
Re: Arduino Mega Server
На ESP8266 и 32 такой проблемы нет. При запуске сервера за минуту проходит вся карусель , и данные на странице.ser009 писал(а):Еще одно интересное замечание.
Если есть клиенты nrf24, то при перезагрузке сервера приходится перезапускать и клиентов.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS