LINUX.ORG.RU

Homescript — новый открытый движок для умного дома

 , homescript, , smarthome,


3

2

Вышла первая версия Homescript — движка для автоматизации умного дома на Lua

Проект ориентирован на простоту и гибкость: интеграция через MQTT, поддержка Zigbee (Zigbee2MQTT), Frigate и других устройств.

Ключевые возможности:

  • Автоматическое обнаружение устройств.
  • Наглядность. Основа всего — каталог со скриптами, создаваемый при поиске устройств.
  • Скрипты на Lua — легко даже для новичков.
  • Событийная логика: реакция на изменения в реальном времени.
  • Минимальное потребление ресурсов — работает на Raspberry Pi. И не просто работает, а потребляет очень скромную долю памяти и ресурсов CPU.

Homescript — открытая альтернатива сложным системам вроде Home Assistant, без привязки к облакам.

>>> Исходный код

>>> Homescript



Проверено: dataman ()
Последнее исправление: CrX (всего исправлений: 9)
Ответ на: комментарий от windows10

Я бы не сказал

А я сказал: «предпочитает оперировать в рамках собственных умений» — «Как и большинство других людей. И это нормально». Таковы уж люди...

Хотя конечно же все зависит от конечных целей автора или производителя

А цели «рояли не играют». Чего бы люди ни желали, к каким бы целям ни стремились, в итоге они совершенно естественно будут «оперировать в рамках собственных умений». Иначе у них ни черта не получится. Мало хотеть, надо ещё и уметь. Вот люди и...

Ты же не будешь выпускать сетевухи с RS232-разъемом, только потому что у тебя других нет в наличии, не правда ли?

Передёргиваешь...

Somebody ★★★★
()
Ответ на: комментарий от kid

Потому что lua это отсутствие GC

Эмм, когда я успел проморгать упразднение collectgarbage(«cmd») из языка? И lua_gc(L, x, y) из C API???

и event loop.

По твоему, это достоинство? Лажа это, а не достоинство. Лучше не использовать то, что есть - чем пытаться сэмулировать то, чего нет.

Логика домашней автоматизации на lua описывается отлично, никаких подводных камней там нет,

Тооочнааа?? А покажи ка, как будет выглядеть скрипт на LUA, который будет делать простую вещь: при превышении температуры от датчика на кухне на 3 градуса - включать вытяжку на кухне, но если дома нет телефона с MAC: XXXXXXXX - то включать сразу на 2-ю скорость (читай второе реле, для удобства), а если есть - то на первую. А если дома нету вообще никаких телефонов - но температура поднялась на 20 градусов за последние 15 минут, то начинать орать в телеграм/гуделку-перделку по месту. И всё это обмаж гистерезисом, чтоб релюшкой не щёлкало раз 15 секунд. А, и да - ночью вторую скорость на вытяжке не включать, а если вытяжка включена не умным домом - то не выключать автоматически.

Пока ты скриптуешь «нажали кнопку - включили лампочку в сортире», всё прям красиво и хорошо. Как только ты начинаешь задействовать условия - начинаются проблемы. И не дай бог, тебе надо в момент принятия решения поиметь результат со стороны, а не из «умного дома».

в том числе потому что он создавался именно для встраивания.

Откуда ты взял этот бред? Аффтар и co не осилили tcl - «слишком сложный» и в рамках родного бразильского импортозамещения, обкурились идеями Forth написали своё, понятное, родное (С). В условиях 1993 года, когда «640k ought to be enough for anybody» (C) любая фигня, вмещающаяся в один кодовый сегмент - сейчас уже сразу приобретает приставку ultra-nitro-micro-small и «пригодна для встраивания» в что-то, чуть сложнее ардуины. Только вот тут неувязочка, рантайм твоего изделия на go - в десяток раз толще lua+quickjs вместе взятых. А представление данных в Lua (всё есть таблица и к ней мета-таблица) - вызывает тошнотворный рефлекс в попытках написать C интерфейс к интерпритатору. И да, нумерация индексов таблиц с 1 - доставляет отдельно.

Ducktape не особо совместим с nodejs или браузером - это надо будет каждому хейтеру объяснять, почему 99% всего с npm не работает?

