ESP8266

Подключение исполнительных устройств, датчиков, контроллеров.

Модератор: immortal

ivannag
Сообщения: 146
Зарегистрирован: Вт апр 12, 2016 12:19 am
Благодарил (а): 18 раз
Поблагодарили: 27 раз

Re: ESP8266

Сообщение ivannag » Вт апр 26, 2016 3:41 pm

kastortroy писал(а):Приветствую, требуется помощь.
Пробую сделать управление светом, на плату esp12 (прошивка homes-smart) подключено 2 реле - одно управление (gpio4 input и gpio4 output изменяют состояние реле), второе состояние лампы (gpio5 input 0 выкл, 1 вкл)
Пытаюсь завести по предложенным тут кодам, но не получается(

if (($this->getProperty("gpiout4")) =="0")
{
getURL('http://192.168.0.106/gpiout?st=1&pin=4&flash=1', 0);
} else if (($this->getProperty("gpiout4")) =="1")
{
getURL('http://192.168.0.106/gpio?st=1&pin=4&flash=1', 0);
}

Какие бы комбинации не пробовал не работает... Выдает ошибку
Fatal error: Call to undefined method scripts::getProperty() in /var/www/modules/scripts/scripts.class.php(139) : eval()'d code on line 1
Согласно вашему коду, вы проверяете значение gpiout4 и если оно равно 0 то переключаете gpio4 в 1. а затем снова проверяете gpiout4 и если оно равно 1 то gpio4 опять переключаете в 1 (логичнее было бы в 0).

И по-моему эти действия таки лучше делать в методе а не в скрипте, тогда прописав метод для класса, вы сможете вызывать его для каждого обьекта (например для другой есп-шки в другой комнате).

И еще думаю, не стоит возлагать такие элементарные действия как переключение реле при нажатии на кнопку на Мажордомо... думаю логичнее повесить это на плечи есп-шки, а мажордомо пускай просто будет в курсе, и вмешивается только при необходимости...
При подходе, который Вы пытаетесь реализовать, при падении Мажордомо перестанет работать все в доме...(( Пусть отдельным реле и термостатом или еще чем рулит контролер, а Мажордомо только говорит что делать и зачем следить..

В прошивке от Макса можно прописать Gpio на котором реле в поле GPIO For Key, тогда нажиманием физической кнопки состояние реле все равно изменится, при чем сделается это хоть и на доли секунды но все таки быстрее, чем при участии Мажордомо. Кроме этого статус вашего реле и вашей кнопки все равно улетят к Алисе... а при необходимости включить или выключить свет вы без проблем сможете из интерфейса мажордомо ;)
ivannag
Сообщения: 146
Зарегистрирован: Вт апр 12, 2016 12:19 am
Благодарил (а): 18 раз
Поблагодарили: 27 раз

Re: ESP8266

Сообщение ivannag » Вт апр 26, 2016 3:43 pm

kastortroy писал(а):Спасибо, без $this-> скрип заработал, но ничего не происходит...
Скорее всего из за того что у меня gpio4 стоит на out... Дома переставлю на in и попробую
А удаленно это сделать нельзя?
Используйте лучше один gpio на вход для кнопки, а другой на выход для реле... так точно заработает))
За это сообщение автора ivannag поблагодарил:
zarro (Пн май 02, 2016 10:16 am)
Рейтинг: 1.16%
kastortroy
Сообщения: 11
Зарегистрирован: Вт апр 26, 2016 11:14 am
Благодарил (а): 1 раз
Поблагодарили: 0

Re: ESP8266

Сообщение kastortroy » Вт апр 26, 2016 3:50 pm

Не совсем так...
Тут реализовано двойное управление - проходной выключатель или реле, то есть если мажордом упадет выключатель работать будет.
Код я вставил нерабочий, по идее должен работать такой
if ((getGlobal('ESP826600e2104f.gpio5')) =="0")
{
getURL('http://192.168.0.106/gpio?st=1&pin=4', 0);
} else if ((getGlobal('ESP826600e2104f.gpio5')) =="1")
{
getURL('http://192.168.0.106/gpiout?st=1&pin=4', 0);
}

