Pull to refresh

Comments 29

Azis, отвечающий за свет... Идеальная пасхалочка!

Спасибо, что заметили. :)

установить на Termux proot, под него Alpine и запускать приложение из под Alpine.

Зачем это всё? Почему не запускать приложения просто в термуксе?

Мне близок ход ваших мыслей, но при попытке запуска напрямую я столкнулся с проблемой.
Post "https://api.telegram.org/bot.../getMe": dial tcp: lookup api.telegram.org on [::1]:53: read udp [::1]:53977->[::1]:53: read: connection refused.
Путем поиска, я обнаружил что есть проблема резолва DNS при запуске приложений Go, которые собраны в отличной от Termux среде.
Собирать приложение в Termux среде для меня показалось избыточным, так что я выбрал второй, более простой для меня вариант. Также кратко описывал это в блоке "Настройка сервера".
Благодарю!

Таки очень рекомендую посмотреть в сторону Tasmota

С одной стороны — все уже придумано, настроено и работает, esp32 прошивается прямо из браузера. Уже из коробки поддерживается куча периферии. С другой, если хочется странного — то можно даже свою прошивку скомпилировать из готовых частей.

Никакой возни с поиском библиотек поддержки датчиков и тп для esp — просто воткнуть в плату, указать в интерфейсе номера пинов — и все само подтянется

А для умного дома не нужна последняя Малинка с 4 гигами и двадцатью портами, хватит маленькой Зеро первого поколения, они новые выпускаются до сих пор, никакого авито не надо.

Я попробовал несколько подобных решений для esp32 — Tasmota наиболее продуманная и развитая, документации — зачитаться можно.

По поводу Tasmota - добавил себе в закладки. Конечно, получится более объемная система, с поддержкой большего количества устройств. Но и сложность возрастет. В любом случае, интересно. :)

По поводу Малинки - Zero, да, была на рынке. Но даже так, цена больше чем у завалявшегося дома планшета. Одной из основных целей было: минимальными вложениями запустить тестовый стенд. Как и получилось, докупил только розетку.

Спасибо!

Тасмота тем и хороша — что ничего «более обьемного» там не будет. Все предельно упрощено и уже готово. Надо только подсоединить периферию, дальше она сама

Я, конечно, не спорю. Но, если я правильно понял, в таком случае все же придется что-то докупать в мой первичный набор. Контроллер ESP8266, корпус, какой-то набор для прошивки, бп, и пр. Или просто готовый блок с ESP8266, на который можно будет поставить Tasmota.

Все зависит от задач и целей, ваша идея наверняка является для кого-то лучшей. Возможно и мне доведется с до этого решения когда-то дойти. :)

Да что там покупать то?
В качестве корпуса любая условная мыльница сойдет, Esp32 wroom 32 на али стоит меньше 300 рублей, если хочется прям завтра — то условном на озоне или авито — рублей 500

Готовые блоки делает Сонофф, чутка дороже, но уже в корпусе, с удобными выводами и тд тп, ну тысяча где-то, максимум.

Плата, программатор, та же мыльница сложатся в какую-никакую, а всё же сумму.
У меня была цель обойтись тем минимумом, что у меня был. И я реализовал систему из итого, что было у меня. Так и получился этот пост.

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

Tasmota и ESPHome можно прошивать и всякие готовые устройства. Лишь бы чип внутри был подходящим. Я недавно нашёл дома розетку Viper и перешил. А то чё она работает в какой-то своей экосистеме.

если я правильно понял, в таком случае все же придется что-то докупать в мой первичный набор. Контроллер ESP8266, корпус, какой-то набор для прошивки, бп, и пр. 

Точно не уверен, но думаю, что все перечисленное у Вас уже есть. Розетки Shelly PlugS скорее всего построены на esp8266 и если заморочиться можно их перешить под Tasmota или что другое. Из спецсредств потребуется только usb-com переходник.

Хотя если Вы не привыкли работать с arduino проектами, Вам это может быть и не очень интересно. Тут каждому свое. ))

А Вы знаток! Без шуток. Обнаружил что Shelly Plug S, вероятно, можно прошить Tasmota.
И, вероятно, можно даже через API, по воздуху. Без подключения переходников.

Пробовать пока не буду, но на заметку возьму.
Спасибо!

Откройте для себя mqtt. Ну и по поводу малинки... Есть апельсина, банана. И прочее. Функционально плюс минус тоже, но раза в 2 дешевле малины. Накатывает армбиан, мкутт сервер туда и погнали через него управлять устройствами. Не надо мучаться с апи и прочим, достаточно знать имя устройства и его конечные точки, которые для каждого типа индивидуальны.

