рд╕рднреА рдХреЛ рд╢реБрдн рджрд┐рдиред рдЬрдирд╡рд░реА рдХреЗ рдкрд╣рд▓реЗ, рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ 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
#define open1_pin 2
#define open2_pin 3
#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;
}
else if (digitalRead(ring1_pin) == HIGH && flag == 1) {
client.publish("myhome/DoorbellControll/ring1", "false");
flag = 0;
}
if (!client.connected()) {
reconnect();
client.subscribe("myhome/DoorbellControll/#");
}
}
рдФрд░ рджреВрд╕рд░рд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рд╣рднрд╛рдЧрд┐рддрд╛ рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ js рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ:
createState('doorbellcontroll.rings', 'false');
createState('doorbellcontroll.visopen', 'false');
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"}');
setTimeout(function () {
setState('mqtt.0.myhome.DoorbellControll.mon1', false);
setState("vis.0.control.command", '{"instance": "FFFFFFFF", "command": "changeView", "data": "StartView"}');
setState('javascript.0.doorbellcontroll.rings', false);
}, 30000);
}
});
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 рдкреНрд░рдгрд╛рд▓реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рдЖрдк рдХрд┐рд╕ рддрд░рд╣ рд╕реЗ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рдХрдерд╛ рдЕрдкрдиреЗ рдирд┐рдпрдорд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рдирд┐рд╖реНрдХрд░реНрд╖ рддрдХ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд▓рд╕реНрдп рд▓рд╛рддреА рд╣реИ ред