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

Прошивка Sonoff

Obnx

New member
Есть новая версия прошивки. Практически весь код переписан. С обновлением на новую версию могут быть проблемы.
Пробуйте на тех устройствах которые можно достать и открыть в случае неудачи.
И еще вопрос : в предыдущих прошивках во вкладке Tach я прописал следующий код для http - запросов вкл., выкл. и текущее состояние..В новой прошивке этот код не работает, ошибка 'state0' was not declared in this scope. Не могли бы вы вернуть возможность исполнения данного кода. Спасибо.


void handleState(void) {

String out = "";

if( state0 )out = "1";
else out +="0";
HTTP.send ( 200, "application/json", out );

}




void handle_relayon() {
command = "relayon";
String state = "1";
state0 = true;
HTTP.send(200, "text/json", state);
}



void handle_relayoff() {
command = "relayoff";

String state = "0";
state0 = false;

HTTP.send(200, "text/json", state);
}
 

tretyakov_sa

Moderator
Команда форума
И еще вопрос : в предыдущих прошивках во вкладке Tach я прописал следующий код для http - запросов вкл., выкл. и текущее состояние..В новой прошивке этот код не работает, ошибка 'state0' was not declared in this scope. Не могли бы вы вернуть возможность исполнения данного кода. Спасибо.
Сейчас на запросы /relayon /relayoff ответ возвращает следующие строки:
{"title":"{{LangOn}}","class":"btn btn-block btn-lg btn-primary"}
{"title":"{{LangOff}}","class":"btn btn-block btn-lg btn-info"}
это нужно для смены состояния на web странице.
Попробуйте сформулировать как вы хотите чтоб было?
 

Obnx

New member
Сейчас на запросы /relayon /relayoff ответ возвращает следующие строки:
{"title":"{{LangOn}}","class":"btn btn-block btn-lg btn-primary"}
{"title":"{{LangOff}}","class":"btn btn-block btn-lg btn-info"}
это нужно для смены состояния на web странице.
Попробуйте сформулировать как вы хотите чтоб было?
Здравствуйте. Хотелось бы чтобы на запрос relayon получить ответ единичку или relayoff соотв. 0..Также для меня важно знать текущий статус рэле, т.к на запрос relaystate получить ответ 1 или 0, в зависимости от состояния устройства..Спасибо
 

Obnx

New member
Сейчас на запросы /relayon /relayoff ответ возвращает следующие строки:
{"title":"{{LangOn}}","class":"btn btn-block btn-lg btn-primary"}
{"title":"{{LangOff}}","class":"btn btn-block btn-lg btn-info"}
это нужно для смены состояния на web странице.
Попробуйте сформулировать как вы хотите чтоб было?
Ответьте пожалуйста на вопрос касаемо датчиков и запроса ip.list.json..Спасибо..
 

tretyakov_sa

Moderator
Команда форума
Спасибо, удобно.. Скажите можно ли на запрос /ip.list.json получить ответ вида : сетевое имя устройства, ip-адрес? Например так : {"ssdp":"sonoff","ip":"10.0.9.99"}? Подскажите пожалуйста в каком направлении копать для реализации такой возможности. На мой взгляд инф-ция чип-id не представляет интереса..И еще вопрос : приехали датчики температуры и влажности DHT22(AM2302) и AM2301..Скажите, данная версия прошивка их поддерживает? Есть ли возможность получить текущие показания get- запросом? Спасибо.
SSPD добавлю. Датчики на лету должны подключиться. /sensor.json вернет текущие данные температуры. Предложите свои запросы и ответы так сказать для определения стандарта и я добавлю.
 

Obnx

New member
SSPD добавлю. Датчики на лету должны подключиться. /sensor.json вернет текущие данные температуры. Предложите свои запросы и ответы так сказать для определения стандарта и я добавлю.
ip/relayon ответ 1
ip/relayoff ответ 0
ip/state ответ 1 или 0 в зав-ти от состояния реле

Большое спасибо. Обязуюсь поддержать проект))
 