Но все равно не срабатывает...

В метод позже внесу, сейчас надо добиться принципиальной работы...
А как это переложить на плечи esp?

И еще я не совсем понимаю про какую кнопку идет речь?

GPIO KEY в прошивке нет, по незнанию не добавил...
ivannag
Сообщения: 146
Зарегистрирован: Вт апр 12, 2016 12:19 am
Благодарил (а): 18 раз
Поблагодарили: 27 раз

Re: ESP8266

Сообщение ivannag » Вт апр 26, 2016 4:29 pm

Gpio key вам и не нужен... это кнопочка для включения гпио на главной странице самого модуля... сделал скрин... при замыкании контакта (я его кнопкой называл) подключенному к гпио 5 произойдет переключение гпио 4 (он у меня сверху на выход не назначен, это просто пример).

а по вашему коду я или что-то не понял что вы делаете, или все-таки нужно писать так:

if ((getGlobal('ESP826600e2104f.gpio5')) =="0")
{
getURL('http://192.168.0.106/gpio?st=1&pin=4', 0);
} else if ((getGlobal('ESP826600e2104f.gpio5')) =="1")
{
getURL('http://192.168.0.106/gpiout?st=0&pin=4', 0);
}

выходит вы пытаетесь пин4 поставить на единицу при любом условии.... (зачем тогда их вообще было проверять?)
Вложения
gpio.jpg
gpio.jpg (175.71 КБ) 15150 просмотров
kastortroy
Сообщения: 11
Зарегистрирован: Вт апр 26, 2016 11:14 am
Благодарил (а): 1 раз
Поблагодарили: 0

Re: ESP8266

Сообщение kastortroy » Вт апр 26, 2016 4:34 pm

Я честно говоря сам уже запутался...
Вставил Ваш код - не помогло... через консоль команды тоже не воспринимает...
ivannag
Сообщения: 146
Зарегистрирован: Вт апр 12, 2016 12:19 am
Благодарил (а): 18 раз
Поблагодарили: 27 раз

Re: ESP8266

Сообщение ivannag » Вт апр 26, 2016 4:43 pm

я не знаю точно, что и куда у вас подлючено... но если программировать по моему скрину, то реле должно быть подключено к гпио4, а кнопка (которую руками замыкаем, выключатель) к гпио 5, но!!!!! в мажордомо, наше гпио5 передаваться будет как .gpioint2 (на моем скрине видно, что оно int2), тогда если бы я запускал проверку состояния в методе или скрипте, то прописывал бы
if ((getGlobal('ESP826600e2104f.gpioint2')) =="0")
{
getURL('http://192.168.0.106/gpio?st=1&pin=4', 0);
} else if ((getGlobal('ESP826600e2104f.gpioint2')) =="1")
{
getURL('http://192.168.0.106/gpiout?st=0&pin=4', 0);
}

думаю ваш метод заработает, когда вместо ESP826600e2104f.gpio5 поставите ESP826600e2104f.gpioint2 (возможно ESP826600e2104f.gpioint1), не знаю на каком прерывании у вас физический контакт....
kastortroy
Сообщения: 11
Зарегистрирован: Вт апр 26, 2016 11:14 am
Благодарил (а): 1 раз
Поблагодарили: 0

Re: ESP8266

Сообщение kastortroy » Вт апр 26, 2016 4:54 pm

