Да, сделал небольшой мануал. Я писал код исходя из следующих определений:
- Физическая кнопка и лампочка принадлежат объекту Light
- Вся работа с железякой MegaD должна быть в отдельном "слое" (клас Megadevice)
- Решение включить или не включить принимается в Light
Итак начнём настройку
1. Настраиваем объекты Megadevice. У меня в квартире будет 3 физических девайса, поэтому надо создать 3 объекта и настроить каждый

настройка каждого

2. Пишем код для методов
2.1. statusChanged - Вызывается из megad.php когда произошло событие на input. По хорошему этот метод надо убрать из класа Megadevice, потому как он должен быть статический. Но система поддерживает только экземплярные методы. Его можно перенести в скрипты. Я пока решил оставить тут. Не буду вставлять код, там есть коментарии как работает:
- Найти конкретный объект девайса по айпи
- Найти Light у которого входящий девайс и порт совпадают
- Вызвать switchPressed. В этом методе Light будет принимать решение
2.2 Метод getOutput. Ему на вход нужна параметры:
- 'output' - номер порта
- 'propertyName' - имя свойства лампочки, к примеру Storeroom.enabled или Playroom.enabled. Мне этот параметр не нравится, но методы не умеют возвращать значения. Надо было крутить или через глобальные переменные, или сразу сказать в какое свойство положить значение. Лучше бы докрутить чтоб методы могли возвращать значение.
2.3 Метод setOutput - тоже 2 параметра 'output', 'value'. К примеру 8, 1 (включить 8 порт). Проверяем (свет должен вкл или выкл)
http://127.0.0.1/objects/index.php?object=MegaD1&op=m&m=setOutput&output=8&value=2
3. На каждую комнату заводим объекты Light

настройка каждого
- В данном примере кнопка и лампочки подключены к одному мегадевайсу, поэтому значения inputDevice и outputDevice совпадают. Но будет у меня случай когда не совпадают
- inputPort где висит кнопка на мегадевайсе
- outputPort где висит лампочка на мегадевайсе

4. Пишем код для методов

Я думаю из описания ясно кто что делает, я опишу только последовательность вызовов
- switchPressed - Базовая реализация очень простая, вызывает toggleSwitch. Некоторые наследники будут менять её
- toggleSwitch - Перечитывает текущее состояние порта на девайсе, чтоб знать наверняка, и потом либо switchOn или switchOff
- switchOn - Просто дёргает MegaD1.setOutput. Ожидается что каждая комната сможет добавить логику и сюда тоже
- В объекте Storeroom метод switchOn перекрыт. Новый метод ставит ещё таймер на выключение (забывают в кладовке тушить свет)

Примеры:
http://127.0.0.1/objects/index.php?object=Storeroom&op=m&m=switchPressed
http://127.0.0.1/objects/index.php?object=Storeroom&op=m&m=toggleSwitch
p.s. К администрации. Нельзя прикрепить больше 3х картинок. Пришлось выкладывать на гугл. Но не факт что я когда то удалю картинки. Можно немного поднять ограничение по кол-ву, но зарезать по размеру например?