рдореИрдВрдиреЗ рд╡рд┐рдЬрд┐рдд рдЗрдВрдЯрд░рдХреЙрдо рдХреЛ mqtt рд╕реЗ рдХреИрд╕реЗ рдЬреЛрдбрд╝рд╛

рд╕рднреА рдХреЛ рд╢реБрдн рджрд┐рдиред рдЬрдирд╡рд░реА рдХреЗ рдкрд╣рд▓реЗ, рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ Giktayms рдкрд░ рд▓реЗрдЦ рдХреЛ рдбреИрд╢ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рджреВрд╕рд░реЗ рдЕрдкрд╛рд░реНрдЯрдореЗрдВрдЯ рдореЗрдВ рдЬрд╛рдиреЗ рдХреЗ рд╕рд┐рд▓рд╕рд┐рд▓реЗ рдореЗрдВ рдПрдХ рджрд░рд╡рд╛рдЬреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдРрд╕рд╛ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдерд╛ред рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рджрд░рд╡рд╛рдЬрд╛ рдЪрд▓рд╛рдирд╛ рдФрд░ рдЦреЛрд▓рдирд╛ рдмрд╣реБрдд рдХрд╖реНрдЯрдкреНрд░рдж рдерд╛, рдФрд░ рдЪреВрдВрдХрд┐ рдлреЛрди, рдЯреИрдмрд▓реЗрдЯ, рдХрдВрдкреНрдпреВрдЯрд░ рд╣рдореЗрд╢рд╛ рдкреИрджрд▓ рджреВрд░реА рдХреЗ рднреАрддрд░ рд╣реЛрддреЗ рд╣реИрдВ, рдХреЗрд╡рд▓ рдмрд╛рд╣рд░ рддрдХ рдкрд╣реБрдВрдЪрддреЗ рд╣реИрдВ, рдЗрд╕ рд▓рд╛рдн рдХреЛ рдСрдкрд░реЗрд╢рди рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА iobroker рд╕реНрд╡рдЪрд╛рд▓рди рдкреНрд░рдгрд╛рд▓реА рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдиреАрдЪреЗ рдореИрдВ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рд╣реБрдЖ рдерд╛ред

рдЬреЛ рдореЗрд░реЗ рдкреИрд░реЛрдВ рдХреЗ рдиреАрдЪреЗ рдкрдбрд╝рд╛ рдерд╛, рдЙрд╕рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реЛ рдЧрдпрд╛ рдерд╛ред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдпрд╣ рдкреВрд░реА рдЪреАрдЬ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИред

рдЫрд╡рд┐

рдЪреВрдВрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдЕрджреНрднреБрдд iobroker рд╕реНрд╡рдЪрд╛рд▓рди рдкреНрд░рдгрд╛рд▓реА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдХреЗрдВрджреНрд░реАрдХреГрдд рдкреНрд░рдмрдВрдзрди рдФрд░ рдПрдХрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ред рдпрд╣ рдЪреБрдирдиреЗ рдХрд╛ рд╕рдордп рд╣реИ рдХрд┐ рд▓реЛрд╣реЗ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдгрд╛рд▓реА рдХреИрд╕реЗ рд╕рдВрд╡рд╛рдж рдХрд░рддреЗ рд╣реИрдВред рдореЗрд░реЗ рдкрд╛рд╕ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 1рд╡рд╛рдпрд░ рдХреЗ рдЕрдиреБрдХрд░рдг рд╕реЗ рдПрдХреНрд╕рдЪреЗрдВрдЬ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдореЗрд░реЗ рдкрд╛рд╕ рдирд╣реАрдВ рдерд╛, рдирддреАрдЬрддрди, mqtt рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╕реНрдерд┐рддрд┐ рдХреА рдореЗрд░реА рджреГрд╖реНрдЯрд┐ рдореЗрдВ рд╕рдмрд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреАрддрд╛, рдФрд░ рд▓реЛрд╣реЗ рдФрд░ iobroker рдХреЗ рдЯреБрдХрдбрд╝реЗ рдХреЗ рдмреАрдЪ рд╡рд┐рдирд┐рдордп рдЗрд╕рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдЯреИрдмрд▓реЗрдЯ рдкрд░, рдпрд╣ рдореМрдЬреВрджрд╛ рдХреИрдорд░реЗ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдФрд░