Obnx

New member
SSPD добавлю. Датчики на лету должны подключиться. /sensor.json вернет текущие данные температуры. Предложите свои запросы и ответы так сказать для определения стандарта и я добавлю.
Здравствуйте! Получилось добавить запросы ip/relayon ответ 1 ; ip/relayoff ответ 0 ..Изменил код так:

void relayon() {

sCmd.readStr("relayon");
String state = "1";
HTTP.send(200, "text/json", state);
}



void relayoff() {

sCmd.readStr("relayoff");
String state = "0";
HTTP.send(200, "text/json", state);
}

Скажите, пожалуйста как добавить запрос ip/state (текущее сост. реле)? Обратил внимание, что в IP/config.live.json есть показатель "state", который и дает информацию о текущем сост. реле..Можно ли добавить этот показатель отдельным http-запросом? Спасибо.
 

Obnx

New member
SSPD добавлю. Датчики на лету должны подключиться. /sensor.json вернет текущие данные температуры. Предложите свои запросы и ответы так сказать для определения стандарта и я добавлю.
Выявил следующую проблему : при запросе /ip.list.json сетевое имя (ssdp) отображается только для устройства, к которому был отправлен запрос. Например так : {"ssdpList":[{"ip":"10.0.9.92","ssdp":"Tesla2"},{"ip":"10.0.9.93","ssdp":""},{"ip":"10.0.9.91","ssdp":""}]} . Проверьте пожалуйста. ChipID удалил.Спасибо.
 

Obnx

New member
SSPD добавлю. Датчики на лету должны подключиться. /sensor.json вернет текущие данные температуры. Предложите свои запросы и ответы так сказать для определения стандарта и я добавлю.
Подключил датчики температуры/влажности..Скажите в /sensor.json : {"data":[21],"points":10,"refresh":3000} что означает показатель "points" ? Работает ли в текущей прошивке показатель влажности? Спасибо.
 

tretyakov_sa

Moderator
Команда форума
Скажите, пожалуйста как добавить запрос ip/state (текущее сост. реле)? Обратил внимание, что в IP/config.live.json есть показатель "state", который и дает информацию о текущем сост. реле..Можно ли добавить этот показатель отдельным http-запросом? Спасибо.
Со стандартизацией запросов пока есть некоторая проблема. Я придумаю универсальные запросы для получения статусов, но пока внятных идей нет. Вы можете создать запрос state и получить данные строкой
jsonReadtoInt(configLive, "state") которая вернет значение state.
Но сильно не увлекайтесь исправлением кода, так как вам в этом случае будет не доступно новое обновление.
 

tretyakov_sa

Moderator
Команда форума
Подключил датчики температуры/влажности..Скажите в /sensor.json : {"data":[21],"points":10,"refresh":3000} что означает показатель "points" ? Работает ли в текущей прошивке показатель влажности? Спасибо.
pionts количество точек на графике по ширине. refresh количество миллисекунд с которым выполняется запрос с web. Не стоит делать меньше времени опроса для датчика температуры.
 

Obnx

New member
Со стандартизацией запросов пока есть некоторая проблема. Я придумаю универсальные запросы для получения статусов, но пока внятных идей нет. Вы можете создать запрос state и получить данные строкой
jsonReadtoInt(configLive, "state") которая вернет значение state.
Но сильно не увлекайтесь исправлением кода, так как вам в этом случае будет не доступно новое обновление.
Спасибо. А по поводу показаний влажности и ssdp?
 

tretyakov_sa

Moderator
Команда форума
Выявил следующую проблему : при запросе /ip.list.json сетевое имя (ssdp) отображается только для устройства, к которому был отправлен запрос. Например так : {"ssdpList":[{"ip":"10.0.9.92","ssdp":"Tesla2"},{"ip":"10.0.9.93","ssdp":""},{"ip":"10.0.9.91","ssdp":""}]} . Проверьте пожалуйста. ChipID удалил.Спасибо.
Это проблемы UTP протокола. Запрос широковещательный и он должен поступить на все устройства в этой подсети. Но, если связь плохая, то либо запрос либо ответ будет потерян. Очень сильно этот эффект проявляется в перегруженной сети или с фабричными модулями sonoff которые находятся достаточно далеко, антенна там хуже чем у esp12.
ChipID вы зря удалили, он как раз может понадобится если я найду внятный алгоритм повторных запросов. А вам он совершенно не мешает.
 

