Система "Умный дом" для загородного дома на Arduino Mega2560, HC-05, SIM900,DHT11,3-х DS18B20,RTC-DS1302

MaksVV
Offline
Зарегистрирован: 06.08.2015

Slavyanin55 пишет:
MQTT ещё не осилил.

Слава, возможно тебе поможет инструкция в картинках по регистрации брокера и настройки приложения MQTT на смартфоне из моего соседнего проекта. Там mqtt у меня работает на sim800L. Но на даче у меня почти такой же sim900, на нём немного по другому всё. Зато мимум внесений изменений в твой скетч, чтобы всё заработало. После того как я mqtt настроил СМС как то вообще не серьёзно. Онлайн рулит. Скетч позже скину

stambylov
stambylov аватар
Offline
Зарегистрирован: 10.05.2012

Для связи всех бутербродов, а также для связи с другим домом рядом стоящим. Один большой участок и два дома, уличное освещение должно включаться с обоих домов

Александр89
Offline
Зарегистрирован: 29.03.2018

Добрый день, можете схему набросать?

stambylov
stambylov аватар
Offline
Зарегистрирован: 10.05.2012

Схему подключения?

Александр89
Offline
Зарегистрирован: 29.03.2018

да

stambylov
stambylov аватар
Offline
Зарегистрирован: 10.05.2012

Александр89 пишет:

Добрый день, можете схему набросать?

 

Схему для бутербродов рисовал в Автокаде

stambylov
stambylov аватар
Offline
Зарегистрирован: 10.05.2012

Александр89 пишет:

Добрый день, скетч покажите

Скетча много, для каждого бутерброда свой.

Например - Скетч для бутерброда 16 РЕЛЕ

/*ПЛАТА РЕЛЕ 16шт
 * Загружена прошивка 18.11.19
 * Адрес Платы управления 16 реле 0x0C4
 */

#include <SoftwareSerial.h>
#include <EEPROM.h>
#include <SPI.h>
#include <mcp2515.h>
#include <Wire.h> // Wire.h
#include "Adafruit_MCP23017.h"

/*Подключение MCP23017 - Модуль расширения
 * MCP23017   Arduino uno   Arduino Mega
 *    SDA         A4            20
 *    SCL         A5            21
 *    
 * Адреса
 *  Chip     Hardwired Address     i2C
 * Address      A2  A1   A0      Address
 *  0(000)     gnd  gnd  gnd      0x20
 *  1(000)     gnd  gnd  3v3      0x21
 *  2(000)     gnd  3v3  gnd      0x22
 *  3(000)     gnd  3v3  3v3      0x23
 *  4(000)     3v3  gnd  gnd      0x24
 *  5(000)     3v3  gnd  3v3      0x25
 *  6(000)     3v3  3v3  gnd      0x26
 *  7(000)     3v3  3v3  3v3      0x27
 *  
  */
 Adafruit_MCP23017 mcp;
 
 /*Подключение MCP25515 - CAN модуль
 *  MCP25515        Arduino Uno  Arduino Mega
 *  INT(Interrupt)        2           -
 *  SCK(Serial Clock)     13          52
 *  SI(MOSI)              11          51
 *  SO(MISO)              12          50
 *  CS(Chip Select)       10          13 или 12
 *     GND                GND         GND
 *     VCC                5V          5V
 */ 
 
struct can_frame canMsg;

MCP2515 mcp2515(10);  //CS pin

int timeTestSatus = 5000;   //время проверки системы
unsigned long currentMillisStatus = 0;
unsigned long previousMillisStatus = 0;
unsigned long IntervalStatus = timeTestSatus;        // Интервал для проверки 

int NRele = 0;
int stateN1 = 0;
int stateN2 = 0;
int stateN3 = 0;
int stateN4 = 0;
int stateN5 = 0;
int stateN6 = 0;
int stateN7 = 0;
int stateN8 = 0;
int stateN9 = 0;
int stateN10 = 0;
int stateN11 = 0;
int stateN12 = 0;
int stateN13 = 0;
int stateN14 = 0;
int stateN15 = 0;
int stateN16 = 0;

