• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

esp8266 и home assistant поясните чайнику

Soyer

Member
Привет всем! Вопрос в чем, есть esp"ишка, и есть умный выключатель tuya, на esp залит скетч по управлению двумя светодиодными лентами. одна лента должна включаться когда включен выключатель tuya, другая когда включен телевизор (HA нашел телевизор, есть возможность создать автоматизацию), вроде все просто, но, как привязать ESP? В сетевых технологиях вообще чайник, с трудом понимаю как и что делать, ардуину легко осилю, скетч напишу, а c esp сел в лужу. Подскажите, как быть в моем случае, куда копать? Слышал про EspHome, но так понимаю, что она сама создает прошивку, но тогда я теряю свою, короче, вообще ничего не пойму, помогите, пожалуйста!
 

pvvx

Активный участник сообщества
В EspHome наверняка есть включатель - управление выводами GPIO. Исходники для модификации EspHome тоже дает.
К нему и прикручивайте сценарий в HA.
 

pvvx

Активный участник сообщества
 

pvvx

Активный участник сообщества
Всегда есть другие способы. К примеру:
1. Разрабатываете свои физику, математику, электронику и прочие науки.
2. Строите школы и обучаете персонал
3. Разрабатываете свою индустрию и планы работ
4. Строите фабрики, заводы и пароходы
5. Создаете свою Опереционную Систему
6. Создаете свои электронные чипы
7. Пишите к своей ОС что-то подобное HA
8. Подключаете ESP со "скетчем" к итоговой системе...

Наверняка многое упустил, но "и так сойдет".
 

pvvx

Активный участник сообщества
может есть какие-то другие способы?
Каков вопрос – таков и ответ.

Но тут даже ИИ не требуется, чтобы проанализировать и понять, что хочет очередной “потребитель”. Использование “скеч”, “чайники” уже гласит о замкнутости в кругозоре и предоставлению индивидуумом решений выбора за него другим (как ему жить). Т.е. границы развития и рамки, и все последующие пути индивидуума им уже указаны. А тот виртуальный мир предусматривает только одно решение – платный заказ разработки.

Скорее всего вам в другую тему форума ->
Предложения о выполнении проектов на заказ
 

pvvx

Активный участник сообщества
Если избавиться от слов типа "скетч", то проще всего для ESP наляпать прошивку с Tuya. Будет работать и во всех ПО для Tuya. Но это не для "чайников" - надо использовать поиск в google, найти подходящие исходники и исправить под свои нужды.
А для "чайников" сделан EspHome.
 
Mqtt сенсор 3 строчки. Какую ещё интеграцию?
YAML:
# Example configuration.yaml entry

mqtt:

  sensor:

    - state_topic: "home/bedroom/temperature"
От этого сенсора уже автоматизацию какую надо.
Это читать, публиковать ещё проще - прям в автоматизации если "что-то произошло", публикуем в топик такой-то, такое-то значение. На есп следить за этим топиком, по значению что-то делать. Куда ещё проще?
 

pvvx

Активный участник сообщества
Mqtt сенсор 3 строчки. Какую ещё интеграцию?
Это вы будете сами разжевывать и писать ТС.
И опять молиться чтоб интернет не пропал))
Давно есть LocalTuya.
А так-же есть и Mijia исходники, для MiHome (BLE), которые можно запихать в ESP32. И для них есть готовые и поддерживаемые интеграции работающие локально и + оф. ПО.
Это читать, публиковать ещё проще - прям в автоматизации если "что-то произошло", публикуем в топик такой-то, такое-то значение. На есп следить за этим топиком, по значению что-то делать. Куда ещё проще?
Это называется "тяп-ляп" или "и так сойдет", как и всё, если используется слово "скетч". Т.е. для "вечернего блога" или игры в "тамогочи", а не для надежной работы "Умного дома".

И главный вопрос - а что в вашем предложении имеет отличия от ESPHome?
Там уже "скетч" готов, MQTT привязано, менюшки в HA налеплены, ... делать и лепить меньше.
 
Это вы будете сами разжевывать и писать ТС.
Что там разжёвывать, эти три строчки уже написаны выше))
А так-же есть и Mijia исходники, для MiHome (BLE), которые можно запихать в ESP32. И для них есть готовые и поддерживаемые интеграции работающие локально и + оф. ПО.
Ага особенно учитывая цитату автора - "В сетевых технологиях вообще чайник, с трудом понимаю как и что делать"
Это называется "тяп-ляп" или "и так сойдет", как и всё, если используется слово "скетч". Т.е. для "вечернего блога" или игры в "тамогочи", а не для надежной работы "Умного дома".
Ну почему тяп ляп то? Что такого ненадёжного в mqtt? Ну просто же.
И главный вопрос - а что в вашем предложении имеет отличия от ESPHome?
Он же вам написал есть у него скетч готовый который управляет лентой и задал вопрос "что добавить". Он же не спросил "что мне поизучать пару лет чтобы запихать ваши исходники mijja куда-то там"? Это вам проще и надёжнее наверное с вашим багажом знаний, а простым смертным быстрее и проще добавить туда 3 строчки и сюда 5 строчек, и работать это будет в данном случае точно такое же.
 

Soyer

Member
В общем выбрал MQTT, тем более в HA он интегрируется, но, столкнулся с такой проблемой: после соединения c сервером и подписке на топик esp сразу не получает значение его, только если устройство (выключатель) не выключить и включить (и наоборот), только тогда брокер шлет значение топика. Как побороть эту проблему?:

#include <ESP8266WiFi.h>
const char* wifi_ssid = "***";
const char* wifi_pass = "***";
#define led LED_BUILTIN

#include <PubSubClient.h>
#define mqtt_server "192.168.0.27"
#define mqtt_port 1883
#define mqtt_login "mqtt_user"
#define mqtt_pass "mqtt_user"

// MQTT топик
#define LED_TOPIC "home/living_room/TV_on" /* 1=on, 0=off */
//**********Функция обработки входящих сообщений******
void callback(char* topic, byte* payload, unsigned int length) {
// Печать информации о полученном сообщений
Serial.print("Message arrived [");
Serial.print(topic);
Serial.print("] ");
for (int i = 0; i < length; i++) {
Serial.print((char)payload);
}
Serial.println();

if (strcmp(topic, LED_TOPIC) == 0) {
// Определяем поведение MCU при различных значениях сообщения (payload)
if ((char)payload[0] == '0') {
digitalWrite(led, HIGH); // led имеет подтягивающий резистор, HIGH = OFF, LOW = ON
}
if ((char)payload[0] == '1') {
digitalWrite(led, LOW);
}
}
}
//*********************************************
void setup_wifi();
void reconnect();

void setup() {
Serial.begin(115200);
pinMode(led, OUTPUT); // Установка led как порт вывода
digitalWrite(led, HIGH); // led имеет подтягивающий резистор, HIGH = OFF, LOW = ON

delay(10);
WiFi.begin(wifi_ssid, wifi_pass);
setup_wifi();
client.setServer(mqtt_server, mqtt_port);
client.setCallback(callback);
}

void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();
}

void setup_wifi() {
Serial.println();
Serial.print(F("Connecting"));
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.println(F("."));
WiFi.printDiag(Serial);
}
randomSeed(micros());
Serial.println("");
Serial.println(F("WiFi connected"));
Serial.println(F("IP address: "));
Serial.println(WiFi.localIP());
}

// Функция установления подключения к MQTT брокеру
void reconnect() {
while (!client.connected()) {
Serial.println(F("Attempting MQTT connection..."));
Serial.print(F("Client ID:"));
Serial.print(clientId);
Serial.print(F(" "));
Serial.print(mqtt_login);
Serial.print(F(" "));
Serial.print(mqtt_pass);
Serial.print(F(" "));
if (client.connect(clientId.c_str(), mqtt_login, mqtt_pass)) {
Serial.println(F("connected"));
// Подписка на сообщения в топике
client.subscribe(LED_TOPIC,1);
} else {
Serial.print(F("failed, rc="));
Serial.print(client.state());
Serial.println(F("try again in 5 seconds"));
delay(5000);
}
}
}
 

Soyer

Member
Копать в сторону mqtt
НА должен публиковать сообщения по нужным вам событиям, на ЕСП читать эти сообщения и соответственно делать что надо.
так и сделал, но столкнулся с проблемой (описана выше), склоняюсь что дело в настройке брокера (шлет значение топика только после обновления).
 

aZholtikov

Active member
так и сделал, но столкнулся с проблемой (описана выше), склоняюсь что дело в настройке брокера (шлет значение топика только после обновления).
На стороне публикатора в этот топик должен ставиться флаг Retain при публикации. Проверьте.
 
Сверху Снизу