Что куда подключено:
gpio4 - реле управления светом, на выходы этого же реле контакты проходного выключателя (крайние), к центральному лампа
К gpio5 - реле состояния (у нее управляющий 220, соответсвенно когда ток есть то в gpioprintinput появляется 1, когда нет - 0)
gpio key у меня нет(
ivannag
Сообщения: 146
Зарегистрирован: Вт апр 12, 2016 12:19 am
Благодарил (а): 18 раз
Поблагодарили: 27 раз

Re: ESP8266

Сообщение ivannag » Вт апр 26, 2016 5:26 pm

kastortroy писал(а):Что куда подключено:
gpio4 - реле управления светом, на выходы этого же реле контакты проходного выключателя (крайние), к центральному лампа
К gpio5 - реле состояния (у нее управляющий 220, соответсвенно когда ток есть то в gpioprintinput появляется 1, когда нет - 0)
gpio key у меня нет(
теперь понял... по-правде сказать я как-то не додумался, что к выходным контактам реле можно подлкючить нормальный выключатель)) я так понимаю выходит, что когда контакты реле разомкнуты то выключателем вы пускаете ток по другой цепи и лапмочка все равно загорится или потухнет... а про реле состояния я вообще не знал (я новичок и только учусь)... в моих экспериментах выключатель напрямую к лампочке не подключается, все идет через контролер, и соответственно на выключателе нет 220 а всего 3в.
у меня включен не gpio key (нарисует кнопки на главной странице) а модуль прерываний (gpio for key ).
Для вашей ситуации, посмотрите что у вас приходит на мажордомо в свойства (раз у вас есть данные в gpioprintinput, то что-то должно отправляться в мжд. там вроде gpiointX с модуля прерываний и gpioutX когда как у вас гпио на выход... нужно смотреть документацию... попытался проверить просто включив, но воткнул по неосторожности гпио6!!!!! и отправил модуль в нокаут))))) если удасться прошить, попытаюсь смоделировать вашу ситуацию....
скиньте в личку скрин ваших свойств мжд, помогу с кодом....

п.с. если задача стоит просто изменить состояние гпио4 на противоположное то проще в него кинуть таким вот кодом:
$cmdUrl ="http://".$this->getProperty("wanip")."/gpio?st=2&pin=4";
getURL($cmdUrl,0);

st=2 - инвертирует состояние гпио, посему отпадает необходимость самому его проверять, а контролеру оно всегда известно))
вместо конструкции .$this->getProperty("wanip"). можете вставить свой http://192.168.0.106 (у меня оно срабатывает в методе класса, и что кому посылать Алиса определяет сама)
За это сообщение автора ivannag поблагодарил:
pervyhe (Пн фев 12, 2018 9:57 am)
Рейтинг: 1.16%
kastortroy
Сообщения: 11
Зарегистрирован: Вт апр 26, 2016 11:14 am
Благодарил (а): 1 раз
Поблагодарили: 0

Re: ESP8266

Сообщение kastortroy » Вт апр 26, 2016 6:28 pm

И модуль прерываний тоже по незнанию не включил в прошивку(

Попробовал сейчас Ваш код - опять глухо, такое ощущение, что можордом не командует модулем... так что проблема глубже...

Вообще такой метод оказался не очень хорошим - такие реле дорого стоят, греются и вообще... Но даже при выходе из строя модуля все будет работать

Сейчас на примере этого устройства хочу научится управлять с методами, классами и сценариями... но пока не могу получить от него реакции...

Сейчас пришел домой, попробовал попинать его запросами через браузер - значения меняются (в положении аутпут с 0 на 1), но реакции нет (страничка отвечает ОК, реле не переключается), st2 инпутом его не делает, хотя отвечает ОК...
ivannag
Сообщения: 146
Зарегистрирован: Вт апр 12, 2016 12:19 am
Благодарил (а): 18 раз
Поблагодарили: 27 раз

Re: ESP8266

Сообщение ivannag » Вт апр 26, 2016 7:23 pm

st=2 не делает инпут, оно инвертирует (меняет с 0 на 1 или с 1 на 0) значение для гпио, которое настроено на оутпут.
если не состояние гпио меняется а реле не срабатывает, причина скорее всего кроется в самом реле или его подключении... (возможно даже причина в том, что на его выходах висит проходной выключатель), отключите реле от 220 и добейтесь сначала его переключения при запросах через браузер http://192.168.0.106/gpio?st=2&pin=4, когда реле начнет переключатся, тогда обвешивайте его всем остальным...
реанимировал свой модуль и у меня все работает через описанный мной метод... единственное что прерывание нужно замыкать на +, а когда-то вроде срабатывало при замыкании на минус....
За это сообщение автора ivannag поблагодарил:
kastortroy (Ср май 04, 2016 8:53 am)
Рейтинг: 1.16%
Ответить