void setup() {
//  Serial.begin(9600);  // Сериал для PC
//  Serial.println("Arduino Start, CAN Start");
  
  SPI.begin();
  mcp2515.reset();
  mcp2515.setBitrate(CAN_125KBPS);
  mcp2515.setNormalMode();

  
  mcp.begin();      // use default address 0
  for (int j=0;j<=16;j++){
    mcp.begin(0);
    mcp.pinMode(j, OUTPUT);
    mcp.digitalWrite(j, HIGH);
  }
  
  stateN1 = EEPROM.read(1);ChangeStateImpulsRele(0,1,stateN1);
  stateN2 = EEPROM.read(2);ChangeStateImpulsRele(0,2,stateN2);
  stateN3 = EEPROM.read(3);ChangeStateImpulsRele(0,3,stateN3);
  stateN4 = EEPROM.read(4);ChangeStateImpulsRele(0,4,stateN4);
  stateN5 = EEPROM.read(5);ChangeStateImpulsRele(0,5,stateN5);
  stateN6 = EEPROM.read(6);ChangeStateImpulsRele(0,6,stateN6);
  stateN7 = EEPROM.read(7);ChangeStateImpulsRele(0,7,stateN7);
  stateN8 = EEPROM.read(8);ChangeStateImpulsRele(0,8,stateN8);
  stateN9 = EEPROM.read(9);ChangeStateImpulsRele(0,9,stateN9);
  stateN10 = EEPROM.read(10);ChangeStateImpulsRele(0,10,stateN10);
  stateN11 = EEPROM.read(11);ChangeStateImpulsRele(0,11,stateN11);
  stateN12 = EEPROM.read(12);ChangeStateImpulsRele(0,12,stateN12);
  stateN13 = EEPROM.read(13);ChangeStateImpulsRele(0,13,stateN13);
  stateN14 = EEPROM.read(14);ChangeStateImpulsRele(0,14,stateN14);
  stateN15 = EEPROM.read(15);ChangeStateImpulsRele(0,15,stateN15);
  stateN16 = EEPROM.read(16);ChangeStateImpulsRele(0,16,stateN16);
}



