Настройка wifi с кнопки на NodeMCU

Anytcent
Offline
Зарегистрирован: 16.07.2016

Всем доброго времени суток.

Решил сделать копию популярных wifi реле Sonoff.

подскажите как можно сделать так, чтобы при нажатии кнопки NodeMCU выходил в режим открытого wifi сервера, а потом про вводе данных аутификации с телефона записывал их себе во флеш память, и после уже брал от туда. Скажу прямо. Я программировал до этого Ардуино, и то, я делал не сложные простые программы, но вот работа с модулями по воздуху или по интернету для меня лес дремучий, с этими серверами и тому подобным. Планируется вообще собрать систему умный дом. Сначала была идею всё собрать в одну кучу, сделать главный контролле который бы стоял в обном месте с блоком реле на борту, но переделывать всю проводку в доме не очень то и охото. Было решено тогда сделать автономные модули, по типу Sonoff и монтировать их в уже старые отверстия. Вот как то так.

И так итог: как сделать так, чтобы при нажатии кнопки, nodemcu, сначала подключался к смартфону, а потом со смарт фона ему задавались параметры wifi сети (пароль и логин), и потом он их помнил до следующего нажатия кнопки, даже после включения или выключения nodemcu повторно. При это нужно чтобы получив ip от роутера он также запоминал, как в случае с паролем и логином. Я представля. это все примерно так: если использовать стандартный код


#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>

const char *ssid = "вот эту чать сделать как переменную Log";
const char *password = "вот эту чать сделать как переменную Pass";

ESP8266WebServer server ( 80 );

то что таких устройств будет кучка в будущем, думаю надо будет сделать так, чтобы у каждого из них был свой IP который им будет давать роутер и чтобы они этот IP запоминали, или ненадо... Я незнаю люди.

P.S. дорогие друзья. Я не прошу написать мне готовый скеть, хотя был бы ну очень рад помощи. Прошу разьясните как это работает. как сделать так, чтобы данные о сети wifi в контроллере были как переменная изменяемая удаленны со смартфона.

sadman41
Offline
Зарегистрирован: 19.10.2016

При старте читать с EEPROM, при получении команды на смену - записывать в EEPROM.

Anytcent
Offline
Зарегистрирован: 16.07.2016

sadman41 пишет:

При старте читать с EEPROM, при получении команды на смену - записывать в EEPROM.

 

м... спасибо, могли бы вы немного расписать как это. Как можно сделать их переменными (пароль и логин) которые будут записываться с телефона?

и что делать с IP адресом: его надо записывать вручную в когде, или контроллер сам это сделает. Просто хотелось бы исключить конфликт IP адресов при нескольких модулях включеных одновременно. Потом, при включении: откуда конроллер будет Брать данные пароля и логина wifi, если он ее будет подключен к сети. Его сначала надо как сервер запустить, потом войти с приложения на его сервер, вписать логин и пароль и потом он запустится как... короче я не понимаю.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Anytcent пишет:

и что делать с IP адресом: его надо записывать вручную в когде, или контроллер сам это сделает.

Коньтроллер сам никогда ничего не делает. Чтобы он что-то сделал, нужно его попросить.

По поводу IP-адреса, при динамическом получыении адреса хранить его в EEPROM не нужно. Нужно запрашивать заново при каждом включении. Мначе возможны конфликты.

Anytcent
Offline
Зарегистрирован: 16.07.2016

andriano пишет:

Anytcent пишет:

и что делать с IP адресом: его надо записывать вручную в когде, или контроллер сам это сделает.

Коньтроллер сам никогда ничего не делает. Чтобы он что-то сделал, нужно его попросить.

По поводу IP-адреса, при динамическом получыении адреса хранить его в EEPROM не нужно. Нужно запрашивать заново при каждом включении. Мначе возможны конфликты.


Хорошо. А как тогда устройство будет идентифицироватся у меня в списке устройств на телефоне? Тогда ему надо какой то ID?

Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015

При переходе в режим конфига (по кнопке) еспшка переходит в режим точки доступа с названием, например, settings_id. Подключаетесь с телефона к этой точке доступа и настраиваете.

Anytcent
Offline
Зарегистрирован: 16.07.2016

