Софт majordomo для организации умного дома
Содержание:
- Время/интервалы
- Ещё пару моментов, о которых нужно знать
- 4.5 Что значит “связанный” объект/свойство/метод?
- Запланированные задачи и события
- Функции профиля
- Компоненты системы MajorDoMo
- Работа с объектами
- Сервера «умного дома»
- 1.6 Оправдана ли покупка всего оборудования для использования в системе с экономической точки зрения?
- 4.6 Что такое «чат системы», «командная строка», «консоль»?
- YOUR PERSONAL ASSISTANT
- Negotiate the best deal
- How It Works
- How much it costs
- What you get
- Frequently Asked Questions
- «Умные» устройства
- Функции и возможности
- Что это такое
- Функции и характеристики MajorDoMo
- Предназначение, функции и возможности системы MajorDoMo
Время/интервалы
time() — возвращает текущее время в формате timestamp.
timeConvert($tm) — конвертирует время из hh:mm в формат time() на сегодняшнее число
timeNow($tm) — возвращает в текстовом виде время типа «16 часов 40 минут». Если $tm не задан, то возвращает текущее время. $tm в формате time.
isWeekEnd() — выходной да/нет = 1/0
isWeekDay() — будний день да/нет = 1/0
timeIs($tm) — проверяет совпадает ли текущее время с передаваемым в формате hh:mm
timeBefore($tm) — сравнивает время $tm (hh:mm) и текущее. Если текущее меньше, то 1 иначе 0
timeAfter($tm) — сравнивает время $tm (hh:mm) и текущее. Если текущее больше, то 1 иначе 0
timeBetween($tm1, $tm2) — проверяет входит ли текущее время в заданный интервал (каждое hh:mm, причем $tm1 может быть больше чем $tm2, например 23:00 05:00)
recognizeTime($text) — функция пытается из фразы извлечь конкретное время/дату. Например $text может быть «завтра в 9:30» или «через 5 минут»
При вызове любого метода (но не сценария!) доступны переменные:
$prevRun — время последнего вызова (в формате timestamp)
$prevRunPassed — сколько секунд прошло с последнего вызова
$this — Указатель на себя. Используется в методах классов. Например:
PHP
$this->setProperty(«status»,1); // устанавливает свойство status в 1, объекту для которого вызван
1 | $this->setProperty(«status»,1);// устанавливает свойство status в 1, объекту для которого вызван |
Ещё пару моментов, о которых нужно знать
1. Элемент «Объект»
Я специально не стал задерживаться на этом элементе при описании элементов меню. Его так же нет на скрине. Это всё обусловлено тем, что элемент может быть крайне разнообразный. От простой строчки текста до мощного виджета с элементами управления. По факту он чем-то похож на html-блок. Там те же прелести HTML/CSS/JS, с одной лишь разницей — код оформления данного блока пишется в Объектах на вкладке Шаблон Класса. Благодаря этому элемент становится доступен для вставки не только в меню, но так же в сцены и дашборд.
Как он создаётся — не буду отдельно останавливаться, но скрины элементов всё-таки приведу. Найти код элементов вы сможете в соответствующей ветке на форуме…
Пример термостата (код, к сожалению не нашел)
Пример виджета с информацией о пользователе (класс Users, ).
Пример виджетов комнат (класс Rooms, ).
2. Объекты поле выбора (radio, select)
При настройке данных полей допускаются следующие записи в поле данные:
-1|Молчать
0|В лог
1|Говорить
1 |
-1|Молчать |Влог 1|Говорить |
При такой записи в полях выбора будут значения справа от черты, а в свойство будут попадать значение слева от черты. Таким образом можно избавиться от дополнительных преобразований в вызываемом методе. В некоторых случаях это вообще может избавить от написания метода.
Ещё одно применение Поля radio — его можно использовать как альтернативу выключателю, если у него 2 состояния.
0|Выкл
1|Вкл
1 |
|Выкл 1|Вкл |
Тут появляется возможность изменить надписи Выкл Вкл на более оригинальные — Да/Нет, Включено/Выключено и т.п. В общем область применения стандартных элементов ограничивается только фантазией).
3. Динамический повтор (Smart Repeat)
Не многие им пользуются (не всегда удобно), но порой очень выручает. Объяснить что это — проще на примере…
Есть у вас класс…пусть будет Relays. Там 16 объектов реле, все одинаковые, только привязаны к разным каналам к примеру. Управляются переключением свойства status в 1/0. Создаём выключатель для 1 объекта в меню, привязываем к статусу. Чтобы создать выключатели для остальных объектов можно, конечно, создавать 16 отдельных пунктов, а можно включить опцию smart repeat в первом. И тогда вы увидите все 16 выключателей у вас в меню (хотя создан по факту будет только 1. Для удобства понимания какой к чему относится — можно, к примеру, создать классовое свойство name, и вписать в каждом объекте в это свойство название выключателя (к примеру «Свет в зале», «Свет на кухне» и т.п.) ну а в названии объекта указать всё ту же конструкцию %Объект.name% чтобы значение из поля name отобразилось в заголовке выключателя.
4.5 Что значит “связанный” объект/свойство/метод?
В различных частях системы существует функционал “привязки” того или иного элемента с объектом, его свойством или его методом. Объекты являются основой хранения данных системы, а так же описанием функций работы с этими данными. Именно поэтому большинство модулей так или иначе ссылаются на объекты.
Например, элемент меню типа Выключатель используется связанное свойство для хранения данных о своём последнем состоянии, а так же метод объекта, как действие, которое надо выполнить после изменения состояния. С другой стороны, модули работы с оборудованием так же используют связанные свойства и объекты для хранения данных, полученных от соответствующих электронных устройств.
Например, привязав свойство какого-то объекта к свойству выключателя в модуле ZWave можно обращаться к этому свойству для получения последнего состояния физического выключателя, а так же использовать это свойства для установки значения (включения нагрузки), таким образом создаётся прозрачная двухсторонняя связь между физическим устройством и объектом системы MajorDoMo. Одно свойство объекта может быть привязано к нескольким элементам, так, если рассматривать предыдущие два примера, то можно объединить их в один, когда и для привязки выключателя в меню и для привязки выключателя ZWave мы используем одно свойство. В таком случае мы получаем управляемый через меню физический выключатель.
Запланированные задачи и события
AddScheduledJob(‘title’,’commands’,$datetime, $expire=60); — $expire в секундах
ClearScheduledJob(‘title’); — может использоваться маска типа «title%»
SetTimeOut(‘title’,’commands’, $timeout); — $timeout в секундах (аналог AddScheduledJob(‘title’,’commands’,time()+$timeout));
ClearTimeOut(‘title’); — аналог ClearScheduledJob(‘title’);
timeOutExists(‘title’); — возвращает идентификатор запланированной задачи (или 0, в случае отсутствия)
registerEvent($eventName, $details=»,$expire_in=365); — регистрация события $eventName
registeredEventTime($eventName); — возвращает время последней регистрации события $eventName (-1 если еще не было такого события)
Функции профиля
Необходимую информацию о сервисе «Majordomo» можно получить на главной странице www.majordomo.ru. На нем указана характеристика компании, ее деятельность, период основания, доступные услуги.
Ниже пользователи могут ознакомиться с пакетами, которые доступны к подключению. Но предварительно стоит рассмотреть условия и особенности их использования, тарификация, стоимость за месяц и другие важные нюансы.
После приобретения услуг и подключения клиент получает доступ к аккаунту. В нем он может выполнять ряд действий:
- Просматривать информацию относительно подключенного пакета;
- Проверять срок действия;
- Вносить платежи за использование услуг;
- Изменять тариф;
- Проводить переподключение;
- Пользоваться дополнительными услугами;
- Узнавать об акциях, бонусах, выгодных предложениях;
- Проводить регистрацию доменов;
- Продвигать и настраивать рекламу.
Компоненты системы MajorDoMo
Основное понятие, вводимое цифровым домом «MajorDoMo» – объект, множество которых в свою очередь делится на различные классы. И каждый из них имеет свои свойства и методы взаимодействия. К примеру, класс «лампочки», в который могут относиться объекты «люстра в зале», «подсветка зеркала», «свет на кухне». У каждого есть свойство «статус» со значением «включено» и «выключено», а также метод «зажечь» и «погасить».
Это наиболее простой вид объяснения разделения всего комплекса связанного оборудования в пределах понятий MajorDoMo. То есть, методы и свойства распределяются в зависимости от класса объекта и принадлежат только подобным ему.
Объекты
Объект MajorDoMo в изначальной своей, аппаратной форме –это контроллер с возможностью связи между управляемым устройством или датчиком и центральной системой, на которой находится программный комплекс MajorDoMo.
В качестве аппаратной составляющей выступает как оборудование самостоятельной сборки, так и выпускаемое некоторыми производителями уже в комплекте, к примеру фирмой Xiaomi. «Умный» дом MojorDomo поддерживает массу протоколов обмена – MQTT, Z-Wave, Broadlink (без возврата состояния) и множество других.
Классы
Как уже говорилось, класс объединяет объекты одного типа. К примеру, класс «выключатели» с состояниями (включено/выключено) и двумя методами (включить/погасить). Или класс «датчики движения» со свойством, у которого значения изменяются в пределах «присутствует движение/нет движения».
Есть и возможность дополнительного разветвления в одной общности – введение подкласса. Самым понятным примером станут выключатели. Бывают контроллеры света, которые не только умеют включать и выключать напряжение, но и плавно его изменять. То есть в парадигме понимания системы умного дома мажордомо у класса «выключатели» конкретного типа есть еще и дополнительное свойство «яркость». В общем виде можно расписать эту взаимосвязь следующим образом:
Класс «выключатели» |
Свойства: Статус = включен|выключен Методы: Включить|Выключить |
||
«Свет в кухне» |
|||
«Свет в прихожей» |
|||
«Свет в ванной» |
|||
Подкласс «ВыключателиСДиммером» |
Наследуемые свойства: Статус = включен|выключен Наследуемые методы: Включить|Выключить собственное устанавливаемое свойство: Яркость = значение |
||
«Свет в спальне» |
|||
«Свет в зале» |
Свойства
Для большинства устройств в пределах «умного дома» характерно не только следование указаниям контролирующей части, но и возврата своего состояния. Это и есть свойство объекта.
Кроме того, параметрам можно устанавливать значения, которые будут возвращаться в устройство. К примеру, у класса «кондиционеры» можно устанавливать значение свойства «температура», которое будет обрабатываться самим кондиционером, в зависимости от которого он и будет поддерживать режим работы.
Методы
В рамках системы, «методы» — это те управляющие действия, которые могут быть произведены с каким-либо входящим в ее состав устройством. К примеру, у класса «выключатели» это «включить»| «выключить», у «двери» – «открыть»| «закрыть» и тому подобные.
Работа с объектами
addClass(‘ESP8266’); // Создаем класс
addClassObject($class, $objName); — Создать объект от родительского класса. Передаются строки$obj=getObject($name); — получает объект по имени $name. с полученным объектом можно работать используя следующие методы:
$obj->callMethod(‘method_name’,$params); $obj->setProperty(‘property_name’,$value);
$obj->getProperty(‘property_name’);
$obj-> description; Доступ к описанию объекта
$this->object_title; — Доступ к имени объекта
callMethod(‘Object.Method’, $params); — вызывает метод объекта с заданными параметрами (последнее указывать не обязательно). Параметры передаются массивом, например array(«value»=>0)
PHP
$command=’Сколько время’;
callMethod(‘ThisComputer.commandReceived’,array(‘command’=>$command));
1 |
$command=’Сколько время’; callMethod(‘ThisComputer.commandReceived’,array(‘command’=>$command)); |
cm — альтернативное имя предыдущей функции
$value=getGlobal(‘Object.Property’); — получения значения свойства объекта
gg — альтернативное имя предыдущей функции
setGlobal(‘Object.Property’,$value); — установка значения свойства объекта
sg — альтернативное имя предыдущей функции
$objects=getObjectsByClass(‘class_name’); — возвращает массив объектов указанного класса в виде название.Пример перебора объектов в цикле и установки значения свойств:
PHP
$objects=getObjectsByClass(«class_name»);
foreach($objects as $obj) {
setGlobal($obj.».property_name»,1);
}
1 |
$objects=getObjectsByClass(«class_name»); foreach($objectsas$obj){ setGlobal($obj’TITLE’.».property_name»,1); } |
getObjectsByProperty($property_name,$condition=,$condition_value=); — возвращает массив названий объектов, имеющих свойство $property_name. опционально можно задать условие, под которое попадает значение. Условия могут быть == (или =), >=, >, <=, <, <> (или !=)
Сервера «умного дома»
Мажордомо
Сайт проекта MajordomoПреимущества:
- Ориентировано в основном на бывший СССР, т.к. поддержка на русском.
- PHP знаком многим.
- Много модулей, ориентированных на доступные в экс-СССР сервисы и железки.
- Есть образы под Raspberry Pi
- Мультиплатформер: Линукс-Винда-АРМы
Недостатки
- Установка по инструкции — не всегда дает результат, даже если ты систему переставлял сто раз до этого.
- Образ под Малину имеет некоторые модули, которые автор образа поставил до того, как накатал образ…
- База для системы разворачивается через PHP MyAdmin…
- Некоторые модули давно не поддерживаются, некоторые кривовато написаны и могут загнать процессор под 100% нагрузку, при том, что вроде как всего раз в час получают какую-то информацию…
- «Защита? Какая защита?! Умный дом не должен иметь доступа из инета!»
Home Assistant
Плюсы
- Просто ставится.
- Из коробки подхватывает сразу как МиХоум устройства, так и имеющие прошивку ESPHome.
- Довольно гибкая настройка логики без программирования как такового.
- Мультиплатформер: Винда, Линь, АРМы
Минусы
- С документацией напряг, особенно на русском.
- Концепция настроечных файлов на начальном этапе слегка напрягает.
- Заточенных под Яндекс погоду, курсы валют и некоторые «местные» сервисы модулей нет, или я их пока не нашел…
1.6 Оправдана ли покупка всего оборудования для использования в системе с экономической точки зрения?
Одна из функций подобных систем, это экономия расхода энерго-ресурсов и при правильной настройке и установке эта экономия начинает ощущаться в самое ближайшее время после ввода системы в эксплуатацию. Однако, действительно ли это выгодно надо считать, сопоставляя затраты и итоговую экономию. К сожалению, не всегда можно сделать однозначный вывод об экономическом эффекте. Тем не менее, было бы не правильно рассматривать данный класс систем только как средство экономии. Скорее, экономия это один из положительных эффектов, возникающий на ряду со многими другими — повышение безопасности, комфорта и качества жизни в целом. Насколько эти плюсы экономически оправданны, каждый решает для себя индивидуально.
4.6 Что такое «чат системы», «командная строка», «консоль»?
- Чат системы — история сообщений от системы, а так же форма ввода команд на естественном языке. Данный модуль доступен в пользовательском интерфейсе и встроен в Меню по-умолчанию. Так же его можно встроить в сцену или обратиться по прямой ссылке /command.php
- Командная строка — средство операционной системы (не системы MajorDoMo) для запуска системных команд. Обычно используется для первоначальной настройки платформы и тонкой настройки операционной системы
- Консоль — встроенная в панель управления MajorDoMo строка ввода (ссылка Консоль в блоке заголовка панели). Данная строка позволяет отправлять инструкции языка программирования PHP. Например, можно там написать say(«Привет»,2); и инструкция будет выполнена, а именно произнесено слово «Привет»
YOUR PERSONAL ASSISTANT
FOR REPAIR ESTIMATES BASED ON YOUR HOME INSPECTION
Negotiate the best deal
Stack the odds on your side during seller negotiations with ZIP Code specific repair estimates based on your home inspection, prepared by industry experts.
Order now and receive yours within 24 hours.
Get your repair estimates
How It Works
Follow a few simple steps to get access to your repair estimates, called a Domoreport, within 24 hours.
1
Create a request list of repairs and credits for negotiations
You can access your Domoreport securely anytime on desktop or mobile, and share access to collaborate with your family or your real estate agent.
Get your repair estimates
How much it costs
$99
24 hour
turnaround
100%
GUARANTEED
SATISFACTION
Receive your repair estimates within 24 of submitting your home inspection PDF. If you’re not 100% satisfied with the Domoreport, you can request a full refund.
Get your repair estimates
What you get
The Domoreport comes complete with all the tools you need to be confident in your purchase.
ZIP Code specific repair estimates broken down by materials and labor
Majordomo’s cost estimates are based on more than 30 years of research on 20,000 project estimates from 35,000 providers of materials and labor across the US. Every Domoreport is reviewed by an industry expert before it’s sent to you.
Prioritized repairs by severity and urgency
At the core of the Domoreport is a list of repairs based on defects identified in the inspection. We tell you where the repairs need to happen, prioritize them, estimate costs, and identify the type of contractors who could do the work – all linked to the page number of the home inspection report.
Integrated request list creator
Build a custom request list of repair requests, credit amounts, and items accepted as-is. Export a professional-looking addendum attachment to use when negotiating with sellers.
All Included Features
Beautiful interactive reports
Repair & maintenance recommendations
Full and detailed analysis of all repairs
24-hour turnaround guarantee
Integrated request list builder
Simple CSV repair list download
Archive old Domoreports
Inspection report securely saved online
Secure unlimited document storage. Learn More
Explore: US, state, county, and city resources. Learn More
Security
Easy and secure built-in sharing. Learn More
Always available: 24 hour access
Lifetime account access
SSL encryption
Easy data input
Simple Inspection PDF Upload
Property photo uploads
Support
Live chat support
Comprehensive knowledge base. Learn More
Zoom support during business hours
Phone support during business hours
Training webinars
Lifetime bug fixes and improvement
Get your repair estimates
Focus on the big picture with condition and repair estimates organized in one easy-to-read report. Learn More
Save time after the inspection, negotiate smarter with sellers, and close more transactions. Learn More
Set your home apart by fixing the biggest issues and earn the trust of prospective home buyers. Learn More
Home Inspectors
The Domoreport finally gives home inspectors an answer to the No. 1 question they get after an inspection. Learn More
Frequently Asked Questions
Absolutely. You can share by adding people during the ordering process and by clicking the share button at the top of the Domoreport. Learn more. We also make it easy to print and share the request list.
«Do you create Domoreports for multi-family properties?»
Yes, but our pricing and timing are different based on the number of units. If you have a multi-family inspection, contact us and we’ll discuss the cost and timing for your particular needs.
«I’m not very technical. Will I still be able to use the Domoreport?»
There’s a comprehensive library of frequently asked questions that will guide you through the Domoreport. There’s also a video tour showing how everything works. And if you get stuck at any point, our team will be happy to assist you at any time.
More questions? Let us help.Contact us or check out our full FAQ.
«Умные» устройства
- Девайс вещь совершенно в себе и управлять им извне не выйдет. Можно только внешним реле отключить или посмотреть энергопотребление. В некоторых случаях — да и фиг с ним… В категорию входят холодильники, микроволновки, чайники, стиралки и т.д. и т.п.
- В принципе девайсом можно рулить извне: ик- или радио-пультом. Тут обычно кондеи и телевизоры. Рулить вроде и можно, но обратной связи нет…
- Устройства с двунаправленной связью — ты дал команду, он отреагировал и ответил. Их мало, но они есть. Просто чаще всего такие устройства идут уже по группе «экосистем» от брендов. Тут в основном висят умные телевизоры и приставки…
Функции и возможности
Сами по себе модули содержат обширные настройки: в соответствующем разделе интерфейса можно, например, указать цвет пользователя, разрешенные ему компьютеры для входа, и так далее.
Электронный «мажордом» способен управлять многочисленными умными устройствами:
- розетками;
- лампами;
- бытовой техникой;
- домашним мультимедиа;
- кондиционерами;
- отопительными системами;
- охранными комплексами;
- инженерным и сантехническим оборудованием, и так далее.
Умеет он взаимодействовать и с интернет-сервисами (например, для поиска новостей). Кроме того, через глобальную сеть обеспечивается удаленный доступ и своевременное обновление.
Для продвинутых пользователей существует возможность дописывать модули и сценарии на языке программирования PHP. В системе также присутствует встроенный визуальный конструктор Blockly, обеспечивающий простое создание алгоритмов:
Комплекс наверняка станет интересен начинающим и продвинутым программистам. Разработка ПО под MajorDoMo не отличается высоким порогом входа, необходимо лишь обладать пониманием языка PHP и некоторых смежных дисциплин (таких, как JS, CSS). С них и следует начинать осваивающим разработку под эту платформу джуниор-кодерам.
Что это такое
Majordomo — свободно распространяемая кроссплатформенная программа, предоставляющая все необходимы инструменты для организации смарт-жилища:
- серверную часть;
- плагины для различного оборудования;
- поддержку сценариев;
- работу с разнообразными существующими протоколами обмена данными.
«Мажордомо» умеет взаимодействовать с умными выключателями, розетками, датчиками и реле. Все элементы настройки и управления сведены в едином простом веб-интерфейсе, устанавливающемся на центральный хаб системы.
Таким образом, MajorDoMo — сервер «умного дома» обеспечивающий согласованную работу прочих его компонентов. Он может быть установлен как на обычный ПК, так и ноутбук или поддерживаемый микрокомпьютер (например, Raspberry Pi, Arduino и прочие). Программа получает данные от сопряженных с ней датчиков и отдает заданные владельцем команды, исполняемые конечными устройствами и контроллерами.
Для понимания работы программы необходимо выяснить ее логическое устройство.
Функции и характеристики MajorDoMo
Основными возможностями систем Majordomo являются:
- быстрая и понятная установка даже для начинающих пользователей;
- поддержка основных платформ (Linux/Windows);
- бесплатное персональное использование вне зависимости от масштабов организации;
- существование сообщества, принимающего активное участие в жизни проекта, разбавляющее его разными интересными нововведениями;
- поддержка всевозможных видов оборудования;
- многоязыковой интерфейс (русский/английский);
- наличие маркета — своеобразного онлайн-магазина, где вы можете приобрести дополнения.
«Мажордомо» является системой адаптации международного уровня. Она может предложить своим пользователям множество приятных бонусов. К ним относятся интеграции с посторонними веб-сайтами и сервисами, мультимедийное управление, уведомления о новоизобретённых новшествах «Умного дома». Majordomo поддерживает модель безопасности с разграничением полномочий пользователей на просмотр информации. Это позволяет каждому сделать настройки конфиденциальности по своему предпочтению.
Список возможностей и преимуществ Majordomo можно перечислять очень долго. Однако основное различие «Умного дома» от обычного вы сможете почувствовать лишь тогда, когда сами окунетесь в этот невероятный мир. Вы самостоятельно будете программировать и регулировать каждый шаг в своей жизни, обеспечите её максимальный комфорт.
Предназначение, функции и возможности системы MajorDoMo
Сила системы MajorDoMo в ее модульности. Все примитивы классов, свойств, методов и объектов вводятся в нее специализированными дополнениями. Для конкретного пользователя это означает то, что ему не нужно знать в каждом, конкретном случае нюансы протоколов обмена устройств или их внутренние свойства или методы. MajorDoMo предоставит единый интерфейс и общность по классам для различного оборудования.
Если возможностей стандартного интерфейса кому-либо не хватит, то можно, в рамках комплекса, дописывать свои части сценариями на языке PHP. Причем обращение к устройствам будет производиться в рамках его синтаксиса и их объектных имен.
Если же кто-то не умеет программировать, то можно воспользоваться функцией создания своих сценариев при помощи внутреннего конструктора Blockly. Это инструментарий так называемого «визуального программирования», когда вместо создания кодовых последовательностей применяются графические их представления, а для построения алгоритма достаточно составить их в необходимом порядке.
Пример кода в Blockly:
Хотелось бы вспомнить и о такой возможности MajorDoMo, как интеграция с компьютерным помощником «Алиса». Благодаря ей, в диалоговом режиме можно задавать расписания включения, управлять оборудованием при помощи голоса или производить еще миллион действий, которые в своей основе будут выполняться в качестве дополнительных, возможностями умного помощника. В общем виде голосовая команда «Алиса. Завтра в 7 утра мигнуть 5 раз лампой у кровати», при правильно настроенной системе, приведет к созданию в расписании аналога представленного выше кода.
Это еще не все, что может MajorDoMo. В рамках системы представлена возможность осуществлять парсинг с других web-страниц. То есть брать данные из сети и использовать их в сценариях оболочки. Это пригодиться может, к примеру, если на синоптическом сайте в прогнозе потепление. Можно настроить MajorDoMo, чтобы в зависимости от этих данных он давал команду на общее или частичное снижение температуры в здании, для избегания общей духоты.