Obnx

New member
Это проблемы UTP протокола. Запрос широковещательный и он должен поступить на все устройства в этой подсети. Но, если связь плохая, то либо запрос либо ответ будет потерян. Очень сильно этот эффект проявляется в перегруженной сети или с фабричными модулями sonoff которые находятся достаточно далеко, антенна там хуже чем у esp12.
ChipID вы зря удалили, он как раз может понадобится если я найду внятный алгоритм повторных запросов. А вам он совершенно не мешает.
Странно..Для экспериментов с sonoff использую локальную сеть со своим wifi SSIDом , всего 3 устройства sonoff, даже выход в интернет не предусмотрен..Поэтому проблема точно не в загруженности сети..
 

tretyakov_sa

Moderator
Команда форума
Странно..Для экспериментов с sonoff использую локальную сеть со своим wifi SSIDом , всего 3 устройства sonoff, даже выход в интернет не предусмотрен..Поэтому проблема точно не в загруженности сети..
Посмотрите уровни RSSI на каждом устройстве, это можно сделать запросом адрес модуля/wifi.scan.json
Какие уровни от роутера до вашего устройства и сколько вокруг других wifi сетей?
 

Obnx

New member
Посмотрите уровни RSSI на каждом устройстве, это можно сделать запросом адрес модуля/wifi.scan.json
Какие уровни от роутера до вашего устройства и сколько вокруг других wifi сетей?
sonoff1 : {"ssid":"SSID","pass":"*","dbm":-51}
sonoff2 : {"ssid":"SSID","pass":"*","dbm":-35}
sonoff3 : {"ssid":"SSID","pass":"*","dbm":-25}

От роутера к устройствам соотв. : -45 ; -27 ; -28

Вокруг еще 3 сети видны..Может все-таки в коде чего-то не хватает..
 

Obnx

New member
Посмотрите уровни RSSI на каждом устройстве, это можно сделать запросом адрес модуля/wifi.scan.json
Какие уровни от роутера до вашего устройства и сколько вокруг других wifi сетей?
IP-адреса же отображает корректно без каких-либо проблем..
 

tretyakov_sa

Moderator
Команда форума
sonoff1 : {"ssid":"SSID","pass":"*","dbm":-51}
sonoff2 : {"ssid":"SSID","pass":"*","dbm":-35}
sonoff3 : {"ssid":"SSID","pass":"*","dbm":-25}

От роутера к устройствам соотв. : -45 ; -27 ; -28

Вокруг еще 3 сети видны..Может все-таки в коде чего-то не хватает..
Это странный эфект у нас и с десять модулями работает. Как баг проявляется. Что видите в /ip.list.json каждого устройства?
 

Obnx

New member
Это странный эфект у нас и с десять модулями работает. Как баг проявляется. Что видите в /ip.list.json каждого устройства?
sonoff1 : {"ssdpList":[{"ip":"10.0.9.91","ssdp":"Tesla1"},{"ip":"10.0.9.93","ssdp":""},{"ip":"10.0.9.92","ssdp":""}]}

sonoff2 : {"ssdpList":[{"ip":"10.0.9.92","ssdp":"Tesla2"},{"ip":"10.0.9.91","ssdp":""},{"ip":"10.0.9.93","ssdp":""}]}

sonoff3 : {"ssdpList":[{"ip":"10.0.9.93","ssdp":"Tesla3"},{"ip":"10.0.9.92","ssdp":""},{"ip":"10.0.9.91","ssdp":""}]}

Т.е. сетевое имя (ssdp) отображается только для устройства, к которому был отправлен запрос.
 
Сверху Снизу