Сначало с положительных эмоций.
ErmolenkoM писал(а):
Вернемся к Алисе.
То, что вы предлагаете - очень хорошо и здорово. Но. Этим никто не сможет пользоваться. Ибо - не нужно. Покажите мне коннект с настолько единообразными объектами, что бы их получить перемножением классов. Нет? Так что это только теория.
Поймите, я не против сделать проект лучше. НО! Вы заказываете сложную разработку, на мой взгляд, бесполезного функционала. Время
sergejey можно потратить с большей пользой (надеюсь sergejey не обидится за мой таймменеджемент

).
Согласен с Вами что в случае если Вы правы то тратить время Сергея на разработку бесполезного функционала некрасиво. Пусть это время лучше будет на благо общества а не чьито бредни, я имею себя ввиду в случе если Вы правы.
Поверьте все то что я написал и пытался донести не ради своих амбиций или целий, а тоже ради этого проекта который мне так пришол по душе.
Факт хотябы в том что если такой модуль появиться, я уже успею все вручную набить и собственно лично мне уже не нужно будет.
В связи с Вашими убеждениями и моими чтобы не спорить по напрасну, а главно не потратить ценное время Сергея на безделушки, и все таки найти правду думаю лучше что то типа голосования сделать и спросить мнение у большенства ради выяснения истины.
ErmolenkoM писал(а):
... сотни форм, тысячи объектов, миллионы записей в базе Oracle.
Каждую крупичку информации оператор завел вручную. Не по тому что программист поленился сделать "матричный размножитель" или не знает ООП. Поверьте - знает.
Каждая крупичка информации (свойство, объект, ...) уникальна и неповторима. Она не может быть получена на основании имеющихся данных. А если и была получена от родителя информации, то может быть изменена и дальше живет своей жизнью. Эх, что-то я не о том. 3-я нормальная форма она и в акцессе 3-я НФ.
Я уважаю Ваш опыт в программировании. Он намного больше чем мой, исходя из сказанного Вами. И я допускаю мысль что я в чем то заблуждаюсь.
Но хотел бы всетаки акцентировать Ваше внимание на МДМ не как целиковый продукт, а на конкретную часть его. А именно на добавление датчиков и активаторов.
Во первых каждый програмный продукт может быть похож чемто на другой и по своему или целиком уникален.
Во вторых есть разные, и в том числе в ООП PHP, разные стили и подходы к программированию.
В третьих Вы совершенно правы что как в Вашей программе так и в МДМ куча классов прописанных руками а не генераторами и путем клонирования. И каждый класс по своему уникален и живет своей жизнью.
Но речь идет о переделки всего програмного продукта а токль об меленькой, с моей точки зрения, опции. Почему маленькой: я посмотрел файл с классом добавления и выводом в админке классов и объектов. Там не так много кода, из чего сделал выводы что часть задачи уже написанно, надо только дополнить функционал, и одну лишь страничку где галочки кого с кем скрестить. Но это мой не такой опытный взгляд как Ваш, не настаиваю на 100% верности моего мнения. У меня и в правду мало опыта в программированиии, так любитель. Ну и есть свой програмный продукт, узконаправленный. Я там выступал как заказчик и руководитель проекта. А весь код писал "наемник". Но это по работе. А МДМ для души и для дома.
Помоему я описал в длинном посте почти подробно последовательность действий для добавления сенсоров в систему общепринятой в этой экосистеме.
Поправте пожалуйста если в том описании я что-то написал неправильно. Я еще пропустил множественные тыки мышкой по кнопкам добавить, сохранить ...
И из нее очевидно что каждый сенсор будь он активатором или датчиком, я имею ввиду не класс где прописанны повидение и св-ва а объекты, является скрещенным из названия комнаты с типом сенсора. Примеры из топ 5 Connect:
Сергей, только не обижайтесь, не замарачивался и просто пронумировал, видимо ему удобнее по номеру понимать что где.
Объекты класса inhouseMovementSensors:
sensorMovement11 - Датчик движения в мастерской
sensorMovement10 - Датчик движения на кухне
sensorMovement9 - Датчик на веранде
Методы объекта:
statusChanged
sensorMovement8 - Rf датчик в гараже
Методы объекта:
statusChanged
sensorMovement7 - Датчик в зале (область гостиной)
sensorMovement6 - Датчик движения в топочной
sensorKey1 - Датчик открытия двери в гараж из топочной
sensorMovement5 - сенсор движения на веранде (не используется)
sensorMovementRemote2 - датчик на TPLINK
sensorMovement3 - датчик движения в спальне
sensorMovement4 - Датчик движения в ванной
sensorMovement2 - Датчик движения в зале
webCamMotion1
webCamMotion2
sensorMovement1 - Датчик движения в коридоре
Объекты класса NooRemotes:
NooKey63 - Датчик давления в контуре
NooKey62 - Датчик давления в контуре (пониженное давление)
NooKey61 - Датчик давления в контуре (повышенное давление)
nooButton5C - пульт-брелок ключи Сергея (кнопка C)
Методы объекта:
onLoadPreset
nooButton5B - пульт-брелок ключи Сергея (кнопка B)
Методы объекта:
onSwitch
nooButton5A - пульт-брелок ключи Сергея (кнопка A)
Методы объекта:
onSwitch
nooButton4C - пульт-брелок (кнопка C)
Методы объекта:
onLoadPreset
nooButton4B - пульт-брелок (кнопка B)
Методы объекта:
onSwitch
nooButton4A - пульт-брелок (кнопка A)
Методы объекта:
onSwitch
nooButton33 - кнопка 3.3
nooButton31 - кнопка 3.1
Методы объекта:
onSwitch
nooButton32 - кнопка 3.2
nooRemote1 - кнопка включения
Методы объекта:
onSwitch
onRollColor
onSwitchColor
nooButton23 - кнопка 2.3
nooButton21 - кнопка 2.1
Методы объекта:
onSwitch
nooButton22 - кнопка 2.2
Методы объекта:
onBrightBack
onSwitch
msh555 подтверждение моих слов о скрещевании названий:
Объекты класса NooLiteDimm:
NooLiteD_ZalBra - Светильник в зале (10)
NooLiteD_TualetVit - Вытяжка в туалете (8)
NooLiteD_TualetTP - Теплый пол в туалете (9)
NooLiteD_TualetTop - Люстра в туалете (7)
NooLiteD_KuhnyaVit - Вытяжка на кухне (6)
NooLiteD_KuhnyaBra - Светильник на кухне (5)
NooLiteD_KuhnyaTop - Люстра в кухне (4)
NooLiteD_ZalTop - Люстра в зале (3)
NooLiteD_SpalnyaBra - Светильник в спальне (2)
NooLiteD_SpalnyaTop - Люстра в спальне (1)
Объекты класса switchNooLite:
switchNooLite_Zal_Polka_3 - (29)
Методы объекта:
refresh
switchNooLite_Zal_Polka_2 - (28) Помечает последнюю проговоренную задачу как выполненную.
Методы объекта:
refresh
switchNooLite_Zal_Polka_1 - (27)
Методы объекта:
refresh
switchNooLite_HalLRGB - Выбор фиксированного цвета (26)
Методы объекта:
refresh
switchNooLite_Hall_Door_3 - Дверной выключатель в коридоре, сценарная 3 (25)
Методы объекта:
refresh
switchNooLite_Hall_Door_2 - Дверной выключатель в коридоре, сценарная 2 (24)
Методы объекта:
refresh
switchNooLite_Hall_Door_1 - Дверной выключатель в коридоре, сценарная 1 (23)
switchNooLite_Spalnya_Wall_3 - Прикроватный выключатель в спальне, сценарная кнопка
Методы объекта:
refresh
switchNooLite_Spalnya_Wall_2 - Прикроватный выключатель в спальне для бра
Методы объекта:
refresh
switchNooLite_Spalnya_Wall_1 - Прикроватный выключатель в спальне для люстры
Методы объекта:
refresh
switchNooLite_Spalnya_Door_3 - Дверной выключатель в спальне, сценарная кнопка
Методы объекта:
refresh
switchNooLite_Spalnya_Door_2 - Дверной выключатель в спальне для бра
Методы объекта:
refresh
switchNooLite_Spalnya_Door_1 - Дверной выключатель в спальне для люстры
Методы объекта:
refresh
switchNooLite_Zal_Comp_3 - Выключатель у компа в зале, сценарная 3
Методы объекта:
refresh
switchNooLite_Zal_Comp_2 - Выключатель у компа в зале, сценарная 2 (21)
switchNooLite_Zal_Comp_1 - Выключатель у компа в зале, сценарная 1 (20)
switchNooLite_Tualet_Wall_3 - Стенной выключатель в туалете, сценарная кнопка
Методы объекта:
refresh
switchNooLite_Tualet_Wall_2 - Стенной выключатель в туалете для вытяжки
Методы объекта:
refresh
switchNooLite_Tualet_Wall_1 - Стенной выключатель в туалете для люстры
Методы объекта:
refresh
switchNooLite_Tualet_Door_2 - Дверной выключатель в туалете для вытяжки (отвязан)
Методы объекта:
refresh
switchNooLite_Tualet_Door_3 - Дверной выключатель в туалете, сценарная кнопка (отвязан)
Методы объекта:
refresh
switchNooLite_Tualet_Door_1 - Дверной выключатель в туалете для люстры (отвязан)
Методы объекта:
refresh
switchNooLite_Zal_Door - Дверной выключатель в Зале
Методы объекта:
refresh
switchNooLite_Kuhnya_Wall_2 - Стенной выключатель на кухне для бра
Методы объекта:
refresh
switchNooLite_Kuhnya_Wall_3 - Стенной выключатель на кухне для вытяжки
Методы объекта:
refresh
switchNooLite_Kuhnya_Door_3 - Дверной выключатель на кухне сценарная кнопка
Методы объекта:
refresh
switchNooLite_Kuhnya_Wall_1 - Стенной выключатель на кухне для люстры
Методы объекта:
refresh
switchNooLite_Kuhnya_Door_2 - Дверной выключатель на кухне для бра
Методы объекта:
refresh
switchNooLite_Kuhnya_Door_1 - Дверной выключатель на кухне для люстры
Методы объекта:
refresh
snl30 - Люстра на кухне
Методы объекта:
refresh
snl31
snl32
snl33 - Люстра в туалете
Методы объекта:
refresh
snl34
snl35
snl36 - Люстра в зале
Методы объекта:
refresh
snl37
snl38
snl39
snl40
snl41
snl42 - Брелок A
snl43 - Брелок B
snl44 - Брелок C
BlackWarrior какойто пустой
Сергей
Углич, Россия
TempSensors
ts_office
ts_garage
ts_outdoor
ts_bedroom
ts_livingroom
ts_1wire
ts_kitchen
ts_hall
MovementSensors
ms_driveway
ms_porch - камера дверь
ms_kitchen
ms_hall
AlarmSensors
as_boilerroom_flood1 - z датчик протечки бойлерная
as_bathroom_flood1 - z датчик протечки ванная
as_storage_fire1 - пожарные датчики на складе
as_kitchen_flood1 - z датчик протечки кухня
as_officeroom_heat1 - z датчик тепла кабинет
as_officeroom_smoke1 - z датчик дыма кабинет
as_bedroom_heat1 - z датчик тепла спальня
as_bedroom_smoke1 - z датчик дыма спальня
as_livingroom_heat1 - z датчик тепла гостиная
as_livingroom_smoke1 - z датчик дыма гостиная
as_kitchen_heat1 - z датчик тепла на кухне
as_mansarda_fire1 - пожарные датчики мансарды
as_kitchen_smoke1 - z датчик дыма на кухне
as_underground_fire1 - пожарные датчики в подвале
as_terrac_fire1 - пожарные датчики терасы
as_attic_fire1 - пожарные датчики на крыше
as_hall_fire1 - пожарные датчики в холле
as_garage_fire1 - пожарные датчики в гараже
Shagrat у не го вообще както все закодированно
inhouseMovementSensors
5588245-24bit-P1 - Зал RC
5592085-24bit-P1 - Спальня RC
5594385-24bit-P1 - Кабинет RC
5588305-24bit-P1 - Коридор 1 этаж RC
Методы объекта:
statusChanged
5592405-24bit-P1 - Кухня RC
3257866-24bit-P1 - Детская RС
_16156170-24bit-P1 - _ RС
stairsdown - Датчик движения на лестнице (вниз)
MySensor с несколькими подклассами там по немногу поэтому объеденю
BathroomButtons - Контролер управления ванной
WaterCounter - Счётчик воды
GazCounter - Газовый счётчик
Pool - Басеин
PoolFilter
SprinkerZone1 - Полив Zone1
BathroomFan - Вентилятор в туалете
DoRCReciver
dwc - Датчик. В туалете
dbathroom - Датчик. В Ванной
wKitchenDoor - Датчик задней двери
wKitchenWind - Окно кухни
Ну и для наглядно сти у него класс tempSensors
tskitchen - Градусник Кухня
tsoffice - Градусник Кабинет
tsnursery - Градусник Детская
tshall - Градусник Зал
tscorridor1 - Градусник Коридор
tsattic - Градусник Чердак
tsrearyard - Градусник Задний Двор (Улица)
tsbedroom - Градусник Спальня
Думаю показательно в мою пользу. Большенство стараются ситематизировать КомнатаТипдатчика и ручками ручками одно и тоже действие.....
Что касаемо Вашего утверждения что нет в коннекте примера с большим кол-вом сенсоров, так может и нет из за этой проблемы их джобавлять. Но это не аргумент а догадка.
Допустим что кто то реализовал проект на МДМ миниотель на 50 номеров например. Во первых потратив месяц ручного кошмара как на конвееере однотипных операций, думаю тот кто такое провернет больше никогда не сядет за анологичны проект, только за типовой например отель в 30 номеров или 60.
Во вторых если этот инстолятор сообразительный он лучше потратит допустим неделю,если Вы правы чтио модуль сложный и грамозкий, на написание модуля и в будующем не придется вручную набивать одно и тоже. Это же кошмар целый.
Потом почему нет больших коннектов:
1 Сенсоры в большенстве своем недешовые и много их позволить далеко не каждый может. Я выбрал MySensors по причине дешевизны,если покупать в китае, и удобства. но удобство некоторые могут поспорить по этому лично это мое мнение и не думаю что стоит это обсуждать.
2 По причине дороговизны большой дом с кучей датчиков и активаторов приводит к тому что УД будут делать наемники а не сам хозяин ковыряясь и разбираясь в МДМ.
3 По выводу 2 следует что коммерческая компания не будет публиковать свои труды на весь интернет, тем более что заказчику будь он частник, хозяин отеля, склада или еще чего трудно будет обяснить что код его объекта общедоступен в интернете и это безопастно.
Думаю аргументов достаточно.
Просьба к всезнющему и справедливому сообществу как проголосовать надо ли это все всем. Потому что если ErmolenkoM прав и написание модуля займет много времени у Сергея да еще и впустую. То тогда умываю руки.
Идеально бы услышать мнение у инсталяторов. Они всетаки массово внедряют в массы МДМ делая его популярнее.
Ну и немного в сторону.
Лично я хочу и они закуплены и будут смонтированны, а соответственно увы но вручную добавленны, чтобы в каждой комнате был датчик качества воздуха, датчик дыма, датчик движения, Датчик освещенности, датчик окна и двери, температура и влажность. Релюхи на освещение. Не говоря уже об уникальных для некоторых комнат например на кухни датчик утечки газа, во влажных помещениях датчики утечки. Мест,комнаты подвал улица вобщем типовых, где все это будет у меня 8 не считая специфических. И только по минимуму без доп , например гдето 2 окна или еще бра есть RGB лента, получается 8 мест * 9 итого 72 обекта ручками + допы в некоторых помещениях, например понравилось у сергея удобная розетка, и сервисные думаю за сотню первалит И все это ручками ручками ручками ручками ручками ручками ручками ручками ............
А потом отлавливать тупые грамматические ошибки.
ErmolenkoM писал(а):
lanket писал(а):
Ооп для таких задач и предназначен. Масштабируемость это его главное преимущество.
Неа. ООП и маштабируемость не связаны никак.
Вам как профи виднее. Просто когда изучал ООП читал одну статью програмирование на основе тестов, когда сначала пишутся тесты а потом уже код продукта под эти тесты, и автор описывал следующую эволюцию программирования называя автоматическое развертывание системы. Грубо: когда путем описывания в тестах что надо код сам генериться. Грубо если то Процедурное это одномерное измерение, ООП на основе классов и наследования это двумерное, а развертывание это уже более пространствнное. Так я понял и так мне запомнилось.Понят но что не простыми словами надиктовал компьютору что ты хочешь а он сам написал а что то навроде Sql запроса вроде строчка маленькая аа результат огромный, если скуль запрос сложный то и подумать надо поольше и в нем уже многое будет сделанно что не придется в пхп обрабатывать. Или аналогия с регулярными, малюсенькая строчка может сделать аналогичную громозкую работу написанную в процедурном языке. Но это в сторону от главной темы не буду настаивать на правильности своих рассуждений.