Можно ли алгоритм работы описать так?
При подаче питания контроллер увидит что у него нет настроек и будет работать просто как выключатель с кнопкой. Если нажатие кнопки привысит 5-10 секунд он переходит в режим config. В этом режиме он работает как веб сервер, к кторому мы подключаемся с телефона через приложение. В приложении мы задаем ему точку доступа в интернет и его будущий ID, после чего нажимаем сохранить. Коннтроллер перезапустится и увидит настройки у себя в Памяти и выйдет в рабочий режим (как устройство готовое к манипуляциям через приложение). В самом смартфоне отобразится наш контроллер с ID, которое мы ему присвоили и будет обозначен как кнопка, которую мы сможем нажимать. Вот как то так. Если мой ход мыслей правильный, помогите мне с терминалогией, что бы я мог поискать по названиям в интернете как это называется и как с этим всем работать. И можно ли это всё осуществить в Arduino ide?

sadman41
Offline
Зарегистрирован: 19.10.2016

У меня вопрос: зачем вам копия китайских реле? Вы прошивку будете полгода отлаживать... не жалко времени?

Anytcent
Offline
Зарегистрирован: 16.07.2016

Нет. Я отдаю отчет действиям и понимаю, что придется много работать. Я готов потратить на это время. Работая вахтой у меня его достаточно. Конечно можно купить себе сяоми переключатели или другие китайские модули, но давно хотел собрать это Сам, вот только как это всё называется я не знаю.
потом я в этой системе еще хотел установить веб камеру для того, чтобы видеть кто пришел ко мне в гости.
Я собирал инкубатор на nodemcu и мне понравилось работать с этим контроллером. Но там я использовал стандартную программу blynk теперь же я подумал сделать свою программу. Подумал как это можно реализовать. Nodemcu можно запустить как веб сервер.
Я пришел сюда за знаниями, как можно это всё собрать правильно. Я не прошу разработать за меня код, говорите что читать, что делать, а я буду писать сюда всё этапы своей работы.
Сейчас задача сделать кнопку гипкой в настройке, я попробую написать приложение для работы этой кнопки на андроид, чтобы можно было подать напряжение на Контроллер, зажать на нем кнопку, приложение на телефоне его увидит и позволит забить параметры сети Вайфай и присвоить ID контроллеру для дальнейшего его отображении в приложении. Потом собрать целое семейство таких контроллеров для реализации у себя умного дома.
И еще вопрос, это вообще реально сделать или я щас что то невозможное хочу собрать?

sadman41
Offline
Зарегистрирован: 19.10.2016

Раз есть такой же девайс от Sonoff - значит реально (в принципе). Вопрос только во вложенных усилиях.

Начните с простого - научитесь записывать в EEPROM строку, которую вы вводите из Serial Monitor. И читать ее в строковую переменную (char[]) на старте, которую будете печатать в тот же Serial Monitor. 

Все ключевые слова есть в этом посте. Справитесь - значит есть шанс довести дело до конца.

Anytcent
Offline
Зарегистрирован: 16.07.2016

Спасибо. Правда благодарю. Как научись отпишусь

sadman41
Offline
Зарегистрирован: 19.10.2016

Хочу заранее предупредить: EEPROM имеет ограниченный ресурс по записи. Не пишите в него на каждом проходе loop() - ушатаете очень быстро. А на вахте, полагаю, новый МК купить сложновато.

 

Anytcent
Offline
Зарегистрирован: 16.07.2016

Благодарю за пояснени. И Да, заказал их, вот жду)) как только придут буду мудрить и отпишусь сразу же. Щас кучка ардуино лежит, сначала с их eeprom-ом попробую поработать тоже напишу. Думаю и них принцип один тот же.

sadman41
Offline
Зарегистрирован: 19.10.2016

Хорошая идея - попробовать на тараканах попроще.

kasper007
Offline
Зарегистрирован: 23.05.2016

А почему именно в EEPROM писать. У ESP есть возможность создать файловую систему. Так что не составляет труда затем создать текстовый файл и хранить в нем всю информацию. Влезает в текстовый файл гораздо больше, чем в EEPROM :)

Densl
Offline
Зарегистрирован: 28.11.2018

Anytcent пишет:
Благодарю за пояснени. И Да, заказал их, вот жду)) как только придут буду мудрить и отпишусь сразу же. Щас кучка ардуино лежит, сначала с их eeprom-ом попробую поработать тоже напишу. Думаю и них принцип один тот же.

Ну как там esp-ишки, не уж то не пришли есчо?