Добавил в код ещё одну секцию rele.
Вывел её состояние на панель.
Чтобы сильно не пились код состояние реле будем получать из уже готового запроса немного его исправив. Добавляем входа которые нужно опрашивать во время выполнения функции
Код: Выделить всё
function getDashData()
DASH.JS
var analogPins = ["A0","A1","A2","A3","A4","A5","A6","A7","A8","A9","A10","A11","A12","A13","A14","A15","A16"];
String s = "";
byte pins[] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31};
for (byte i = 0; i < sizeof(pins); i++) {
s += makeTag("D", String(pins), String(digitalRead(pins)));
}
return s;
}[/code]
После небольших исправлений мы получим состояние 28 и 29 входов.
Теперь что касается управления. (это мое решение и если есть замечания с удовольствием их выслушаю)
Добавил в Arduino вкладку "rele"
Код: Выделить всё
/*
Modul RELEs
part of Arduino Mega Server project
*/
#ifdef RELE_FEATURE
// pins
#define rele1pin 28 // Rele1
#define rele2pin 29 // Rele2
#define RELE_ON 1
#define RELE_OFF 0
char rele1object[] = "rele1";
char rele2object[] = "rele2";
char rele1onMess[] = "On"; char rele1offMess[] = "Off";
char rele2onMess[] = "On"; char rele2offMess[] = "Off";
// states
// 0 - on
// 1 - off
// 2 - not defined
// 3 - not defined and not contXstatus
byte rele1state = 2; byte old_rele1state = 3; byte rele1objectState = 2;
byte rele2state = 2; byte old_rele2state = 3; byte rele2objectState = 2;
// init
void relesInit() {
pinMode(rele1pin, OUTPUT);
pinMode(rele2pin, OUTPUT);
modulReles = MODUL_ENABLE;
started("Reles", true);
}
void relesWorks() {
// rele1
if (rele1state != old_rele1state) {
old_rele1state = rele1state;
if (rele1state == 1) {
rele1objectState = RELE_ON;
digitalWrite(rele1pin, HIGH);
printAndSend(rele1object, rele1onMess);
#ifdef MAJORDOMO_FEATURE
sendRequestM(rele1object, RELE_ON);
#endif
} else {
rele1objectState = RELE_OFF;
digitalWrite(rele1pin, LOW);
printAndSend(rele1object, rele1offMess);
#ifdef MAJORDOMO_FEATURE
sendRequestM(rele1object, RELE_OFF);
#endif
}
}
}
#endif // RELE_FEATURE
Код: Выделить всё
void setup() void loop
функция отправки команды на включение/выключение реле
Код: Выделить всё
function GetButton1() {
if (RELE1_state === 1) {
RELE1_state = 0;
strRELE1 = "&RELE1=0";
} else {
RELE1_state = 1;
strRELE1 = "&RELE1=1";
}
}
Код: Выделить всё
#ifdef RELE_FEATURE
if (StrContains(HTTP_req, "RELE1=1")) {
rele1state = 1;}
//digitalWrite(rele1pin, HIGH);}
else if (StrContains(HTTP_req, "RELE1=0")) {
rele1state = 0;}
//digitalWrite(rele1pin, LOW);}
if (StrContains(HTTP_req, "RELE2=1")) {
rele2state = 1;
digitalWrite(rele2pin, HIGH);}
else if (StrContains(HTTP_req, "RELE2=0")) {
rele2state = 0;
digitalWrite(rele2pin, LOW);}
#endif
Код: Выделить всё
<p>Выход D28 - <button type="button" onclick="GetButton1()" id="D28">...</button> </p> <br /><br />