Модератор: Alex
-
awladimer
- Сообщения: 30
- Зарегистрирован: Вт фев 21, 2017 10:07 am
-
Благодарил (а):
15 раз
-
Поблагодарили:
0
Сообщение
awladimer » Чт фев 23, 2017 8:47 pm
serghei писал(а):На первой вкладке АМС в середине loop есть код
Код: Выделить всё
#ifdef TEMP_FEATURE
if (cycle5m) {tempWorks();}
#endif
5m это время через которое сработает вывод температуры. Дальше смотрите вкладку timers самое начало.
Код: Выделить всё
unsigned long timer1s;
unsigned long timer4s;
unsigned long timer20s;
unsigned long timer30s;
unsigned long timer1m;
unsigned long timer3m;
unsigned long timer5m;
Это время - меняйте на 1,4,20,30 секунд или 1 ,3,5 минут. Не уверен , но кажется во всех версиях так.
спасибо большое
*** Сообщение запрещено. Сообщение похоже на спам. ***
-
Avd67
- Сообщения: 11
- Зарегистрирован: Пт фев 10, 2017 3:44 pm
-
Благодарил (а):
0
-
Поблагодарили:
0
Сообщение
Avd67 » Пт фев 24, 2017 12:59 am
serghei писал(а):Avd67 писал(а):
Я, наверное, красным фломастером обведу в календаре тот день, когда АМС запустится
Сегодня этот день настал - отформатировал свою больную карту на 8 гигов через адаптер микро-макси на нетбуке ( прогу вспомню вечером ). Вставляю в USB-reader - Винда орёт что карта не форматирована. На большом другом компе с тем же ридером нормально прочиталась , любопытство победило и я залил файлы сервера. И о ,боги, она ЗАВЕЛАСЬ !!!!!
Полгода танцев с бубном такого не сотворили. Название проги вечером ( или сами погуглите )
И с праздиком Вас !
UPD Прога называется USB disk storage format tool. Скачивал
отсюда. 8 гигов колбасит почти час, но после этого все заработало.
Неа, не помогает(
-
awladimer
- Сообщения: 30
- Зарегистрирован: Вт фев 21, 2017 10:07 am
-
Благодарил (а):
15 раз
-
Поблагодарили:
0
Сообщение
awladimer » Пт фев 24, 2017 10:52 am
Android2i2 писал(а):Ох... И снова я со своими проблемами. >.<
Повесил 2 реле на 11 и 12 пин.
Код был культурно слизан с данного форума, но чуть-чуть под себя переделан.
Код: Выделить всё
#ifdef RELAYS_FEATURE
byte RPIN[2] ={11,12};
byte RCTRPIN[2]={11,12};
int current_val[2];
int old_val[2];
void relInit() {
for (byte i=0; i<=1; i++){
pinMode(RCTRPIN[i],LOW);
}
Serial.print("Relays module... ");
modulRel = MODUL_ENABLE;
Serial.print("started\n");
}
void rel_control() {
for (byte i=0; i<=1; i++) {
current_val[i]=digitalRead(RCTRPIN[i]);
if (old_val[i] != current_val[i]){
if (digitalRead(RCTRPIN[i])== HIGH) {
rel_sw(i, 1);
}else {
rel_sw(i, 0);
}
old_val[i] = current_val[i];
}
}}
void rel_sw(byte num, byte stat) {
if(stat==1) {
digitalWrite(RPIN[num], HIGH);
Serial.print("REL");
Serial.print(num+1);
Serial.print(": on\n");
REL_state[num] = 1;
} else {
digitalWrite(RPIN[num], LOW);
Serial.print("REL");
Serial.print(num+1);
Serial.print(": off\n");
REL_state[num] = 0;
}
}
#endif
Ну и, как и со всеми другими железяками, для начала решил воткнуть свой модуль на уже готовую страницу управления.
По примеру leds добавил пару строк в Ajax.
Код: Выделить всё
else if (StrContains(HTTP_req, "request_generic")) {sendXmlAnswer(cl); SetREL(); responseGeneric(cl);}
.
.
.
// Generic
void SetREL() {
if (StrContains(HTTP_req, "REL1=1")) {
REL_state[0] = 1; // save LED state
digitalWrite(11, HIGH);
} else if (StrContains(HTTP_req, "REL1=0")) {
REL_state[0] = 0; // save LED state
digitalWrite(11, LOW);
}
// REL 2 (pin 12)
if (StrContains(HTTP_req, "REL2=1")) {
REL_state[1] = 1;
digitalWrite(12, HIGH);
} else if (StrContains(HTTP_req, "REL2=0")) {
REL_state[1] = 0;
digitalWrite(12, LOW);
}
}
В sample2 просто заменил два LED'a на свои REL.
Код: Выделить всё
var strREL1 = "";
var strLED3 = "";
var strLED4 = "";
var REL2_state = 0;
var LED4_state = 0;
...
// REL 1
if (this.responseXML.getElementsByTagName('REL')[0].childNodes[0].nodeValue === "checked") {
document.REL_form.REL1.checked = true;
document.getElementById("REL1").innerHTML = "ON";
} else {
document.REL_form.REL1.checked = false;
document.getElementById("REL1").innerHTML = "OFF";
}
// REL 2
if (this.responseXML.getElementsByTagName('REL')[2].childNodes[0].nodeValue === "on") {
document.getElementById("REL2").innerHTML = "REL 2 is ON (D12)";
document.getElementById("REL2").innerHTML = "ON";
LED3_state = 1;
} else {
document.getElementById("REL2").innerHTML = "REL2 is OFF (D5)";
document.getElementById("REL2").innerHTML = "OFF";
REL2_state = 0;
}
// LED 4
if (this.responseXML.getElementsByTagName('LED')[3].childNodes[0].nodeValue === "on") {
document.getElementById("LED4").innerHTML = "LED 4 is ON (D3)";
document.getElementById("ld3").innerHTML = "ON";
LED4_state = 1;
} else {
document.getElementById("LED4").innerHTML = "LED 4 is OFF (D3)";
document.getElementById("ld3").innerHTML = "OFF";
LED4_state = 0;
}
...
request.open("GET", "request_generic" + strREL1 + strREL2 + strLED3 + strLED4 + randomNoCache(), true);
request.send(null);
setTimeout('getArduinoIO()', 1000);
strREL1 = "";
strREL2 = "";
strLED3 = "";
strLED4 = "";
} // getArduinoIO()
...
unction GetCheck() {
if (REL_form.REL1.checked) {
strREL1 = "&REL1=1";
} else {
strREL1 = "&REL1=0";
}
}
/* -----------------------------------------
service LEDs when button checked/unchecked
-------------------------------------------- */
function GetButton1() {
if (REL2_state === 1) {
REL2_state = 0;
strREL2 = "&REL2=0";
} else {
REL2_state = 1;
strREL2 = "&REL2=1";
}
}
function GetButton2() {
if (LED4_state === 1) {
LED4_state = 0;
strLED4 = "&LED4=0";
} else {
LED4_state = 1;
strLED4 = "&LED4=1";
}
...
<h3>Светодиоды,<br>использующие чекбоксы</h3>
<form id="check_RELs" name="REL_form">
<input type="checkbox" name="REL1" value="0" onclick="GetCheck()" /> REL 1 (D11)<br /><br />
</form>
</div>
</div>
<div class="cell-4">
<div class="box">
<h3>Светодиоды,<br>использующие кнопки</h3>
<button type="button" id="REL2" onclick="GetButton1()">REL 2 is OFF (D12)</button><br /><br />
<button type="button" id="LED4" onclick="GetButton2()">LED 4 is OFF (D9)</button><br /><br />
</div>
</div>
Но...
Скриншот 13-02-2017 174424.jpg
Как понимаете, ничего с моим реле не происходит, как бы яростно я не тыкал по кнопкам.
Направьте на путь истинный.
Что я опять сделал не так?

А что за программа у вас для отладки HTM и cj
-
serghei
- Сообщения: 2575
- Зарегистрирован: Пт ноя 06, 2015 10:22 am
- Откуда: Кишинёв
-
Благодарил (а):
303 раза
-
Поблагодарили:
282 раза
Сообщение
serghei » Пт фев 24, 2017 10:56 am
awladimer Злоупотреблять слишком частым опросом температуры не надо. 5-ти минут вполне достаточно , если только для теста датчиков. Сам таким грешу , но потом возвращаю к 5 минут.
Да это простой текстовый редактор Notepad++
Для начала работы по адаптации "под себя" попробуй пройти эту
школу. А потом можно браться и по серьезней.
- За это сообщение автора serghei поблагодарил:
- awladimer (Пт фев 24, 2017 11:29 am)
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
-
Android2i2
- Сообщения: 18
- Зарегистрирован: Вс фев 05, 2017 2:19 pm
-
Благодарил (а):
2 раза
-
Поблагодарили:
2 раза
-
Контактная информация:
Сообщение
Android2i2 » Пт фев 24, 2017 11:01 am
awladimer писал(а):Android2i2 писал(а):Ох... И снова я со своими проблемами. >.<
Повесил 2 реле на 11 и 12 пин.
Код был культурно слизан с данного форума, но чуть-чуть под себя переделан.
Код: Выделить всё
#ifdef RELAYS_FEATURE
byte RPIN[2] ={11,12};
byte RCTRPIN[2]={11,12};
int current_val[2];
int old_val[2];
void relInit() {
for (byte i=0; i<=1; i++){
pinMode(RCTRPIN[i],LOW);
}
Serial.print("Relays module... ");
modulRel = MODUL_ENABLE;
Serial.print("started\n");
}
void rel_control() {
for (byte i=0; i<=1; i++) {
current_val[i]=digitalRead(RCTRPIN[i]);
if (old_val[i] != current_val[i]){
if (digitalRead(RCTRPIN[i])== HIGH) {
rel_sw(i, 1);
}else {
rel_sw(i, 0);
}
old_val[i] = current_val[i];
}
}}
void rel_sw(byte num, byte stat) {
if(stat==1) {
digitalWrite(RPIN[num], HIGH);
Serial.print("REL");
Serial.print(num+1);
Serial.print(": on\n");
REL_state[num] = 1;
} else {
digitalWrite(RPIN[num], LOW);
Serial.print("REL");
Serial.print(num+1);
Serial.print(": off\n");
REL_state[num] = 0;
}
}
#endif
Ну и, как и со всеми другими железяками, для начала решил воткнуть свой модуль на уже готовую страницу управления.
По примеру leds добавил пару строк в Ajax.
Код: Выделить всё
else if (StrContains(HTTP_req, "request_generic")) {sendXmlAnswer(cl); SetREL(); responseGeneric(cl);}
.
.
.
// Generic
void SetREL() {
if (StrContains(HTTP_req, "REL1=1")) {
REL_state[0] = 1; // save LED state
digitalWrite(11, HIGH);
} else if (StrContains(HTTP_req, "REL1=0")) {
REL_state[0] = 0; // save LED state
digitalWrite(11, LOW);
}
// REL 2 (pin 12)
if (StrContains(HTTP_req, "REL2=1")) {
REL_state[1] = 1;
digitalWrite(12, HIGH);
} else if (StrContains(HTTP_req, "REL2=0")) {
REL_state[1] = 0;
digitalWrite(12, LOW);
}
}
В sample2 просто заменил два LED'a на свои REL.
Код: Выделить всё
var strREL1 = "";
var strLED3 = "";
var strLED4 = "";
var REL2_state = 0;
var LED4_state = 0;
...
// REL 1
if (this.responseXML.getElementsByTagName('REL')[0].childNodes[0].nodeValue === "checked") {
document.REL_form.REL1.checked = true;
document.getElementById("REL1").innerHTML = "ON";
} else {
document.REL_form.REL1.checked = false;
document.getElementById("REL1").innerHTML = "OFF";
}
// REL 2
if (this.responseXML.getElementsByTagName('REL')[2].childNodes[0].nodeValue === "on") {
document.getElementById("REL2").innerHTML = "REL 2 is ON (D12)";
document.getElementById("REL2").innerHTML = "ON";
LED3_state = 1;
} else {
document.getElementById("REL2").innerHTML = "REL2 is OFF (D5)";
document.getElementById("REL2").innerHTML = "OFF";
REL2_state = 0;
}
// LED 4
if (this.responseXML.getElementsByTagName('LED')[3].childNodes[0].nodeValue === "on") {
document.getElementById("LED4").innerHTML = "LED 4 is ON (D3)";
document.getElementById("ld3").innerHTML = "ON";
LED4_state = 1;
} else {
document.getElementById("LED4").innerHTML = "LED 4 is OFF (D3)";
document.getElementById("ld3").innerHTML = "OFF";
LED4_state = 0;
}
...
request.open("GET", "request_generic" + strREL1 + strREL2 + strLED3 + strLED4 + randomNoCache(), true);
request.send(null);
setTimeout('getArduinoIO()', 1000);
strREL1 = "";
strREL2 = "";
strLED3 = "";
strLED4 = "";
} // getArduinoIO()
...
unction GetCheck() {
if (REL_form.REL1.checked) {
strREL1 = "&REL1=1";
} else {
strREL1 = "&REL1=0";
}
}
/* -----------------------------------------
service LEDs when button checked/unchecked
-------------------------------------------- */
function GetButton1() {
if (REL2_state === 1) {
REL2_state = 0;
strREL2 = "&REL2=0";
} else {
REL2_state = 1;
strREL2 = "&REL2=1";
}
}
function GetButton2() {
if (LED4_state === 1) {
LED4_state = 0;
strLED4 = "&LED4=0";
} else {
LED4_state = 1;
strLED4 = "&LED4=1";
}
...
<h3>Светодиоды,<br>использующие чекбоксы</h3>
<form id="check_RELs" name="REL_form">
<input type="checkbox" name="REL1" value="0" onclick="GetCheck()" /> REL 1 (D11)<br /><br />
</form>
</div>
</div>
<div class="cell-4">
<div class="box">
<h3>Светодиоды,<br>использующие кнопки</h3>
<button type="button" id="REL2" onclick="GetButton1()">REL 2 is OFF (D12)</button><br /><br />
<button type="button" id="LED4" onclick="GetButton2()">LED 4 is OFF (D9)</button><br /><br />
</div>
</div>
Но...
Скриншот 13-02-2017 174424.jpg
Как понимаете, ничего с моим реле не происходит, как бы яростно я не тыкал по кнопкам.
Направьте на путь истинный.
Что я опять сделал не так?

А что за программа у вас для отладки HTM и cj
Как выше ответил Сергей, это NotePad++.
P.S.
Реле у меня так и не заработало.
*** Сообщение запрещено. Сообщение похоже на спам. ***
Arduino Mega 2560 + Ethernet 5100
Windows 10
IDE 1.6.5
Уровень знаний: Пещерный человек
-
serghei
- Сообщения: 2575
- Зарегистрирован: Пт ноя 06, 2015 10:22 am
- Откуда: Кишинёв
-
Благодарил (а):
303 раза
-
Поблагодарили:
282 раза
Сообщение
serghei » Пт фев 24, 2017 11:54 am
Жаль,что сообщения не нумеруются на форуме. Пару десятков страниц ( даже больше )назад выкладывали поправленный скетч " key ". На Дуе заработал на вкладке " Управление" - управление светом. Если размножить до 5, то должно получиться. Мне проверить не на чем - нет свободных серверов.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
-
nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
-
Благодарил (а):
121 раз
-
Поблагодарили:
2010 раз
Сообщение
nick7zmail » Пт фев 24, 2017 11:57 am
serghei писал(а):Жаль,что сообщения не нумеруются на форуме.
Как это не нумеруются?)) У твоего например номер 46760)) И прямая ссылка на него
viewtopic.php?p=46760#p46760
Можно получить по клику на листочек, рядом с надписью "Добавлено" справа вверху.
-
awladimer
- Сообщения: 30
- Зарегистрирован: Вт фев 21, 2017 10:07 am
-
Благодарил (а):
15 раз
-
Поблагодарили:
0
Сообщение
awladimer » Пт фев 24, 2017 12:06 pm
serghei писал(а):awladimer Злоупотреблять слишком частым опросом температуры не надо. 5-ти минут вполне достаточно , если только для теста датчиков. Сам таким грешу , но потом возвращаю к 5 минут.
Да это простой текстовый редактор Notepad++
Для начала работы по адаптации "под себя" попробуй пройти эту
школу. А потом можно браться и по серьезней.
Может быть для уличного и домашнего да. А вот в птичнике в инкубаторной мне придеться делать хотя бы до минуты чтоб отслеживать инкубаторы за пять минут может произойти всякое, и тогда яйца на помойку.
-
serghei
- Сообщения: 2575
- Зарегистрирован: Пт ноя 06, 2015 10:22 am
- Откуда: Кишинёв
-
Благодарил (а):
303 раза
-
Поблагодарили:
282 раза
Сообщение
serghei » Пт фев 24, 2017 12:25 pm
ОООО-даааа ! С перепелками я имел дело 6 лет. Всякое бывало. Только учти влажность почти 100% если нет нормальной вентиляции. И сам сервер надо выносить в служебное помещение.
- За это сообщение автора serghei поблагодарил:
- awladimer (Пт фев 24, 2017 12:51 pm)
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
-
serghei
- Сообщения: 2575
- Зарегистрирован: Пт ноя 06, 2015 10:22 am
- Откуда: Кишинёв
-
Благодарил (а):
303 раза
-
Поблагодарили:
282 раза
Сообщение
serghei » Пт фев 24, 2017 4:06 pm
awladimer писал(а):.. в птичнике в инкубаторной мне придеться делать хотя бы до минуты
Есть более красивый вариант и он работает в коде температуры сенсора. Смысл в том , что температура передается только при изменении на какую нибудь величину - хоть 0.1 хоть 10 градусов. Чтобы "видеть" градусник , он сам должен передавать значения через какое то время.
У меня так реализован сенсор - при старте системы АМС один раз опросил все параметры температур , влажности и расхода воды , а потом сенсор сам передает данные при изменении на 0.5 градуса или на 1 литр или на 1% влажности.
Так можно разгрузить сервер для других задач.
- За это сообщение автора serghei поблагодарил:
- awladimer (Пт фев 24, 2017 7:15 pm)
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS