Странно. С чего бы это удивляло? Нашли чему удивляться.
Я провел простой тесь с ИИ. Попросил написать программу для устройства своего умного дома. Он честно залез на данный форум и дернул исходник, который я публиковал. С моими коментами. А разобраться в коде не смог и понес чушь из api телеграм. Не умеет он писать программы. Он умеет выдергивать похожие куски из исходников - не более.
Дак это не он не умеет писать программы, как мне видицца.
Странный вообще подход. Выглядит как:
“Молоток, сделай мне табуретку”
ИИ это инструмент всё же.
Вы не оригинальны. Уже обсуждалось.
напиши программу реле для умного дома 4duk
Для создания программы управления 4-канальным реле (4DUK/Smart Aura) для умного дома, использующего платформу Tuya/Smart Life (наиболее вероятно для таких устройств), можно использовать платформу Arduino IDE (для самодельных устройств на ESP8266/ESP32) или просто настроить устройство через приложение, если это готовый Wi-Fi модуль. [1, 2]
Ниже приведен пример программы на языке C++ (Arduino IDE) для ESP8266, которая управляет 4 реле через Wi-Fi с использованием MQTT (для интеграции в умный дом типа Home Assistant) или простым HTTP-сервером.
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
// Настройки Wi-Fi
const char* ssid = "YOUR_WIFI_SSID";
const char* password = "YOUR_WIFI_PASSWORD";
// Пины, к которым подключены реле (настройте под свою плату)
const int relay1 = 12; // D6
const int relay2 = 13; // D7
const int relay3 = 14; // D5
const int relay4 = 15; // D8 (или GPIO16)
ESP8266WebServer server(80);
void handleRoot() {
String html = "<h1>4DUK Relay Control</h1>";
html += "<p><a href=\"/r1/on\"><button>Relay 1 ON</button></a> <a href=\"/r1/off\"><button>Relay 1 OFF</button></a></p>";
html += "<p><a href=\"/r2/on\"><button>Relay 2 ON</button></a> <a href=\"/r2/off\"><button>Relay 2 OFF</button></a></p>";
html += "<p><a href=\"/r3/on\"><button>Relay 3 ON</button></a> <a href=\"/r3/off\"><button>Relay 3 OFF</button></a></p>";
html += "<p><a href=\"/r4/on\"><button>Relay 4 ON</button></a> <a href=\"/r4/off\"><button>Relay 4 OFF</button></a></p>";
server.send(200, "text/html", html);
}
void setup() {
Serial.begin(115200);
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
pinMode(relay3, OUTPUT);
pinMode(relay4, OUTPUT);
// Изначально все реле выключены (логика может быть инвертирована LOW/HIGH)
digitalWrite(relay1, HIGH);
digitalWrite(relay2, HIGH);
digitalWrite(relay3, HIGH);
digitalWrite(relay4, HIGH);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println(WiFi.localIP());
server.on("/", handleRoot);
// Настройка обработчиков URL
server.on("/r1/on", [](){ digitalWrite(relay1, LOW); server.send(200, "text/html", "R1 ON"); });
server.on("/r1/off", [](){ digitalWrite(relay1, HIGH); server.send(200, "text/html", "R1 OFF"); });
server.on("/r2/on", [](){ digitalWrite(relay2, LOW); server.send(200, "text/html", "R2 ON"); });
server.on("/r2/off", [](){ digitalWrite(relay2, HIGH); server.send(200, "text/html", "R2 OFF"); });
// ... добавить для r3, r4
server.begin();
}
void loop() {
server.handleClient();
}
Даже намека на использование API нет.
Он даже не анализирует исходники.
А это шедевр! Причем про API есть даже описание.
У меня вопрос сразу
ты где-нить видел у микроконтроллеров пин с номером, допустим -32600? А константы, между прочим, хранятся в сегменте инициализированных данных.
Ну, так я же там говорил очевидную истину, что
Вы этого не поняли? Тогда беда ![]()
Нет. Но может он где то прибавляет лишнее, чтобы получился правильный пин?
а constexpr uint8_t PIN_LED_BIULTIN = 13 не хранится нигде, кроме текста программы и не требует никаких преобразований.
Ну а если это твоё
то это не он не умеет писать программы, как я и говорил
Нет.
Протокол связи простой - это пакет UDP по broadcast адресу на порт 9009 в виде -
device:devname: action:actionname: value:val.
Devname - имя устройства,
actionname - команда,
val - значение.
В нашем случае мы не выясняем IP адрес устройства, чтобы максимально сократить трафик на выяснение его и добавляем возможность делать дублирующие устройства с одним именем и функционалом.
В свою очередь устройства могут отвечать состоянием в виде аналогичного пакета
devstate:devname: controlname: controlvalue .
devname - имя устройства,
controlname - имя датчика/параметра,
controlvalue - значение .
И WEB интерфейс тут - как собаке пятое колесо.
а напряжение причом? я про const, int и номер пина
А не без разницы ли const int или constexpr uint8_t? В размере кода? Оптимизатор же, не?
Const имеет адрес, значит еще и хранится в коде (2 байта минимум, еще и со знаком), а constexpr видим только на этапе канпиляции и нигде, кроме текста программы не хранится унутре микроконтроллера. Умножаем на число описанных пинов, получаем дохрена лишних байт во флэше, в хранении которых нет ни малейшего смысла. Актуально для AVR. В “жирных” контроллерах это просто индикатор неаккуратного кода.
Так и запишем.)
прописать куда подключаться, связать топики, и все должно работать…
скинуть пример работы именно с вашим брокером, и может тоже сделает вам код))) ну или хотя бы пример подключения чужого брокера..
но брокер mqtt вам надо организовывать правильно заранее, а если вы сделали свой какой то, который работает по своим алгоритмам, так и сделайте код как он должен работать по вашему мнению, или скормите весь код ии и пусть попробует разобраться сам…
но я с вами согласен, ии совсем обнаглели, и не угадывают мысли…