рдЫрд╡рд┐

рд▓реЛрд╣реЗ рдХреЗ рдкрд╣рд▓реЗ рднрд╛рдЧ рдХреЗ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд╕рд╛рде рдПрдХ рдЯреИрдм рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ ред рдЗрд╕рдореЗрдВ arduino uno, рдИрдерд░рдиреЗрдЯ рдИрдерд░рдиреЗрдЯ рдФрд░ рдЗрдВрдЯрд░рдХреЙрдо рд▓рд╛рдЗрди рдХреЗ рд╕рд╛рде рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдорд┐рд▓рд╛рди рд╕рд░реНрдХрд┐рдЯ рд╣реЛрддрд╛ рд╣реИред рдпреЛрдЬрдирд╛ рд╣реА:

рдЫрд╡рд┐

рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ, рдЗрдирдХрдорд┐рдВрдЧ рдХреЙрд▓ рдХреЛ рдСрдкреНрдЯреЛрдХреЙрдкрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдореЙрдирд┐рдЯрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд░рд╕реАрдж рдкрд░ рдпрд╣ рдХреЗрд╡рд▓ рдЖрд░реНрдбрд┐рдиреЛ рдХреЗ рд╢реВрдиреНрдп рдкреИрд░ рдХреЛ рджрдмрд╛рддрд╛ рд╣реИред рджрд░рд╡рд╛рдЬрд╛ рдЦреЛрд▓рдиреЗ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд░рд┐рд▓реЗ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╣ рд╣рдореЗрд╢рд╛ рдмрдВрдж рд░рд╣рддрд╛ рд╣реИ, рдЬрдм рдПрдХ рдЖрджреЗрд╢ iobroker рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ (рд╡реЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдПрдХ рдмрдЯрди рджрдмрд╛рддреЗ рд╣реИрдВ, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕реНрдерд┐рддрд┐ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдПрдХ рддрд╛рд░ рд╕реЗ рдПрдХ рдХрдорд╛рдВрдб рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖ рдерд╛ред рдпрд╣ 7.5 рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрди рдХреЛ рддреЛрдбрд╝рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ vizit рдЗрд╕реЗ рдЦреЛрд▓рдиреЗ рдФрд░ рдЕрддрд┐рдерд┐ рдХреЛ рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдорд╛рдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрддрд╛ рд╣реИред ред

рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдСрдкреНрдЯреЛрдХреЙрдкреНрд▓рд░ рд╡реЙрдп 2, рдбреЛрд░рдлреЛрди рдХреИрдорд░реЗ рд╕реЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдЯреАрд╡реА рдХреЛ рдПрд╡реА рдореЛрдб рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред

рджреВрд╕рд░рд╛ рднрд╛рдЧ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╣реИ, рдЬреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рджреЛ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИред рдкрд╣рд▓рд╛ рдПрдХ рд╕реНрдХреЗрдЪ рд╣реИ рдЬрд┐рд╕реЗ рдЖрд░реНрджреАрдиреЛ рдореЗрдВ рдлреНрд▓реИрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ iobroker рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде mqtt рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рд╣реЛрддрд╛ рд╣реИред

#include <SPI.h>
#include <Ethernet.h>
#include <PubSubClient.h>

int flag = 0;

#define ring1_pin 0  //   1
#define open1_pin 2  //  1
#define open2_pin 3  //  2
#define mon1_pin 5  //   

#define ID_CONNECT "DoorbellControll"

byte mac[]    = { 0xDE, 0xED, 0xBA, 0xFE, 0xFE, 0xED };
byte server[] = { 192, 168, 55, 170 };
byte ip[]     = { 192, 168, 55, 40 };

EthernetClient ethClient;
PubSubClient client(server, 1883, callback, ethClient);

void callback(char* topic, byte* payload, unsigned int length) {
  payload[length] = '\0';
  String strTopic = String(topic);
  String strPayload = String((char*)payload);

  if (strTopic == "myhome/DoorbellControll/open1") {
    if (strPayload == "false") {
      digitalWrite(2, HIGH);
    }
    else if (strPayload == "true") {
      digitalWrite(2, LOW);
    }
  }
  else if (strTopic == "myhome/DoorbellControll/open2") {
    if (strPayload == "false") digitalWrite(3, LOW);
    else if (strPayload == "true") digitalWrite(3, HIGH);
  }
  else if (strTopic == "myhome/DoorbellControll/mon1") {
    if (strPayload == "false") digitalWrite(5, LOW);
    else if (strPayload == "true") digitalWrite(5, HIGH);
  }
}


void reconnect() {
  while (!client.connected()) {
    if (client.connect(ID_CONNECT)) {
      client.subscribe("myhome/DoorbellControll/#");
    } else {
      delay(5000);
    }
  }
}

void setup() {

  pinMode(ring1_pin, INPUT);

  pinMode(open1_pin, OUTPUT);
  digitalWrite(open1_pin, HIGH);

  pinMode(open2_pin, OUTPUT);
  digitalWrite(open2_pin, LOW);

  pinMode(mon1_pin, OUTPUT);
  digitalWrite(mon1_pin, LOW);


  Ethernet.begin(mac, ip);
  if (client.connect("DoorbellControll")) {
    client.publish("myhome/DoorbellControll/open1", "false");
    client.publish("myhome/DoorbellControll/open2", "false");
    client.publish("myhome/DoorbellControll/mon1", "false");
    client.publish("myhome/DoorbellControll/ring1", "false");
    client.subscribe("myhome/DoorbellControll/#");
  }
}
void loop() {
  client.loop();
  //   
  if (digitalRead(ring1_pin) == LOW && flag == 0) {
    client.publish("myhome/DoorbellControll/ring1", "true");
    flag = 1;//   flag  
  }
  else if (digitalRead(ring1_pin) == HIGH && flag == 1) {
    client.publish("myhome/DoorbellControll/ring1", "false");
    flag = 0; //  flag
  }
  if (!client.connected()) {
    reconnect();
    client.subscribe("myhome/DoorbellControll/#");

  }
}

рдФрд░ рджреВрд╕рд░рд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рд╣рднрд╛рдЧрд┐рддрд╛ рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ js рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ:

//************       ********************
createState('doorbellcontroll.rings', 'false');
createState('doorbellcontroll.visopen', 'false');    //   vis


on("mqtt.0.myhome.DoorbellControll.ring1", function (obj){
    if  (obj.newState.val == "true" || obj.newState.val === true) {
        setState('javascript.0.doorbellcontroll.rings', true);
    setTimeout(function() {
    }, 60000);
    }
});

//********      ,        ****************
on("javascript.0.doorbellcontroll.rings", function (obj){
    if  (obj.newState.val == "true" || obj.newState.val === true) {
        setState('sayit.0.tts.text', '  ');       //    
        sendTo('telegram.0', '  ');               //   
        setState('mqtt.0.myhome.DoorbellControll.mon1', true);  //    
        setState("vis.0.control.command", '{"instance": "FFFFFFFF", "command": "changeView", "data": "Camers"}');   //    ""
//***********  30      ********************
    setTimeout(function () {
        setState('mqtt.0.myhome.DoorbellControll.mon1', false); //               
        setState("vis.0.control.command", '{"instance": "FFFFFFFF", "command": "changeView", "data": "StartView"}');    //    "Home"
        setState('javascript.0.doorbellcontroll.rings', false);
    }, 30000);
    }
});

//*******************   ""  Vis**************
on("javascript.0.doorbellcontroll.visopen", function (obj){
    if  (obj.newState.val == "true" || obj.newState.val === true) {
        setState('mqtt.0.myhome.DoorbellControll.open1', true);     //    
        toLog('   . ', true, 'orange');     	//  
    
    setTimeout(function () {
        setState('mqtt.0.myhome.DoorbellControll.open1', false);    
        setState('javascript.0.doorbellcontroll.visopen', false);    //   
    }, 7500);    

    }       
});

Iobroker рдкреНрд░рдгрд╛рд▓реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рдЖрдк рдХрд┐рд╕ рддрд░рд╣ рд╕реЗ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЫрд╡рд┐

рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рдХрдерд╛ рдЕрдкрдиреЗ рдирд┐рдпрдорд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рдирд┐рд╖реНрдХрд░реНрд╖ рддрдХ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд▓рд╕реНрдп рд▓рд╛рддреА рд╣реИ ред

Source: https://habr.com/ru/post/hi400399/


All Articles