Да, до MQTT, вероятно, дойду) Про апельсину, тоже писал под спойлером в этом блоке.
Спасибо!

Ну если хотелось просто и без специальных хабов, то можно было просто купить любые WiFi-розетки той или иной экосистемы. MiHome, Tuya, что угодно ещё. Они бы просто подключались через роутер к своему облаку. Да, не работает без интернета. Но и ваш бот тоже. Есть зависимость от чужого облака — это да. Но не факт, что это хуже, чем сервер на планшете дома — зависит от условий.

Согласен, вы описываете хорошее и простое решение "из коробки".
Когда я задумывался над управлением, мне, все же, нравилась возможность интеграции устройств разного типа, без жесткой привязки к бренду.
Как и получилось: при желании, я могу развивать систему и делать интеграции с разными вендорами устройств.
На текущий момент, кроме Shelly, добавлена поддержка Magic Home LED Controllers.
К слову, я проверил недавно, пока модерировался пост, реле Shelly 1 - работает с моей системой "из коробки".

По поводу отвязки от облаков и интернета - такой цели не было. Но, если возникнет, можно достаточно бытро написать REST API, простой фронт (который может крутиться на том же планшете или микропк) - все возможно, при желании.

Интеграция с Telegram - помогает не задумываться об установке и настройке дополнительных приложений на телефоны в семье. Достаточно просто добавить права на пользователя, скинуть ссылку на бота - и оно работает.

Также стоит отметить, что для меня это, в том числе, учебный проект. С помощью подобных проектов, я часто тренируюсь на темы исследования и программирования. В этот раз я понял, что мне есть о чем рассказать. Так получился этот пост. :)

Спасибо!

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

Здорово, HA в сети находил. И, согласен, для кого-то больше подойдет такой вариант. Возможно, и до него у меня руки дойдут.
Кстати, нашел очень годный пост по настройке HA в очень схожих условиях. :)

С другой стороны, свой "самодельный самокат" у меня уже есть. И я на нем даже катаюсь. Так что, погляжу, что будет дальше по интересу и потребностям.

Автору респект! Очень грамотно все сделано, еще и работает))
Homeassistant тоже однозначно +. Особенно для среднестатистических юзеров, у которых фраза "установить на Termux proot, под него Alpine и запускать приложение из под Alpine" вызывает непреодолимое желание пойти покурить (вроде меня).
Могу порекомендовать связку homeassistant + esphome. Из затрат 2тыр на минипк с авито, 200 р на esp-реле оттуда же. Можно обойтись и без 2 тыр, ha ставится на то что есть под рукой не старше 15 лет, есть кто ставит и на китайские планшеты, роутеры и прочее.
По времени - вечер ставим ha и разбираемя что к чему, вечер на прикручивание esphome в 2 клика и на пощелкать реле.
Как итог получаем полноценный сервак умного дома, совместный удаленный доступ, telegram бот, мобильное приложение, gui, управление реле по погоде на марсе, прошивку по воздуху, дальше можно долго продолжать)
Кстати упомянутая возможность интеграции устройств разного типа, без жесткой привязки к бренду это вот прям можно.

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

Благодарю за позитивный фидбек и развернутый комментарий! :)

Понимаю, когда заимствуешь готовое решение всегда приходится заимствовать привычки автора, а сам делаешь проект заточенный именно под твои задачи.
Интересно насколько в предложенной Вами связке важен промежуточный сервер на планшете. Я имею в виду нельзя обойтись без него возложив функции взаимодействия с telegram api на сами исполнительные устройства?
Конечно придется писать прошивку для той же умной розетки, но взамен получаем очень интересное устройство для несложной автоматизации - избавляемся от ненадежного звена в цепи и получаем что кроме самого устройства нужен будет только роутер и телеграм, а это есть у каждого.
Интересно будет узнать Ваше мнение.

С Telegram API работа происходит в режиме handling, то есть мы слушаем апдейты (сообщения), которые принимает бот.
Это накладывает ограничение на количество консьюмеров (слушателей) этих обновлений.
То есть, в случае, когда само устройство будет взаимодействовать с Telegram API, нам, вероятно, придется использовать своего бота для каждого отдельного устройства.

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

Если я не до конца ответил на ваш вопрос, или у вас появились новые, напишите. Спасибо за интересный вопрос!

В целом все понятно, спасибо. То есть такой способ вполне жизнеспособен для простой автоматизации на одно-два устройства чтоб не возиться с сервером.