void loop() {
  //Наш адрес 0x0C4

  // Слушаем CAN
  if (mcp2515.readMessage(&canMsg) == MCP2515::ERROR_OK) {
    
    if (canMsg.can_id == 0x0C3){
//      Serial.print("Пришло смс с главной платы: ");
//      PrintCanData();
      //Получили комманду:
      if (canMsg.data[0] == 4){//Адресованно плате реле16
        if (canMsg.data[1] == 1){//Комманда для включения реле
          NRele = canMsg.data[2];
          //ChangeStateImpulsRele(AddresMCP,PinMCP,on/off)
          switch (NRele)
          {
            case 1: ChangeStateImpulsRele(0,NRele,1); break;
            case 2: ChangeStateImpulsRele(0,NRele,1); break;
            case 3: ChangeStateImpulsRele(0,NRele,1); break;
            case 4: ChangeStateImpulsRele(0,NRele,1); break;
            case 5: ChangeStateImpulsRele(0,NRele,1); break;
            case 6: ChangeStateImpulsRele(0,NRele,1); break;
            case 7: ChangeStateImpulsRele(0,NRele,1); break;
            case 8: ChangeStateImpulsRele(0,NRele,1); break;
            case 9: ChangeStateImpulsRele(0,NRele,1); break;
            case 10: ChangeStateImpulsRele(0,NRele,1); break;
            case 11: ChangeStateImpulsRele(0,NRele,1); break;
            case 12: ChangeStateImpulsRele(0,NRele,1); break;
            case 13: ChangeStateImpulsRele(0,NRele,1); break;
            case 14: ChangeStateImpulsRele(0,NRele,1); break;
            case 15: ChangeStateImpulsRele(0,NRele,1); break;
            case 16: ChangeStateImpulsRele(0,NRele,1); break;
            NRele = 0;
          }
          goto exit1;
        }
        if (canMsg.data[1] == 2){//Комманда для выключения реле
          NRele = canMsg.data[2];
          //ChangeStateImpulsRele(AddresMCP,PinMCP,on/off)
          switch (NRele)
          {
            case 1: ChangeStateImpulsRele(0,NRele,0); break;
            case 2: ChangeStateImpulsRele(0,NRele,0); break;
            case 3: ChangeStateImpulsRele(0,NRele,0); break;
            case 4: ChangeStateImpulsRele(0,NRele,0); break;
            case 5: ChangeStateImpulsRele(0,NRele,0); break;
            case 6: ChangeStateImpulsRele(0,NRele,0); break;
            case 7: ChangeStateImpulsRele(0,NRele,0); break;
            case 8: ChangeStateImpulsRele(0,NRele,0); break;
            case 9: ChangeStateImpulsRele(0,NRele,0); break;
            case 10: ChangeStateImpulsRele(0,NRele,0); break;
            case 11: ChangeStateImpulsRele(0,NRele,0); break;
            case 12: ChangeStateImpulsRele(0,NRele,0); break;
            case 13: ChangeStateImpulsRele(0,NRele,0); break;
            case 14: ChangeStateImpulsRele(0,NRele,0); break;
            case 15: ChangeStateImpulsRele(0,NRele,0); break;
            case 16: ChangeStateImpulsRele(0,NRele,0); break;
            NRele = 0;
          }
          goto exit1;
        }
        if (canMsg.data[1] == 3){//Комманда для выключения всех реле
          for (int j=0;j<=16;j++){
//            mcp.begin(0);
            mcp.pinMode(j, OUTPUT);
            mcp.digitalWrite(j, HIGH);
            EEPROM.write((j+1),0);
//            delay(100);// обязательная задержка
          }
          goto exit1;
        }
        if (canMsg.data[1] == 4){//Комманда для включения всех реле
          for (int j=0;j<=16;j++){
//            mcp.begin(0);
            mcp.pinMode(j, OUTPUT);
            mcp.digitalWrite(j, LOW);
            EEPROM.write((j+1),1);
//            delay(100);// обязательная задержка
          }
        }
        exit1:
        //Пришла комманда "Ты Тут?", для отправки обратно
        if (canMsg.data[1] == 9){
          //Начало сообщения
          canMsg.can_id  = 0x0C4;  //Номер отправляемого устройства
          canMsg.can_dlc = 0x2;    //Кол-во данных
          canMsg.data[0] = 9;      //Говорим, что это состояние системы
          canMsg.data[1] = 1;      //Я ТУТ!
          //Отправляем подготовленное сообщение
          SendCan(canMsg);
        }
      }
      
    }
  }
    // Отправка состояния системы на связи
  currentMillisStatus = millis();
  if(currentMillisStatus - previousMillisStatus > IntervalStatus) {
    previousMillisStatus = currentMillisStatus;
    //Начало сообщения
    canMsg.can_id  = 0x0C4;  //Номер отправляемого устройства
    canMsg.can_dlc = 0x2;    //Кол-во данных
    canMsg.data[0] = 9;      //Говорим, что это состояние системы
    canMsg.data[1] = 1;      //Я ТУТ!
    //Отправляем подготовленное сообщение
    SendCan(canMsg);
  }
}
void ChangeStateImpulsRele(int MCPBegin, int MCPPin, int state){
//    mcp.begin(MCPBegin);
    mcp.pinMode((MCPPin-1), OUTPUT);
    if (state == 0){
      mcp.digitalWrite((MCPPin-1), HIGH);
      EEPROM.write(MCPPin,state);
      PodgotovkaSendCan(MCPPin,state);
//      delay(100);
    }
    if (state == 1){
      mcp.digitalWrite((MCPPin-1), LOW);
      EEPROM.write(MCPPin,state);
      PodgotovkaSendCan(MCPPin,state);
//      delay(100);
    }
}
          
void PodgotovkaSendCan(int Nrele, int StateRele){
  canMsg.can_id  = 0x0C4;  //Номер отправляемого устройства
  canMsg.can_dlc = 0x3;    //Кол-во данных
  canMsg.data[0] = 1;      //Говорим, что это состояние реле
  canMsg.data[1] = Nrele;      //номер реле
  canMsg.data[2] = StateRele;      //состояние реле
  //Отправляем подготовленное сообщение
  SendCan(canMsg);
}