А он и не должен быть с ним совместим. Если только синтаксисом. И если отдельные идиоты живут с устойчивой нейронной связью в мозгах вида «js == nodejs» то им дальше, дальше - в загончик с nodejs. Тем более, коннектор к mqtt там есть, построить свою автоматику с играми и профурсетками можно не выходя из nodejs.

Плюсов у js в этом случае нет никаких.

Ты их просто не видишь. А их там есть, начиная с тупо меньшей писанины begin/end на каждый чих, проверки на nil в каждом месте, и заканчивая нормальными regex’пами, поддержкой unicode и нативной поддержкой json. Да, с 64-bit integers там маленько проблема, но на это наплевать, у lua их тоже не было до недавнего времени.

LynxChaus
()
Ответ на: комментарий от LynxChaus

Столько времени, наверное, потратил на написание этого поста… Будь он содержательным и не токсичным, я бы на него даже ответил, но, конечно, не буду. По сути, упомяну только наличие разделяемого между скриптами состояния, чтобы ты сам достроил в голове как реализовать твой «очень сложный» (нет) сценарий.

kid
() автор топика
Ответ на: комментарий от LynxChaus

lua это католический питон который так и остался до 1.5.2 версией с нюансами(атавизмами) которые не отсохли в отличии от питон 3.14

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

в отличии от этого Иерусалимскому фамилии не хватило - как итог успех через встройку в игро-логику очень сильно заморозило эволюцию языка - на «1993-1995» lua/python по сути одно и тоже с различиями в синтаксисе

так что их судьба яркий пример влияния социальных факторов на успех тех или иных технологий\решений

qulinxao3 ★☆
()
Ответ на: комментарий от kid

По сути, упомяну только наличие разделяемого между скриптами состояния, чтобы ты сам достроил в голове как реализовать твой «очень сложный» (нет) сценарий.

Ну так и покажи, раз «оченна проста». А то все вы, убивцы HA - начинаете хорошо, а по выходу - пук-среньк, аффтар забросил своё поделие 5 лет назад. И симптомы у вас одинаковые - ни внятной документации, ни объяснений - а почему собственно так сделано - нет, и не предвидится. т.к. писать доки - «это не задача программиста, я код кодю!».

И под документацией я поднимаю не то, что лежит на shithub’e в readme.md. Это как раз «зажечь лампочку в сортире», только вот непонятно - зачем тут умный дом, если с этим может справиться датчик света/движения за 300 рублей из китая.

А пока что, всем убивцам HA (который толстый, жирный, на пЕтоне, добавить по вкусу), почему-то надо срочно поставить docker, в него какую-то хрень и радоваться. Только вот при наличии докера - зачем в него ставить не HA?

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

LynxChaus
()
Ответ на: комментарий от LynxChaus

Что тебе показать? Сидеть программировать выдуманные тобой сценарии на отсутствующем железе? А зачем?

Ты себе не можешь уяснить одну простую штуку: HA это тоже программирование, просто в мышевозильном стиле и не на Тьюринг-полном языке. Давай посмотрим, что пишут реальные люди на reddit:

I have been programming for 2 decades at this point in a variety of languages, both high and low level, and I have intricate knowledge of python, yet despite this I feel utterly lost when trying to do much of anything in home assistant. I am currently running home assistant OS in a virtual machine on my server.

I have read the documentation on https://www.home-assistant.io/docs/ and have generally tried searching the forums every time I want to use home assistant for something. But it always just ends up being this kinda weird guesswork where I copy paste some stuff from someones yaml file and try to run it and if it doesn’t work I’m fucked. Every time this happens I keep thinking how simple something like this would be to make if only I had my home assistant as a repository and python project that I could open in pycharm or visual studio, have type hints while programming, and click run or debug to test my solutions.

It is not even that I am completely unfamiliar with yaml programming. My server hosts a bunch of services all run through various docker compose files, however I feel like there is a huge difference between docker-compose.yaml, and the yaml’s required by home assistant.

Am I doing something wrong? Is there an alternative to home assistant for people who actually do program?

Безусловно, люди, которые не умеют программировать, будут пользоваться HA и страдать на форумах. Люди, которые умеют писать код, будут пользоваться чем-то ещё — кто-то, вероятно, моим homescript.

kid
() автор топика
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.