Нашел пару примеров под esp8266 и arduino с управлением через бот - вроде не сложно. Попробую реализовать на досуге - как раз хочу сделать независимую перезагружалку основного сервера на даче. А то иногда "я что-то нажала и все пропало", а автоматизация в виде звонка соседу чтоб дернул рубильник на доме - это такое себе)

Расскажите, что получится. Интересно)

Кратко поделюсь решением своих задач:

  • включать электроподогрев двигателя машины по расписанию (через уличную розетку), при необходимости управлять вручную

  • дистанционное открывание/закрывание ворот с телефона одной кнопкой

  • не использовать облачные решения и сим-карты (для безопасности)

Железяки:
  • роутер с OpenWRT (белый IP, Wireguard-сервер, пакеты: luci-app-commands, python3, python3-requests, cron)

  • WiFi-реле Sonoff miniR2, цена 500р

  • телефон Android. ПО: wireguard, Firefox Focus

Что сделано:
  • создана отдельная подсеть (VLAN) для IoT устройств без выхода в инет.

  • Реле переведено в DIY-режим (см. документацию производителя), при этом отключается доступ в облако, управление и обратная связь осуществляется через HTTP-POST запросы

  • при необходимости делается пропил дремелем между контактами +перемычка (ссылка) для получения гальванически развязанных контактов (нажимать кнопки)

  • У производителя реле есть примеры POST запроса, пришлось лишь перевести их на Python для запуска на роутере (пакет luci-app-commands предоставляет гиперссылки для любых кастомных команд). Открыл с телефона ссылку - команда выполнилась.

  • для удобства открытия ссылок вынес их через Firefox Focus на рабочий экран телефона.

  • реле подогревателя интегрировано в огромную дождезащищенную уличную китайскую розетку отменного качества (ссылку к сожалению не могу найти). Настроен обычный режим - удержание последней поданной команды (вкл или выкл).

  • реле ворот - соответственно в модуле ворот на контактах последовательного управления (открыть-остановить-закрыть-остановить). Через http запросы настроен импульсный режим (при подаче команды включить - реле замыкается на 0.5сек - имитация нажатия кнопки).

  • cron на роутере настроен на авто включение и выключение подогрева

скрипты Python
отключить подогрев:
import http.client
import json

conn = http.client.HTTPConnection("192.168.100.201", 8081)
payload = json.dumps({
  "deviceid": "10015a6cdd",
  "data": {
    "switch": "off"
  }
})
headers = {
  'Content-Type': 'application/json'
}
conn.request("POST", "/zeroconf/switch", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))

включить подогрев:
import http.client
import json

conn = http.client.HTTPConnection("192.168.100.201", 8081)
payload = json.dumps({
  "deviceid": "10015a6cdd",
  "data": {
    "switch": "on"
  }
})
headers = {
  'Content-Type': 'application/json'
}
conn.request("POST", "/zeroconf/switch", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))

посмотреть статус реле:
import http.client
import json

conn = http.client.HTTPConnection("192.168.100.201", 8081)
payload = json.dumps({
  "deviceid": "10015a6cdd",
  "data": { }
})
headers = {
  'Content-Type': 'application/json'
}
conn.request("POST", "/zeroconf/info", payload, headers)
res = conn.getresponse()
data = res.read()
decoded = data.decode("utf-8")
#print(decoded)
dct = eval(decoded.replace('false', 'False'))
#print(dct, sep='\n')
print(dct['data']['switch'])

активация импульсного режима:
import http.client
import json

conn = http.client.HTTPConnection("192.168.100.201", 8081)
payload = json.dumps({
  "deviceid": "",
  "data": {
      "pulse": "on", 
      "pulseWidth": 1000
  }
})
headers = {
  'Content-Type': 'application/json'
}
conn.request("POST", "/zeroconf/pulse", payload, headers)
res = conn.getresponse()
data = res.read()
decoded = data.decode("utf-8")
#print(decoded)
dct = eval(decoded.replace('false', 'False'))
print(dct, sep='\n')
#print(dct['data']['switch'])

другие примеры на сайте производителя

Выглядит интересно, как рабочее решение.

Спасибо за отклик!

Интересно конечно посмотреть на такие костыли и моё уважение, но сам буду собирать максимально простую и автоматизированную схему, и чтоб "умная" Алиса могла управлять всем этим счастьем.

Справедливости для — именно это и будет называться «умный дом». Потому что, если у розетки с удаленным управлением нет автоматических сценариев — она не «умная», а всего лишь — " с дистанционным управлением"
Sign up to leave a comment.

Articles