Pull to refresh

Comments 22

1. Непонятно зачем в заголовке указан sonoff
Ну ок, в нем есть ESP8266

2.
В процессе ремонта возникла задача сделать проходной выключатель. Конечно же захотелось сделать самым простым и удобным способом, добавив базовые функции управления с телефона.

Странный у вас простой способ.
Достаточно реализовать исполнительное устройство с беспроводным интерфейсом и веб мордой,
и управляйте им откуда угодно.
Но причем здесь проходной выключатель?

3.
в дополнение я решил достаточно подробно описать весь процесс

настолько подробно, что в статье практически нет технических деталей, одна вода.

4.
содержать Arduino board
может всё таки содержать ESP8266 board?

P.S. Я не придираюсь, но не могу понять огромное количество текста на такую простую задачу.

Первая часть состоит из трёх частей
И ужасно форматированный код Python

Я чет тоже немношк офигел с простого проходного выключателя на микроконтроллере.

При замыкании свободного пина на Vcc в микроконтроллере происходит, соответственно, включение или выключение реле


Я так понимаю, знакомство со словами «дребезг контактов» вам только предстоит.
Да, дребезг будет заметен только когда выключатель начнёт отправлять информацию о своём состоянии по mqtt в сеть. В связи с тем, что python по умолчанию складывает irq события в scheduler, это будет достаточно интересно проявляться. Но статья и так получилась загромождённая, вопрос прерываний, либо переход на опрос по таймерам лучше рассмотреть в следующих сериях.
В моих проектах для питания 3.3В хорошо себя зарекомендовал Hi-Link.
UFO just landed and posted this here
Micropython, видимо, изобрели те же люди, что пытаются писать десктопные приложения на javascript?
Вы, видимо, не имели дела с китайскими SDK раз у вас возникают такие мысли.
Мне казалось VS волне неплох.

В MicroPython соблюдать требования PEP-8 необязательно?
Код условий, например, совершенно нечитаемый.

Спасибо за конкретные рекомендации, прочитал PEP-8 (каюсь, первый раз в жизни), поправил.
if (val==2):    self.value=not self.value
else:           self.value=val

Первая мысль при виде этого — «где мой миксер? глаза — вы мне больше не нужны!»
Ещё такое ощущение, что вы все 3 вида комментариев учились использовать.
За что вы так с людьми, которые будут это читать?
Ладно PEP-8, но совесть-то у вас есть?

P.S.: Простите, если я излишне эмоционален. На днях пришлось много Python-кода исследовать в одном проекте заказчика, и я ещё не отошёл от травмы.
Спасибо за конструктивную критику, прочитал PEP-8, привёл в соответствие.

Не очень понял критику про комментарии. Все в соответствии с PEP-8:
1. Один для документирования публичной функции change(),
2. Два «встрочных» на мой взгляд стоят в наилучшем для них месте, ровно как в примере PEP-8,
3. Последний из-за большой длины строки перенёс перед строкой. На мой взгляд комментарий достаточно важен.
Уже лучше. И вы молодец, что адекватно реагируете на критику (пусть даже она действительно была резковата с моей стороны). Я думаю за комментарии вам стоит почитать это руководство.

1. Если документируете, то лучше бы использовать так:
'''
Программное переключение выключателя

:param val: -- Положение выключателя (0 - выкл, 1 - вкл, 2 - переключение)
:type val: int
:rtype: None
'''

2. «Старайтесь реже использовать подобные комментарии.» — цитата из руководства выше, с которой я солидарен. Такой комментарий легко может скрыться, потому что находится за границами экрана + можно его банально пропустить глазами, когда дошёл до конца строчки кода.
3. Вот только так и пишите комментарии.

Ко всему прочему, судя по всему вы забыли, что у вас нет метода .auto(), а есть ._auto(). А если вы ещё проверите код flake'ом, то он ещё может ругнуться на неиспользуемый аргумент v в этой же функции.
Если человек потратил своё время на то чтобы указать на проблемы (пусть даже в грубоватой форме) то глупо их игнорировать.