void SendCan(struct can_frame canMsg){
  mcp2515.sendMessage(&canMsg);
//  Serial.print("Отправка: ");
//  PrintCanData();
  delay(23);
}

//void PrintCanData(){
//  Serial.print(canMsg.can_id, HEX); // print ID
//  Serial.print(" "); 
//  Serial.print(canMsg.can_dlc, HEX); // print DLC
//  Serial.print(" ");
//  for (int i = 0; i<canMsg.can_dlc; i++)  {  // print the data
//    Serial.print(canMsg.data[i],HEX);
//    Serial.print(" ");
//  }
//  Serial.println();
//}

 

Александр89
Offline
Зарегистрирован: 29.03.2018

доброе утро, спасибо. А что залито в плате индикации и плате управления импульсами

Александр89
Offline
Зарегистрирован: 29.03.2018

сколько у вас таких бутербродов? завязаны они, как я понял через can шину. А с пасбери как работают?

stambylov
stambylov аватар
Offline
Зарегистрирован: 10.05.2012

Александр89 пишет:

доброе утро, спасибо. А что залито в плате индикации и плате управления импульсами

Большой код, обрезал чутка

/*ПЛАТА индикаций 96шт
 * Загружена прошивка 15.10.19
 * Адрес Индикационной платы 0x0C2
 */
 
#include <SoftwareSerial.h>
#include <EEPROM.h>
#include <SPI.h>
#include <mcp2515.h>
#include <Wire.h> // Wire.h
#include "Adafruit_MCP23017.h"

-----------------
Куча переменных
----------------

void setup() {
//  Serial.begin(9600);  // Сериал для PC
//  Serial.println("Arduino Start, CAN Start");
  
  SPI.begin();
  mcp2515.reset();
  mcp2515.setBitrate(CAN_125KBPS);
  mcp2515.setNormalMode();
//  Serial.println("Start");
}

void loop() {
  StatusIndication();
  //Адрес Малинки 0x0A0
  //Адрес главной платы с GSM 0x0C3
  //Адрес Индикационной платы 0x0C2
  //Адрес Платы управления 16 реле 0x0C4
  //Адрес платы управелния 95 реле 0х0С5
  //Наш адрес 0x0C2

  //Формат:
    //ID устройства- ID нашего устройства
    //DLC количество данных в сообщении
    //Сообщение

    
  // Слушаем CAN
  if (mcp2515.readMessage(&canMsg) == MCP2515::ERROR_OK) {
    
    if (canMsg.can_id == 0x0C3){
//      Serial.print("Пришло смс с Малинки: ");
//      PrintCanData();
      //Получили комманду:
      if (canMsg.data[0] == 2){//Адресованно плате индикации
        if (canMsg.data[1] == 1){
          //НАПИСАТЬ функцию
        }
        if (canMsg.data[1] == 2){
          //НАПИСАТЬ функцию 
        }
        if (canMsg.data[1] == 9){
          //Начало сообщения
          canMsg.can_id  = 0x0C2;  //Номер отправляемого устройства
          canMsg.can_dlc = 0x2;    //Кол-во данных
          canMsg.data[0] = 9;      //Говорим, что это состояние системы
          canMsg.data[1] = 1;      //ПРосто 1
          //Отправляем подготовленное сообщение
          SendCan(canMsg);
        }
      }
      
    }
  }
     // Отправка состояния системы на связи
  currentMillisStatus = millis();
  if(currentMillisStatus - previousMillisStatus > IntervalStatus) {
    previousMillisStatus = currentMillisStatus;
    //Начало сообщения
    canMsg.can_id  = 0x0C2;  //Номер отправляемого устройства
    canMsg.can_dlc = 0x2;    //Кол-во данных
    canMsg.data[0] = 9;      //Говорим, что это состояние системы
    canMsg.data[1] = 1;      //ПРосто 1
    //Отправляем подготовленное сообщение
    SendCan(canMsg);
  }

}//end loop

