Комментарии 22
1. Непонятно зачем в заголовке указан sonoff
Ну ок, в нем есть ESP8266
2.
Странный у вас простой способ.
Достаточно реализовать исполнительное устройство с беспроводным интерфейсом и веб мордой,
и управляйте им откуда угодно.
Но причем здесь проходной выключатель?
3.
настолько подробно, что в статье практически нет технических деталей, одна вода.
4.
P.S. Я не придираюсь, но не могу понять огромное количество текста на такую простую задачу.
Первая часть состоит из трёх частей
И ужасно форматированный код Python
Ну ок, в нем есть ESP8266
2.
В процессе ремонта возникла задача сделать проходной выключатель. Конечно же захотелось сделать самым простым и удобным способом, добавив базовые функции управления с телефона.
Странный у вас простой способ.
Достаточно реализовать исполнительное устройство с беспроводным интерфейсом и веб мордой,
и управляйте им откуда угодно.
Но причем здесь проходной выключатель?
3.
в дополнение я решил достаточно подробно описать весь процесс
настолько подробно, что в статье практически нет технических деталей, одна вода.
4.
содержать Arduino boardможет всё таки содержать ESP8266 board?
P.S. Я не придираюсь, но не могу понять огромное количество текста на такую простую задачу.
Первая часть состоит из трёх частей
И ужасно форматированный код Python
+3
При замыкании свободного пина на Vcc в микроконтроллере происходит, соответственно, включение или выключение реле
Я так понимаю, знакомство со словами «дребезг контактов» вам только предстоит.
+1
Да, дребезг будет заметен только когда выключатель начнёт отправлять информацию о своём состоянии по mqtt в сеть. В связи с тем, что python по умолчанию складывает irq события в scheduler, это будет достаточно интересно проявляться. Но статья и так получилась загромождённая, вопрос прерываний, либо переход на опрос по таймерам лучше рассмотреть в следующих сериях.
+1
В моих проектах для питания 3.3В хорошо себя зарекомендовал Hi-Link.
+2
Micropython, видимо, изобрели те же люди, что пытаются писать десктопные приложения на javascript?
0
В MicroPython соблюдать требования PEP-8 необязательно?
Код условий, например, совершенно нечитаемый.
0
if (val==2): self.value=not self.value else: self.value=val
Первая мысль при виде этого — «где мой миксер? глаза — вы мне больше не нужны!»
Ещё такое ощущение, что вы все 3 вида комментариев учились использовать.
За что вы так с людьми, которые будут это читать?
Ладно PEP-8, но совесть-то у вас есть?
P.S.: Простите, если я излишне эмоционален. На днях пришлось много Python-кода исследовать в одном проекте заказчика, и я ещё не отошёл от травмы.
0
Спасибо за конструктивную критику, прочитал PEP-8, привёл в соответствие.
Не очень понял критику про комментарии. Все в соответствии с PEP-8:
1. Один для документирования публичной функции change(),
2. Два «встрочных» на мой взгляд стоят в наилучшем для них месте, ровно как в примере PEP-8,
3. Последний из-за большой длины строки перенёс перед строкой. На мой взгляд комментарий достаточно важен.
Не очень понял критику про комментарии. Все в соответствии с PEP-8:
1. Один для документирования публичной функции change(),
2. Два «встрочных» на мой взгляд стоят в наилучшем для них месте, ровно как в примере PEP-8,
3. Последний из-за большой длины строки перенёс перед строкой. На мой взгляд комментарий достаточно важен.
+1
Уже лучше. И вы молодец, что адекватно реагируете на критику (пусть даже она действительно была резковата с моей стороны). Я думаю за комментарии вам стоит почитать это руководство.
1. Если документируете, то лучше бы использовать так:
2. «Старайтесь реже использовать подобные комментарии.» — цитата из руководства выше, с которой я солидарен. Такой комментарий легко может скрыться, потому что находится за границами экрана + можно его банально пропустить глазами, когда дошёл до конца строчки кода.
3. Вот только так и пишите комментарии.
Ко всему прочему, судя по всему вы забыли, что у вас нет метода .auto(), а есть ._auto(). А если вы ещё проверите код flake'ом, то он ещё может ругнуться на неиспользуемый аргумент v в этой же функции.
1. Если документируете, то лучше бы использовать так:
'''
Программное переключение выключателя
:param val: -- Положение выключателя (0 - выкл, 1 - вкл, 2 - переключение)
:type val: int
:rtype: None
'''
2. «Старайтесь реже использовать подобные комментарии.» — цитата из руководства выше, с которой я солидарен. Такой комментарий легко может скрыться, потому что находится за границами экрана + можно его банально пропустить глазами, когда дошёл до конца строчки кода.
3. Вот только так и пишите комментарии.
Ко всему прочему, судя по всему вы забыли, что у вас нет метода .auto(), а есть ._auto(). А если вы ещё проверите код flake'ом, то он ещё может ругнуться на неиспользуемый аргумент v в этой же функции.
+1
Если человек потратил своё время на то чтобы указать на проблемы (пусть даже в грубоватой форме) то глупо их игнорировать.
1. В общем случае согласен, но в моём: «Однострочники предназначены для действительно очевидных случаев»
2. Я считаю, что эти комментарии бесполезны, и очень хорошо если при чтении кода вы их пропустите. Но если неопытный человек видит код работы с GPIO первый раз в жизни, он может споткнуться на этих строках, на встречу ему придут комментарии. См. случай «Впрочем, такие комментарии иногда полезны:» из раздела «Встрочные» комментарии"
Я прочитал руководство PEP-8 и считаю, что моя позиция не нарушает его принципов.
По поводу auto спасибо, действительно схалтурил, впредь буду выкладывать что-то только как минимум после flakes.
1. В общем случае согласен, но в моём: «Однострочники предназначены для действительно очевидных случаев»
2. Я считаю, что эти комментарии бесполезны, и очень хорошо если при чтении кода вы их пропустите. Но если неопытный человек видит код работы с GPIO первый раз в жизни, он может споткнуться на этих строках, на встречу ему придут комментарии. См. случай «Впрочем, такие комментарии иногда полезны:» из раздела «Встрочные» комментарии"
Я прочитал руководство PEP-8 и считаю, что моя позиция не нарушает его принципов.
По поводу auto спасибо, действительно схалтурил, впредь буду выкладывать что-то только как минимум после flakes.
0
<удалено>
0
Проходной выключатель — имеется в виду что-то вроде этого? Лампа, которой можно управлять с 2 и более мест?
В статье очень много превозмоганий разных трудностей в мигании светодиодом, но выключателя я так и не увидел.
В статье очень много превозмоганий разных трудностей в мигании светодиодом, но выключателя я так и не увидел.
+1
Вот эскиз того, что мы хотим сделать, зелёном выделено то, что было затронуто в этой статье.
В 1.3 части мы сделали простой выключатель. Можно было бы сделать проходной, но пока не будет работать mqtt не хочется занимать RX, TX. Т.е. дописать работу с остальными выключателями я планировал в самом конце.
0
хранить где-то прошивки
GitHub для этого был придуман. Если не хотите в общий доступ, то Bitbucket или же тот же GitHub (в нём уже есть бесплатные приватные репозитории).
А при необходимости внести корректировки придётся мучительно вспоминать, где лежит код, и снова устанавливать ПО Arduino.
В чём проблема установить ПО? Я что-то не могу уловить смысла. Не хотите Arduino IDE, ставьте vscode и плагин к нему «PlatfromIO».
Я плохо читал, или так и не нашёл какое ПО Вы ставили для первой загрузки Вашей прошивки?
Если я всё правильно понимаю, то Вы в любом случае ставите какое-то ПО для первой заливки прошивки в МК. То есть исходя из этого, я тогда не совсем понимаю почему Вы так упорно утверждаете что «и снова устанавливать ПО Arduino».
0
Использовать git (или аналоги) действительно очень удобно, как и использовать удобное ПО для разработки. Но в MicroPython при желании от этого можно отказаться, а в Arduino нет.
Для меня это важный плюс и я написал эту статью для тех, кто считает аналогично, либо кому просто нравится язык Python.
В идеальном случае, если вы купили устройство с прошитой OTG+MicroPython из минимального софта вам понадобится только браузер и доступ к сайту с проектом webrepl (он даёт возможность залесть на устройство, скачать записать ваши python скрипты). Для OTG обновления ещё будут нужны: python, скрипт otg-client.py и прошивка, но обновлять саму прошивку MicroPython нужно(если нужно) достаточно редко.
В моём случае для первой прошивки пришлось воспользоваться устройством USB<->UART и программой esptool (которая записывает прошивку). Для исправления проблем конечно пришлось скачать и esp-sdk, micropython, yaota8266 поковыряться в C коде поискать решения на github и собрать. Но это вовсе не означает что MicroPython плохое решение, просто оно пока не доведено до идеала.
Для меня это важный плюс и я написал эту статью для тех, кто считает аналогично, либо кому просто нравится язык Python.
В идеальном случае, если вы купили устройство с прошитой OTG+MicroPython из минимального софта вам понадобится только браузер и доступ к сайту с проектом webrepl (он даёт возможность залесть на устройство, скачать записать ваши python скрипты). Для OTG обновления ещё будут нужны: python, скрипт otg-client.py и прошивка, но обновлять саму прошивку MicroPython нужно(если нужно) достаточно редко.
В моём случае для первой прошивки пришлось воспользоваться устройством USB<->UART и программой esptool (которая записывает прошивку). Для исправления проблем конечно пришлось скачать и esp-sdk, micropython, yaota8266 поковыряться в C коде поискать решения на github и собрать. Но это вовсе не означает что MicroPython плохое решение, просто оно пока не доведено до идеала.
+1
Я не в коем случае не имел ввиду что MicroPython — это плохо. Нет.
Просто меня удивило то, что Вы говорите что ставить Arduino IDE это «лишнее телодвижение», но при этом Вы установили кучу всего =)
Плюс добавлю то, что на Windows по дефолту нет Python, а это значит что его нужно установить, а установить Python на Windows, по моему это труднее чем установить Arduino IDE.
P.S. Сам люблю и уважаю Python. Но для работы с МК, мне кажется Python это слишком топорно что ли.
Просто меня удивило то, что Вы говорите что ставить Arduino IDE это «лишнее телодвижение», но при этом Вы установили кучу всего =)
Плюс добавлю то, что на Windows по дефолту нет Python, а это значит что его нужно установить, а установить Python на Windows, по моему это труднее чем установить Arduino IDE.
P.S. Сам люблю и уважаю Python. Но для работы с МК, мне кажется Python это слишком топорно что ли.
+1
+100500
А когда код внутри устройства, придется долго вспоминать, что он делает и как туда попал.
Если есть доставка прошивок по ОТА (есть какой-то сервер), не вижу никаких проблем в организации репозитория для исходников и CI для сборки/упаковки прошивок.
А при необходимости внести корректировки придётся мучительно вспоминать, где лежит код, и снова устанавливать ПО Arduino.
А когда код внутри устройства, придется долго вспоминать, что он делает и как туда попал.
Если есть доставка прошивок по ОТА (есть какой-то сервер), не вижу никаких проблем в организации репозитория для исходников и CI для сборки/упаковки прошивок.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Программируем проходной выключатель. MicroPython на esp8266 (sonoff) с OTA. Часть 1