1. В общем случае согласен, но в моём: «Однострочники предназначены для действительно очевидных случаев»
2. Я считаю, что эти комментарии бесполезны, и очень хорошо если при чтении кода вы их пропустите. Но если неопытный человек видит код работы с GPIO первый раз в жизни, он может споткнуться на этих строках, на встречу ему придут комментарии. См. случай «Впрочем, такие комментарии иногда полезны:» из раздела «Встрочные» комментарии"

Я прочитал руководство PEP-8 и считаю, что моя позиция не нарушает его принципов.

По поводу auto спасибо, действительно схалтурил, впредь буду выкладывать что-то только как минимум после flakes.
Проходной выключатель — имеется в виду что-то вроде этого? Лампа, которой можно управлять с 2 и более мест?
image

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

Вот эскиз того, что мы хотим сделать, зелёном выделено то, что было затронуто в этой статье.



В 1.3 части мы сделали простой выключатель. Можно было бы сделать проходной, но пока не будет работать mqtt не хочется занимать RX, TX. Т.е. дописать работу с остальными выключателями я планировал в самом конце.

хранить где-то прошивки

GitHub для этого был придуман. Если не хотите в общий доступ, то Bitbucket или же тот же GitHub (в нём уже есть бесплатные приватные репозитории).
А при необходимости внести корректировки придётся мучительно вспоминать, где лежит код, и снова устанавливать ПО Arduino.

В чём проблема установить ПО? Я что-то не могу уловить смысла. Не хотите Arduino IDE, ставьте vscode и плагин к нему «PlatfromIO».

Я плохо читал, или так и не нашёл какое ПО Вы ставили для первой загрузки Вашей прошивки?
Если я всё правильно понимаю, то Вы в любом случае ставите какое-то ПО для первой заливки прошивки в МК. То есть исходя из этого, я тогда не совсем понимаю почему Вы так упорно утверждаете что «и снова устанавливать ПО Arduino».
Использовать git (или аналоги) действительно очень удобно, как и использовать удобное ПО для разработки. Но в MicroPython при желании от этого можно отказаться, а в Arduino нет.
Для меня это важный плюс и я написал эту статью для тех, кто считает аналогично, либо кому просто нравится язык Python.

В идеальном случае, если вы купили устройство с прошитой OTG+MicroPython из минимального софта вам понадобится только браузер и доступ к сайту с проектом webrepl (он даёт возможность залесть на устройство, скачать записать ваши python скрипты). Для OTG обновления ещё будут нужны: python, скрипт otg-client.py и прошивка, но обновлять саму прошивку MicroPython нужно(если нужно) достаточно редко.

В моём случае для первой прошивки пришлось воспользоваться устройством USB<->UART и программой esptool (которая записывает прошивку). Для исправления проблем конечно пришлось скачать и esp-sdk, micropython, yaota8266 поковыряться в C коде поискать решения на github и собрать. Но это вовсе не означает что MicroPython плохое решение, просто оно пока не доведено до идеала.
Я не в коем случае не имел ввиду что MicroPython — это плохо. Нет.
Просто меня удивило то, что Вы говорите что ставить Arduino IDE это «лишнее телодвижение», но при этом Вы установили кучу всего =)
Плюс добавлю то, что на Windows по дефолту нет Python, а это значит что его нужно установить, а установить Python на Windows, по моему это труднее чем установить Arduino IDE.

P.S. Сам люблю и уважаю Python. Но для работы с МК, мне кажется Python это слишком топорно что ли.
+100500
А при необходимости внести корректировки придётся мучительно вспоминать, где лежит код, и снова устанавливать ПО Arduino.


А когда код внутри устройства, придется долго вспоминать, что он делает и как туда попал.
Если есть доставка прошивок по ОТА (есть какой-то сервер), не вижу никаких проблем в организации репозитория для исходников и CI для сборки/упаковки прошивок.
Sign up to leave a comment.

Articles