sonoff touch
Модератор: immortal
Re: sonoff touch
Ребят, разобрался из-за чего односторонняя связь была. Я прошил в первый раз с устаревшим SDK 1.3.0.
С 1.5.1 все сразу заработало!
С 1.5.1 все сразу заработало!
- woow
- Сообщения: 821
- Зарегистрирован: Пн июл 04, 2016 8:46 am
- Откуда: Mazeikiai
- Благодарил (а): 125 раз
- Поблагодарили: 46 раз
Re: sonoff touch
и я вот купил для тренировки Sonoff Touch. Планы были засунуть его под выключатель в коробку но увы первая плата к.с. силовая легко помещается, а вот вторая большая и обрезать не получится.
Но интересно что вскрытие показало, я надеялся найти ESP8266, а там что-то безымянное, что это за ... .
Но интересно что вскрытие показало, я надеялся найти ESP8266, а там что-то безымянное, что это за ... .
Raspberry Pi 3B+
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: sonoff touch
это esp...только не 8266, вроде 8255 или 8265...че то такое...точно не помню...но суть короче одна и та же)) wifi-iot-ом точно прошивается...думаю и другими прошивками тоже.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
- VooDooN
- Сообщения: 307
- Зарегистрирован: Сб июн 11, 2016 12:02 am
- Благодарил (а): 170 раз
- Поблагодарили: 64 раза
Re: sonoff touch
Там под крышкой ESP8285. То же самое, что и ESP8266, но со встроенной памятью. Крышку лучше не снимать, перепрошить и так можно. Лишь бы при включении замкнуть ноль и пин 0, чтобы загрузился девайс в режим прошивания. В первом посте есть фотка где какие пины.
- Рейтинг: 1.16%
Re: sonoff touch
Нашел на гитхабе готовый скетс Sonoff Touch+MQTT
https://github.com/davidmpye/Sonoff-Tou ... c/main.cpp
Мои выключатели еще в пути. У кого есть в наличии отпишитесь, нагревается ли он при работе? Есть ли смысл пытаться приколхозить вовнутрь датчики температуры (сообразив вентиляционные отверстия)?
СпойлерПоказать
/*
Simpleton Sonoff Touch firmware with MQTT support
Supports OTA update
David Pye (C) 2016 GNU GPL v3
*/
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <ESP8266mDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>
#define NAME "lswitch0"
#define SSID "SSID"
#define PASS "PASSWORD"
//Defaults to DHCP, if you want a static IP, uncomment and
//configure below
//#define STATIC_IP
#ifdef STATIC_IP
IPAddress ip(192, 168, 0, 50);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 0, 0);
#endif
#define MQTT_SERVER "192.168.0.1"
#define MQTT_PORT 1883
#define OTA_PASS "UPDATE_PW"
#define OTA_PORT 8266
const char *cmndTopic1 = "cmnd/" NAME "/light";
const char *cmndTopic2 = "cmnd/group/lights";
const char *statusTopic = "status/" NAME "/light";
#define BUTTON_PIN 0
#define RELAY_PIN 12
#define LED_PIN 13
volatile int desiredRelayState = 0;
volatile int relayState = 0;
volatile unsigned long millisSinceChange = 0;
unsigned long lastMQTTCheck = -5000; //This will force an immediate check on init.
WiFiClient espClient;
PubSubClient client(espClient);
bool printedWifiToSerial = false;
void initWifi() {
// We start by connecting to a WiFi network
Serial.println();
Serial.print("Connecting to ");
Serial.println(SSID);
#ifdef STATIC_IP
WiFi.config(ip, gateway, subnet);
#endif
WiFi.begin(SSID, PASS);
}
void checkMQTTConnection() {
Serial.print("Checking MQTT connection: ");
if (client.connected()) Serial.println("OK");
else {
if (WiFi.status() == WL_CONNECTED) {
//Wifi connected, attempt to connect to server
Serial.print("new connection: ");
if (client.connect(NAME)) {
Serial.println("connected");
client.subscribe(cmndTopic1);
client.subscribe(cmndTopic2);
} else {
Serial.print("failed, rc=");
Serial.println(client.state());
}
}
else {
//Wifi isn't connected, so no point in trying now.
Serial.println(" Not connected to WiFI AP, abandoned connect.");
}
}
//Set the status LED to ON if we are connected to the MQTT server
if (client.connected()) digitalWrite(LED_PIN, LOW);
else digitalWrite(LED_PIN, HIGH);
}
void MQTTcallback(char* topic, byte* payload, unsigned int length) {
Serial.print("Message arrived [");
Serial.print(topic);
Serial.println("] ");
if (!strcmp(topic, cmndTopic1) || !strcmp(topic, cmndTopic2)) {
if ((char)payload[0] == '1' || ! strncasecmp_P((char *)payload, "on", length)) {
desiredRelayState = 1;
}
else if ((char)payload[0] == '0' || ! strncasecmp_P((char *)payload, "off", length)) {
desiredRelayState = 0;
}
else if ( ! strncasecmp_P((char *)payload, "toggle", length)) {
desiredRelayState = !desiredRelayState;
}
}
}
void shortPress() {
desiredRelayState = !desiredRelayState; //Toggle relay state.
}
void longPress() {
desiredRelayState = !desiredRelayState; //Toggle relay state.
}
void buttonChangeCallback() {
if (digitalRead(0) == 1) {
//Button has been released, trigger one of the two possible options.
if (millis() - millisSinceChange > 500) {
longPress();
}
else if (millis() - millisSinceChange > 100){
//Short press
shortPress();
}
else {
//Too short to register as a press
}
}
else {
//Just been pressed - do nothing until released.
}
millisSinceChange = millis();
}
void setup() {
Serial.begin(115200);
Serial.println("Initialising");
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, LOW);
pinMode(BUTTON_PIN, INPUT_PULLUP);
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, HIGH); //LED off.
initWifi();
client.setServer(MQTT_SERVER, MQTT_PORT);
client.setCallback(MQTTcallback);
//OTA setup
ArduinoOTA.setPort(OTA_PORT);
ArduinoOTA.setHostname(NAME);
ArduinoOTA.setPassword(OTA_PASS);
ArduinoOTA.begin();
//Enable interrupt for button press
Serial.println("Enabling touch switch interrupt");
attachInterrupt(digitalPinToInterrupt(BUTTON_PIN), buttonChangeCallback, CHANGE);
}
void loop() {
//If we haven't printed WiFi details to Serial port yet, and WiFi now connected,
//do so now. (just the once)
if (!printedWifiToSerial && WiFi.status() == WL_CONNECTED) {
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
printedWifiToSerial = true;
}
if (millis() - lastMQTTCheck >= 5000) {
checkMQTTConnection();
lastMQTTCheck = millis();
}
//Handle any pending MQTT messages
client.loop();
//Handle any pending OTA SW updates
ArduinoOTA.handle();
//Relay state is updated via the interrupt *OR* the MQTT callback.
if (relayState != desiredRelayState) {
Serial.print("Changing state to ");
Serial.println(desiredRelayState);
digitalWrite(RELAY_PIN, desiredRelayState);
relayState = desiredRelayState;
Serial.print("Sending MQTT status update ");
Serial.print(relayState);
Serial.print(" to ");
Serial.println(statusTopic);
client.publish(statusTopic, relayState == 0 ? "0" : "1");
}
delay(50);
}
Simpleton Sonoff Touch firmware with MQTT support
Supports OTA update
David Pye (C) 2016 GNU GPL v3
*/
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <ESP8266mDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>
#define NAME "lswitch0"
#define SSID "SSID"
#define PASS "PASSWORD"
//Defaults to DHCP, if you want a static IP, uncomment and
//configure below
//#define STATIC_IP
#ifdef STATIC_IP
IPAddress ip(192, 168, 0, 50);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 0, 0);
#endif
#define MQTT_SERVER "192.168.0.1"
#define MQTT_PORT 1883
#define OTA_PASS "UPDATE_PW"
#define OTA_PORT 8266
const char *cmndTopic1 = "cmnd/" NAME "/light";
const char *cmndTopic2 = "cmnd/group/lights";
const char *statusTopic = "status/" NAME "/light";
#define BUTTON_PIN 0
#define RELAY_PIN 12
#define LED_PIN 13
volatile int desiredRelayState = 0;
volatile int relayState = 0;
volatile unsigned long millisSinceChange = 0;
unsigned long lastMQTTCheck = -5000; //This will force an immediate check on init.
WiFiClient espClient;
PubSubClient client(espClient);
bool printedWifiToSerial = false;
void initWifi() {
// We start by connecting to a WiFi network
Serial.println();
Serial.print("Connecting to ");
Serial.println(SSID);
#ifdef STATIC_IP
WiFi.config(ip, gateway, subnet);
#endif
WiFi.begin(SSID, PASS);
}
void checkMQTTConnection() {
Serial.print("Checking MQTT connection: ");
if (client.connected()) Serial.println("OK");
else {
if (WiFi.status() == WL_CONNECTED) {
//Wifi connected, attempt to connect to server
Serial.print("new connection: ");
if (client.connect(NAME)) {
Serial.println("connected");
client.subscribe(cmndTopic1);
client.subscribe(cmndTopic2);
} else {
Serial.print("failed, rc=");
Serial.println(client.state());
}
}
else {
//Wifi isn't connected, so no point in trying now.
Serial.println(" Not connected to WiFI AP, abandoned connect.");
}
}
//Set the status LED to ON if we are connected to the MQTT server
if (client.connected()) digitalWrite(LED_PIN, LOW);
else digitalWrite(LED_PIN, HIGH);
}
void MQTTcallback(char* topic, byte* payload, unsigned int length) {
Serial.print("Message arrived [");
Serial.print(topic);
Serial.println("] ");
if (!strcmp(topic, cmndTopic1) || !strcmp(topic, cmndTopic2)) {
if ((char)payload[0] == '1' || ! strncasecmp_P((char *)payload, "on", length)) {
desiredRelayState = 1;
}
else if ((char)payload[0] == '0' || ! strncasecmp_P((char *)payload, "off", length)) {
desiredRelayState = 0;
}
else if ( ! strncasecmp_P((char *)payload, "toggle", length)) {
desiredRelayState = !desiredRelayState;
}
}
}
void shortPress() {
desiredRelayState = !desiredRelayState; //Toggle relay state.
}
void longPress() {
desiredRelayState = !desiredRelayState; //Toggle relay state.
}
void buttonChangeCallback() {
if (digitalRead(0) == 1) {
//Button has been released, trigger one of the two possible options.
if (millis() - millisSinceChange > 500) {
longPress();
}
else if (millis() - millisSinceChange > 100){
//Short press
shortPress();
}
else {
//Too short to register as a press
}
}
else {
//Just been pressed - do nothing until released.
}
millisSinceChange = millis();
}
void setup() {
Serial.begin(115200);
Serial.println("Initialising");
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, LOW);
pinMode(BUTTON_PIN, INPUT_PULLUP);
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, HIGH); //LED off.
initWifi();
client.setServer(MQTT_SERVER, MQTT_PORT);
client.setCallback(MQTTcallback);
//OTA setup
ArduinoOTA.setPort(OTA_PORT);
ArduinoOTA.setHostname(NAME);
ArduinoOTA.setPassword(OTA_PASS);
ArduinoOTA.begin();
//Enable interrupt for button press
Serial.println("Enabling touch switch interrupt");
attachInterrupt(digitalPinToInterrupt(BUTTON_PIN), buttonChangeCallback, CHANGE);
}
void loop() {
//If we haven't printed WiFi details to Serial port yet, and WiFi now connected,
//do so now. (just the once)
if (!printedWifiToSerial && WiFi.status() == WL_CONNECTED) {
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
printedWifiToSerial = true;
}
if (millis() - lastMQTTCheck >= 5000) {
checkMQTTConnection();
lastMQTTCheck = millis();
}
//Handle any pending MQTT messages
client.loop();
//Handle any pending OTA SW updates
ArduinoOTA.handle();
//Relay state is updated via the interrupt *OR* the MQTT callback.
if (relayState != desiredRelayState) {
Serial.print("Changing state to ");
Serial.println(desiredRelayState);
digitalWrite(RELAY_PIN, desiredRelayState);
relayState = desiredRelayState;
Serial.print("Sending MQTT status update ");
Serial.print(relayState);
Serial.print(" to ");
Serial.println(statusTopic);
client.publish(statusTopic, relayState == 0 ? "0" : "1");
}
delay(50);
}
Мои выключатели еще в пути. У кого есть в наличии отпишитесь, нагревается ли он при работе? Есть ли смысл пытаться приколхозить вовнутрь датчики температуры (сообразив вентиляционные отверстия)?
-
- Сообщения: 395
- Зарегистрирован: Вт май 31, 2016 6:56 pm
- Откуда: Россия Карелия Петрозаводск
- Благодарил (а): 95 раз
- Поблагодарили: 57 раз
Re: sonoff touch
Sonoff T1 двух клавишный.
Простоял 2-3 недели и отклеилось стекло.
Обратно я так понимаю просто приклеить как было смысла нет, т.к думаю если раз отклеилось то отклеится снова и разобьется об пол.
Как надежно приклеить стекло но не испортить, чтобы пятен не было.
Была мысль на клей момент приклеить.
На двухсторонний скотч не охота клеить т.к нужной толщины нет и сомнение в плане надежности.
Есть идеи?
Простоял 2-3 недели и отклеилось стекло.
СпойлерПоказать
Как надежно приклеить стекло но не испортить, чтобы пятен не было.
Была мысль на клей момент приклеить.
На двухсторонний скотч не охота клеить т.к нужной толщины нет и сомнение в плане надежности.
Есть идеи?
Сервер МД на x86 micro pc ssd + HDD, OC Debian, терминал Xiaomi Redmi note 7
Мои исходники для мд управляемых устройств https://github.com/vgamaev/ESPMDDEVICE
Мои исходники для мд управляемых устройств https://github.com/vgamaev/ESPMDDEVICE
-
- Сообщения: 125
- Зарегистрирован: Ср окт 18, 2017 9:44 am
- Благодарил (а): 24 раза
- Поблагодарили: 18 раз
Re: sonoff touch
Лучше все же найти тонкий скотч, к примеру такой, какой используют в ремонте мобильных. Хороший двухсторонний скотч клеится очень надежно.
OrangePI PC/ARMBIAN 5.36 + DS3231+433Mhz. Esp8266(ArduinoIDE). Arduino MEGA2560 + Oregon THGN132N.
Sonoff RF Bridge + sensors
Sonoff RF Bridge + sensors
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: sonoff touch
Соглашусь. М3 фирма делает такие...вроде неплохие...главное найти место, где продают...это уже сложнее.
Отправлено с моего Xperia XZ1 Compact через Tapatalk
Отправлено с моего Xperia XZ1 Compact через Tapatalk
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
-
- Сообщения: 2801
- Зарегистрирован: Пн дек 26, 2016 9:51 am
- Откуда: Екатеринбург
- Благодарил (а): 380 раз
- Поблагодарили: 693 раза
- Контактная информация:
Re: sonoff touch
3М )nick7zmail писал(а): М3
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
-
- Сообщения: 147
- Зарегистрирован: Ср сен 27, 2017 9:13 pm
- Откуда: MSK
- Благодарил (а): 235 раз
- Поблагодарили: 38 раз
Re: sonoff touch
Я сегодня специально!!! пытался стекло - отклеить, так и не смог аккуратно сделать - очень крепко скотч держит (отклеил конечно, но поцарапал).VladPTZ писал(а):Sonoff T1 двух клавишный.
Обратно я так понимаю просто приклеить как было смысла нет, т.к думаю если раз отклеилось то отклеится снова и разобьется об пол.
Размер моего пластикового EU стекла 86*86мм, по размера подходит Livilo UK, но - они стёкла UK отдельно не продают - только EU стекла 80*80мм, есть идеи чем заменить?
1. Супер тонкий двухсторонний скоч (0.05 мм), себе уже заказал 10мм шириной:VladPTZ писал(а):Sonoff T1 двух клавишный.
Как надежно приклеить стекло но не испортить, чтобы пятен не было.
На двухсторонний скотч не охота клеить т.к нужной толщины нет и сомнение в плане надежности.
Есть идеи?
https://ru.aliexpress.com/store/product ... 5c7eS07L04
2. Тонкий двухсторонний скоч (0.2 мм):
https://ru.aliexpress.com/item/0-2mm-th ... dc62&tpp=1
Последний раз редактировалось TrDA Вс фев 18, 2018 8:58 pm, всего редактировалось 2 раза.
Всем удачи.
Спрашивайте - не стесняйтесь.
Спрашивайте - не стесняйтесь.