void PodgotovkaSendCanDataStatusIndication(int d1, int d2){
  //Начало сообщения
  canMsg.can_id  = 0x0C2;  //Номер отправляемого устройства, т.е. это устройство
  canMsg.can_dlc = 0x3;    //Кол-во данных
  canMsg.data[0] = 1;      //Говорим, что 1 -это состояние индикации
  canMsg.data[1] = d1; // Номер индикации
  canMsg.data[2] = d2; // Состояние индикации
  SendCan(canMsg);//Отправляем подготовленное сообщение
}

void SendCan(struct can_frame canMsg){
  mcp2515.sendMessage(&canMsg);
//  Serial.print("Отправка: ");
//  PrintCanData();
  delay(20);
}

void StatusIndication(){
  //Слушаем модуль №0
  mcp.begin(0);      // use default address 0
//Состояние индикации №1
  StateInd = mcp.digitalRead(8);//address=0, A0-#1
  NumInd = 1;                   //Номер индикации
  if (StateInd == 1 && flagInd1 == 0){
    PodgotovkaSendCanDataStatusIndication(NumInd, StateInd);//Подготовка к отправке
    flagInd1 = 1;
  }else if (StateInd == 0 && flagInd1 == 1){
    PodgotovkaSendCanDataStatusIndication(NumInd, StateInd);//Подготовка к отправке
    flagInd1 = 0;
  }
//Состояние индикации №2
  StateInd = mcp.digitalRead(9);//address=0, A1-#2
  NumInd = 2;                   //Номер индикации
  if (StateInd == 1 && flagInd2 == 0){
    PodgotovkaSendCanDataStatusIndication(NumInd, StateInd);//Подготовка к отправке
    flagInd2 = 1;
  }else if (StateInd == 0 && flagInd2 == 1){
    PodgotovkaSendCanDataStatusIndication(NumInd, StateInd);//Подготовка к отправке
    flagInd2 = 0;
  }
  --------------
  И так делее
}

И для платы управления:

/*ПЛАТА управлений 96шт
 * Загружена прошивка  
 * Адрес Управленческой платы 0x0C5
 */
 #include "Arduino.h"
#include <SoftwareSerial.h>
#include <EEPROM.h>
#include <SPI.h>
#include <mcp2515.h>
#include <Wire.h> // Wire.h
#include "Adafruit_MCP23017.h"

-----------
куча переменных
-----------
void setup() {
//  Serial.begin(9600);  // Сериал для PC
//  Serial.println("Arduino Start, CAN Start");
//  ClearAddresDataEEPROM(); //Очистка памяти
  SPI.begin();
  mcp2515.reset();
  mcp2515.setBitrate(CAN_125KBPS);
  mcp2515.setNormalMode();
  delayImpuls = EEPROM.read(10);
//  Serial.print("Задержка:");
//  Serial.println(delayImpuls);
}

