Писать модуль для устройства и, тем более, "рихтовать" PHP задача достаточно нетривиальная и редко необходимая. Модули обычно пишутся под распостранённые и востребованные протоколы, чтобы работать с ними было удобней. Для работы с устройствами можно вполне обойтись и без модулей -- в системе присутствует достаточно продвинутая модель классов/объектов, используя которую можно реализовать взаимодействие практически с любым устройством, до которого можно каким-то образом достучаться и протокол обмена с которым как-то описан -- через сеть, через командную строку, через COM-порт и т.п.akouz писал(а):В GitHub сказано, что MajorDoMo написан на php. Если я правильно понимаю, это означает, что доступ ко всем ресурсам на самом сервере - через сервисы php. Что интерпретатор php предоставляет, то и имеем - доступ к сервисам оси, usb, блютусу, и т.п. - все через него. Верно? Если я хочу подключить свое собственное железо, напимер, через usb, то сначала я должен каким-то образом подрихтовать php, а потом написать"модуль" для MajorDoMo. Однако если, к примеру, мое железо подключается к usb при помощи драйвера класса CDC и появляется в системе как виртуальный Com порт, то мне, наверное, рихтовать php не потребуется, я сразу смогу начать писать модуль для MajorDoMo.
А доступ к ресурсам вне сервера - такой же, как к любым другим интранет/интернет ресурсам. То есть, через IP попадаем на нужную страницу, и уже оттуда вытягиваем информацию в том виде, в каком она там представлена. А поскольку стандартов нет (или есть, может, я просто не знаю?), то каждое устройство выкладывает инфу в том виде, в каком захотелось его разработчикам, поэтому каждое конкретное устройство нуждается в индивидуальной привязке. Поэтому, если я сделаю эзернет-железяку, с которой можно будет общаться при помощи веб-страницы, то особых проблем не будет, так или иначе можно будет написать специальный модуль, который с этой страницы считает инфу и по командам MajorDoMo будет нажимать на этой странице кнопки. Я правильно понимаю?
Например, есть достаточно популярные устройства управления освещением от компании Ноолайт, но для них не создавался отдельный модуль, а был написан класс с методами взаимодействия и каждый может его у себя создать, а потом добавить свои устройства как объекты ну и работать с ними в системе как с любыми другими объектами.
Что касается доступа к ресурсам вне сервера -- приблизительно так как описано. Плюс есть ещё кое-какие сетевые стандарты, работающие не по http. Например, SNMP или MQTT, модули для работы с которыми идут в "коробке".