Страница 2 из 3
Re: "Умный выключатель"
Добавлено: Пт июн 10, 2016 10:53 am
serghei
Ivan писал(а):.... в разомкнутом состоянии всё равно есть ток утечки. Что приводит к слабому свечению.
Буду переходить тоже на реле.
Это проблема практически всех без контактных выключателей и выключателей с подсветкой. В разомкнутом состоянии два
бесконечных сопротивления неоновой лампы ( или симистора ) и блока питания ЛЕД ( или экономки ) включенных последовательно не могут " поделить " 220 вольт, поэтому и перемигиваются. Попробуйте вместо ЛЕД поставить лампу накаливания. ( или параллельно блоку питания, если он скрыт в нише ). Если эффект пропадет, придется переходить на реле.
Re: "Умный выключатель"
Добавлено: Пт июн 10, 2016 12:40 pm
Ivan
Эти проблемы я знаю и 100% это оно, ничего пробовать не нужно.
Я меня дома только LED другие я ставить не хочу
Реле не ставил только по причине количество срабатываний и потребления на катушке. Понимаю что в замкнутом состоянии оно очень не большое, но если все будут по чуть чуть потреблять в итоге набегает
Re: "Умный выключатель"
Добавлено: Пт июн 10, 2016 1:15 pm
serghei
К сожалению, других вариантов нет. Если только вместо реле замутить микрик с сервоприводом для нажатия кнопки. Оправдывает себя, если заложена " правильная" разводка проводов (каждая группа ламп своим кабелем в шкаф). Хотя
существуют еще импульсные реле. Для перевода в другое состояние им надо импульс в миллисекунды. У меня куча таких стояло на работе (промышленный вариант)." Миниатюрные " делали в Союзе ,кажется РПС 22 .
Re: "Умный выключатель"
Добавлено: Вт апр 04, 2017 2:11 pm
ahelper
Пытаюсь повторить данный выключатель. Версия библиотек MySensors на данный момент 2.1.0, соответственно приходится скетч из шапки переделывать, т.к. версия скетча старая. В моём скетче реле ноды
управляются с Алисы, а с кнопок ноды только выключение. Не пойму, что не так в коде, почему не происходит изменения состояния реле с "0" в "1". При нажатии кнопок сообщения отправляются, только статус всегда "0". Помогите разобраться.
Код: Выделить всё
#define MY_DEBUG // Включаем отладочные сообщения в порт ноды
#define MY_RADIO_NRF24 // Определаем тип радио модуля
#define MY_NODE_ID 5 // Задаем ID ноды
#define MY_RF24_CE_PIN 9 // Специфические настройки пинов для радиомодулей RF24
#define MY_RF24_CS_PIN 10 // Специфические настройки пинов для радиомодулей RF24
#include <SPI.h>
#include <MySensors.h>
#include <Bounce2.h>
#define RELAY_1 3 // номер цифрового пина для 1 реле
#define RELAY_2 4 // номер цифрового пина для 2 реле
//#define NUMBER_OF_RELAYS 2 // Общее количество подключенных реле
#define RELAY_ON 1 // состояние влюченного реле
#define RELAY_OFF 0 // состояние выключенного реле
#define BUTTON_PIN_1 6 // номер цифрового пина для 1 выключателя
#define BUTTON_PIN_2 7 // номер цифрового пина для 2 выключателя
//#define CHILD_ID 5 // Id Идентификатор датчика
Bounce debouncer1 = Bounce();
Bounce debouncer2 = Bounce();
MyMessage msg1(1, V_STATUS);
MyMessage msg2(2, V_STATUS); // Initialize message
void before()
{
// Устанавливаем состояние контактов реле 1
pinMode(RELAY_1, OUTPUT);
// Отправляем состояние реле шлюзу
digitalWrite(RELAY_1, loadState(1)?RELAY_OFF:RELAY_ON);
// Устанавливаем состояние контактов реле 2
pinMode(RELAY_2, OUTPUT);
// Отправляем состояние реле шлюзу
digitalWrite(RELAY_2, loadState(2)?RELAY_OFF:RELAY_ON);
/*
for (int sensor=1, pin=RELAY_1; sensor<=NUMBER_OF_RELAYS; sensor++, pin++) {
// Then set relay pins in output mode
pinMode(pin, OUTPUT);
// Set relay to last known state (using eeprom storage)
digitalWrite(pin, loadState(sensor)?RELAY_ON:RELAY_OFF);
}*/
}
void setup()
{
pinMode(BUTTON_PIN_1, INPUT); // Установки состояния выключателя №1
digitalWrite(BUTTON_PIN_1,HIGH); // Устанавливаем состояния выключателя pull-up
debouncer1.attach(BUTTON_PIN_1); // После настройки кнопки, установка debouncer
debouncer1.interval(5);
pinMode(BUTTON_PIN_2, INPUT); // Установки состояния выключателя №1
digitalWrite(BUTTON_PIN_2,HIGH); // Устанавливаем состояния выключателя pull-up
debouncer2.attach(BUTTON_PIN_2); // После настройки кнопки, установка debouncer
debouncer2.interval(5);
}
void presentation()
{
// Версия прошивки контроллера
sendSketchInfo("Switch2WayWD_test", "1.1");
// Регистрируем датчики для шлюза MySensor
present(1, S_BINARY);
present(2, S_BINARY);
/*for (int sensor=1, pin=RELAY_1; sensor<=NUMBER_OF_RELAYS; sensor++, pin++) {
// Register all sensors to gw (they will be created as child devices)
present(sensor, S_BINARY);
}*/
}
void loop()
{
if (debouncer1.update() && debouncer1.read()) {
send(msg1.set(loadState(1)?RELAY_ON:RELAY_OFF), true);
}
if (debouncer2.update() && debouncer2.read()) {
send(msg2.set(loadState(2)?RELAY_ON:RELAY_OFF), true);
}
}
// Обработка входящих сообщений от шлюза MySensor
void receive(const MyMessage &message)
{
// Проверка состояния реле
if (message.type==V_STATUS) {
// Изменяем состояние реле
digitalWrite(message.sensor-1+RELAY_1, message.getBool()?RELAY_ON:RELAY_OFF);
// Пишем состояние реле в память
saveState(message.sensor, message.getBool());
// Обработка ошибок через com порт
Serial.print("Incoming change for sensor:");
Serial.print(message.sensor);
Serial.print(", New status: ");
Serial.println(message.getBool());
}
}
Re: "Умный выключатель"
Добавлено: Вт апр 04, 2017 2:44 pm
maloicds
send(msg1.set(loadState(1)?RELAY_ON:RELAY_OFF), true);
потому что вы отправляете состояние реле а не кнопки
Re: "Умный выключатель"
Добавлено: Вт апр 04, 2017 10:17 pm
ahelper
В коде из шапки работает же вроде, или тоже не работало? Только отправляло состояние реле без переключения? Код похож, аналогичен
Код: Выделить всё
void loop()
{
// Обработка входящих сообщений от шлюза MySensor
gw.process();
if (debouncer1.update() && debouncer1.read()) {
gw.send(msg1.set( (gw.loadState(1) ? RELAY_OFF : RELAY_ON)), true);
}
if (debouncer2.update() && debouncer2.read()) {
gw.send(msg2.set( (gw.loadState(2) ? RELAY_OFF : RELAY_ON)), true);
}
wdt_reset(); // сбрасываем таймер watchdog
}
Re: "Умный выключатель"
Добавлено: Вт апр 04, 2017 11:26 pm
maloicds
Посмотрите как реализовано в
mysensors
Код: Выделить всё
void loop()
{
debouncer.update();
// Get the update value
int value = debouncer.read();
if (value != oldValue) {
// Send in the new value
send(msg.set(value==HIGH ? 1 : 0));
oldValue = value;
}
}
Re: "Умный выключатель"
Добавлено: Ср апр 05, 2017 1:40 am
ahelper
Переделал наконец то скетч под библиотеку MySensors 2.1.1.
Надеюсь не против будет уважаемый VGorokhov если выложу здесь, может кому и пригодится еще.
Добавил: Помнит последнее состояние реле, при выкл/вкл питания возвращает последнее состояние Алисе (шлюзу MySensors).
Есть одно НО, если завис шлюз (Gateway), то выключатель не работает. Еще не знаю, все ли Ноды MySensors так работают? Получается этот выключатель не автономное устройство!
Если есть возможность реализовать автономность при пропадании шлюза, подскажите как.
Re: "Умный выключатель"
Добавлено: Ср апр 05, 2017 8:57 pm
Ivan
Вы неправильно делаете.
Вам с выключателя нужно отсылать на исполнитель. А уже тот должен возвращать свой статус системе.
То есть если гейт или система ляжет. То это не нарушит работу
Re: "Умный выключатель"
Добавлено: Ср апр 05, 2017 11:51 pm
ahelper
Исполнитель и выключатель в одном устройстве. Куда отсылать?
Вроде должно быть так, кнопка изменяет выход реле и потом отсылается его состояние. В коде вроде, так и есть. Но при инициализации ноды, если гейт не ответил, программа висит в ожидании с постоянным запросом. Соответственно выключатель не работает.
Много чего еще не знаю, и опираюсь на образцы скетчей. Вот увидеть бы пример скетча решающий данную проблему, может и выспался бы.