void loop() {
  //Адрес Малинки 0x0A0
  //Адрес главной платы с GSM 0x0C3
  //Адрес Индикационной платы 0x0C2
  //Адрес Платы управления 16 реле 0x0C4
  //Адрес платы управелния 95 реле 0х0С5
  //Наш адрес 0х0С5

  //Формат:
    //ID устройства- ID нашего устройства
    //DLC количество данных в сообщении
    //Сообщение
  // Слушаем CAN
  if (mcp2515.readMessage(&canMsg) == MCP2515::ERROR_OK) {
    if (canMsg.can_id == 0x0C3){
//      Serial.print("Пришло смс с Малинки: ");
//      PrintCanData();
      //Получили комманду:
      if (canMsg.data[0] == 5){//Адресованно плате упр.96
        if (canMsg.data[1] == 1){//Переключение по одной реле
          NImpulsRele = canMsg.data[2];
//          Serial.print("Переключить реле №: ");
//          Serial.println(NImpulsRele);
          //CMP address; CMP Pin;
          switch (NImpulsRele)
          {
            case 1: ChangeStateImpulsRele(0,8); break;
            case 2: ChangeStateImpulsRele(0,9); break;
            ---------
            
            case 96: ChangeStateImpulsRele(5,7); break;
          }
        }
        if (canMsg.data[1] == 2){//Записываем время задержки для переключения реле
          tempTimeDelayRele = canMsg.data[2];
          EEPROM.write(10,tempTimeDelayRele);
          delayImpuls = EEPROM.read(10);
        }
        if (canMsg.data[1] == 9){//Пришла комманда "Ты Тут?", для отправки обратно
          //Начало сообщения
          canMsg.can_id  = 0x0C5;  //Номер отправляемого устройства
          canMsg.can_dlc = 0x2;    //Кол-во данных
          canMsg.data[0] = 9;      //Говорим, что это состояние системы
          canMsg.data[1] = 1;      //ПРосто 1
          //Отправляем подготовленное сообщение
          SendCan(canMsg);
        }
      }
    }
  }
  // Отправка состояния системы на связи
  currentMillisStatus = millis();
  if(currentMillisStatus - previousMillisStatus > IntervalStatus) {
    previousMillisStatus = currentMillisStatus;
    //Начало сообщения
    canMsg.can_id  = 0x0C5;  //Номер отправляемого устройства
    canMsg.can_dlc = 0x2;    //Кол-во данных
    canMsg.data[0] = 9;      //Говорим, что это состояние системы
    canMsg.data[1] = 1;      //ПРосто 1
    //Отправляем подготовленное сообщение
    SendCan(canMsg);
  }
}


void SendCan(struct can_frame canMsg){
  mcp2515.sendMessage(&canMsg);
//  Serial.print("Отправка: ");
//  PrintCanData();
  delay(20);
}
void ChangeStateImpulsRele(int MCPBegin, int MCPPin){
  mcp.begin(MCPBegin);
  mcp.pinMode(MCPPin, OUTPUT);
  mcp.digitalWrite(MCPPin, HIGH);
  delay(delayImpuls);
  mcp.begin(MCPBegin);
  mcp.pinMode(MCPPin, OUTPUT);
  mcp.digitalWrite(MCPPin, LOW);
}

// Очистка EEPROM
void ClearAddresDataEEPROM(){ 
  for (i=0; i<=100; i++){
    EEPROM.write(i,0);
  }
}

 

stambylov
stambylov аватар
Offline
Зарегистрирован: 10.05.2012

Александр89 пишет:

сколько у вас таких бутербродов? завязаны они, как я понял через can шину. А с пасбери как работают?

Бутерброды:

1. Бутер на 96 индикаций импульсными реле

2. Бутер на 96 управлений импульсными реле

3. Бутер для управления нагрузкой маленькой - 16 реле 220В

4. Бутер для обработки всей информации и управления, а также к нему подключаются все датчики дыма, датчики движения, герконы, датчики протечки, датчики утечки газа, датчики температуры-влажности, информационные входа(наличие питания в доме, с генератора, со стабилизаторов, инфа о БРП12В), вентиляторы и свет в щите, датчики температуры приочной-вытяжной системы вентиляции. модуль MP3, модуль GSM.

5. Raspbarry нужна лишь для красивой оболочки WEB на Ajax, и для информативности об авариях через Telegram.

anshor
anshor аватар
Offline
Зарегистрирован: 21.06.2016

А кто нибудь пробовал в умном доме использовать выключатели livolo?

stambylov
stambylov аватар
Offline
Зарегистрирован: 10.05.2012

anshor пишет:
А кто нибудь пробовал в умном доме использовать выключатели livolo?

Обычные сенсорные выключатели, ничего нового, можно заказать только корпус рублей за 100 и наколхозить уже самим туда сенсор и подключить его к Arduino, но зачем... если вдруг глюкнет чего то, то и свет не включить.

У меня стоят обычные выключатели с пружинкой или можно купить уже готовые кнопочные выключатели.

От них протянуть кабель до щита, в щите поставить импульсное реле и к нему уже подключить светильник, где стоит сам выключатель. Всё таки механика есть механика! А Arduino имеет свойство ломаться как и все электронные приборы. 

AlexArGC
AlexArGC аватар
Offline
Зарегистрирован: 18.11.2016

