Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Прошу помочь с кодом Arduino IDE, Esp 8266, UniversalTelegramBot

Артур Пишенин Профи (502), закрыт 2 года назад
Хочу организовать простенькую сигнализацию с оповещением через Telegram на 4 геркона. Проектов таких в интернете не нашел. Задача следующая: Всякий раз когда размыкается или замыкается геркон получать сообщение в телеграм ( дверь№1 – открыта, дверь№1 – закрыта), а также создать команду (включить – выключить систему) На этом всё.
Вот скетч который уже есть и работает, но не выполняет указанных действий. Схему подключения прилагаю. Заранее благодарен.
#include <ESP8266WiFi.h>
#include <UniversalTelegramBot.h>

#define WIFI_SSID "ИМЯ"
#define WIFI_PASSWORD "ПАРОЛЬ"
WiFiClientSecure secured_client;
#define BOT_TOKEN "ТОКЕН"
#define CHAT_ID "ИД ЧАТА"
const unsigned long BOT_MTBS = 3000;
X509List cert(TELEGRAM_CERTIFICATE_ROOT);
UniversalTelegramBot bot(BOT_TOKEN, secured_client);
unsigned long bot_lasttime;
void setup() {
Serial.begin(9600);
configTime(0, 0, " http://pool.ntp.org/ ");
secured_client.setTrustAnchors(&cert);
Serial.print("Connecting to WiFi SSID ");
Serial.print(WIFI_SSID);
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED)
{
Serial.print(".");
delay(300);
}
Serial.print("\nWiFi connected. IP address: ");
Serial.println(WiFi.localIP());

bot.sendMessage(CHAT_ID, "Я в сети", "");
}
void loop() {
}
Лучший ответ
Άηϑρέΰ ҂ Искусственный Интеллект (180094) 3 года назад
1. где переменные для запоминания данных с портов ввода
2. где настройка этих портов
3. где опрос состояния этих портов
4. "но не выполняет указанных действий." каких именно?
Артур ПишенинПрофи (502) 3 года назад
Единственное что мне удалось добиться так это "я в сети" при включении. Насколько я понял, реализовать самостоятельно эту идею с моими знаниями arduino ide - нереально((
Άηϑρέΰ ҂ Искусственный Интеллект (180094) Артур Пишенин, ну для начала, функция setup - происходит у тебя инициализация всего и после запускается функция loop, раз там пусто, то дальше у тебя ничего не происходит , а только крутится впустую.. я бы сделал так: // до функции setup // в переменные будут заносится статус датчика int stateBtn1 = 0; int stateBtn2 = 0; int stateBtn3 = 0; int stateBtn4 = 0; int btnState; // в секции setup // настраиваем порты на вход pinMode(D1, INPUT); pinMode(D2, INPUT); pinMode(D3, INPUT); pinMode(D4, INPUT); // в секции loop /* проверка первого датчика */ btnState = digitalRead(D1); if (btnState!=stateBtn1) { // статус изменился! обновляем stateBtn1 = btnState; // тут можно отправить сообщение что дверь 1 открыта или закрыта } /* такой же код как у первого, с корректировкой */
Артур ПишенинПрофи (502) 3 года назад
#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>
#include <ArduinoJson.h>

// Замените на свои сетевые данные
const char* ssid = "ххххххх";
const char* password = "хххххххххх";

// Инициализация Telegram бота
#define BOTtoken "ххххххххххххххххххххххххххххххххххххххххххххххххххххх" // Ваш Токен


#define CHAT_ID "хххххххх" // ID чата

WiFiClientSecure client;
UniversalTelegramBot bot(BOTtoken, client);

const int motionSensor = D4; // PIR датчик
bool motionDetected = false;

// Индикация обнаружения движения
void ICACHE_RAM_ATTR detectsMovement() {
//Serial.println("Обнаружено движение!!!");
motionDetected = true;
}
Артур ПишенинПрофи (502) 3 года назад
void setup() {
Serial.begin(115200);
client.setInsecure();


pinMode(motionSensor, INPUT_PULLUP); // Внутренняя подтяжка PIR INPUT_PULLUP
attachInterrupt(digitalPinToInterrupt(motionSensor), detectsMovement, RISING); // Внешнее прерывание

// Attempt to connect to Wifi network:
Serial.print("Соединение с Wifi: ");
Serial.println(ssid);

WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}

Serial.println("");
Serial.println("WiFi соединение установлено");
Serial.print("IP адрес: ");
Serial.println(WiFi.localIP());

bot.sendMessage(CHAT_ID, "Бот стартовал", "");
}
Артур ПишенинПрофи (502) 3 года назад
void loop() {
if(motionDetected){
bot.sendMessage(CHAT_ID, "Обнаружено движение!!!", "");
Serial.println("Обнаружено движение");
motionDetected = false;
}
}
Остальные ответы
Похожие вопросы