anshor пишет:
А кто нибудь пробовал в умном доме использовать выключатели livolo?

Да пробовали! Один человека даже LIVOLO library написал https://forum.arduino.cc/index.php?topic=153525.0

Вот здесь активно обсуждали вопросы препарирования и переделки http://we.easyelectronics.ru/Shematech/preparirovanie-sensornogo-vyklyuc...

anshor
anshor аватар
Offline
Зарегистрирован: 21.06.2016

А если использовать выключатель с радио управлением то можно провода не протягивать и сэкономить много пинов.

alex_r61
Offline
Зарегистрирован: 20.06.2012

anshor пишет:
А если использовать выключатель с радио управлением то можно провода не протягивать и сэкономить много пинов.

 Я, у себя в квартире, так и сделал. Приколхозил к импульсным реле отдельный контроллер и теперь могу управлять светом через обычные кнопки, радио выключатели или радио пульты и через RS485 интерфейс. Кнопки поставлю только около щита, на всякий случай. Радио выключатели https://ru.aliexpress.com/item/32890551775.html

bwn
Offline
Зарегистрирован: 25.08.2014

alex_r61 пишет:

Радио выключатели https://ru.aliexpress.com/item/32890551775.html

А что к ним еще нужно? Не умный дом, а зональное освещение хочу по участку, вроде гору провода сэкономить можно?

alex_r61
Offline
Зарегистрирован: 20.06.2012

 Приёмник на ту же частоту, что и выключатель (433 или 315). Лучше супергетеродинный, я такого типа брал https://ru.aliexpress.com/item/32878945000.html

 Антенны я брал отдельно, но бывают и в комплекте. https://ru.aliexpress.com/item/32816097343.html

bwn
Offline
Зарегистрирован: 25.08.2014

Благодарю, почитаю, что за звери и с чем едят.))))

Александр89
Offline
Зарегистрирован: 29.03.2018

добрый день, спасибо за информацию.

У вас есть фото силовой части (электрики) одного из объектов?

stambylov
stambylov аватар
Offline
Зарегистрирован: 10.05.2012

Александр89 пишет:

добрый день, спасибо за информацию.

У вас есть фото силовой части (электрики) одного из объектов?

Фото щита импульсных реле

Александр89
Offline
Зарегистрирован: 29.03.2018

Для индикации состояния света(вкл./выкл.), чтоб отображать текущее состояние(забыл сказать - импульсное реле имеет 2НО выхода, один используется для светильников, второй для индикации на ардуину).

почему не сделали через модуль центрального управления E293/X?

stambylov
stambylov аватар
Offline
Зарегистрирован: 10.05.2012

Александр89 пишет:

Для индикации состояния света(вкл./выкл.), чтоб отображать текущее состояние(забыл сказать - импульсное реле имеет 2НО выхода, один используется для светильников, второй для индикации на ардуину).

почему не сделали через модуль центрального управления E293/X?

1. не зачем использовать модуль

2. Модуль дороже импульсного реле на 2 НО выхода

3. вы наверное не подключали такие импульсные реле

Александр89
Offline
Зарегистрирован: 29.03.2018

Спасибо, да я не работал еще с импульсными реле. хочу сначала в этом разобраться. интересует их подключение с реализацией мастер кнопки 

stambylov
stambylov аватар
Offline
Зарегистрирован: 10.05.2012

Александр89 пишет:

Спасибо, да я не работал еще с импульсными реле. хочу сначала в этом разобраться. интересует их подключение с реализацией мастер кнопки 

Привет, я использовал в проекте вот такие импульсные реле "Реле электромеханическое E290-16-20/24 ABB"

Oleg333
Offline
Зарегистрирован: 18.12.2018

Впечатляет. Масштабный  вы человек, на мелочи не размениваетесь. Или вам зарплату импульсными реле выдают?

stambylov
stambylov аватар
Offline
Зарегистрирован: 10.05.2012

Oleg333 пишет:

Впечатляет. Масштабный  вы человек, на мелочи не размениваетесь. Или вам зарплату импульсными реле выдают?

Есть время и идеи для разработки. ЗП рублями, вам же неверное релюшками выдают.