Универсальная Консоль Управления

black
Offline
Зарегистрирован: 18.03.2013

Подумалось, что было бы неплохо иметь универсальную модульную среду, предоставляющую унифицированный интерфейс для управления различными устройствами, в том числе и построенными на базе Arduino. Что-то вроде OSGi (http://ru.wikipedia.org/wiki/OSGi), только для разработчиков электронных устройств. Идея в том, чтобы облегчить процедуру создания кода для управления устройствами с компьютера, позволив разработчику написать только модуль, содержащий бизнес-логику управления (а так же описание входных и выходных параметров, указание протоколов взаимодействия) и обеспечив управление этим модулем через, скажем, веб-интерфейс. Для того чтобы лучше понять, что я имею в виду, можно глянуть на консоль для управления поливом растений (http://nnm.ru/blogs/black32167/avtomatizaciya-uhoda-za-rasteniyami-na-ar...).

Любой сможет написать модуль управления для своего устройства, не отвлекаясь на графическое представление и работу с фреймворками, и просто добавить этот модуль к консоли управления. В перспективе можно будет включать, отключать модули и даже наладить их взаимодействие между собой, чтобы скажем, легко коммутировать данные, полученные от датчиков, с исполнительными механизмами.

Кто-нибудь хочет организовать совместный проект для создания этого замечательного приложения? Любые конструктивные мысли по теме так же будут кстати.

maksim
Offline
Зарегистрирован: 12.02.2012

LabVIEW, SCADA ?

black
Offline
Зарегистрирован: 18.03.2013

SCADA - да, близко. Можно сказать, что предлагаемый проект является SCADA-системой. При этом хочется чтобы такая система была:

- OpenSource

- позволяла писать драйвера для устройств на различных высокоуровневых языках

- поддерживала интеграцию с произвольными внешними системами (ESB)

- обладала простым в использовании web-интерфейсом

- реализовывала бы принцип  multitenancy (http://en.wikipedia.org/wiki/Multitenancy) и поддерживала бы свои профили для различных пользователей.

- умела бы работать с множеством баз данных (Hibernate)

- <нужное дописать>

Удовлетворяет ли какая-нибудь из существующих SCADA-реализаций перечисленным требованиям?

 
leshak
Offline
Зарегистрирован: 29.09.2011

Если вы возметесь такое делать, то рано или поздно упретесь в необходимость выдераживать баланс
простота/универсальность.

Если вы реализуете в ней все что описали - сложность будет такова, что для простых задач, проще с нуля будет сделать чем сконфигурить всю эту систему и решение будет более эффективным. Для сложных систем - непонятно какие бонусы будут по сравнению с построение на традиционных фреймворкаж (работы с базами, построение UI - все это уже давно есть). Только не нужно разбиратся с "еще одной системой".

Если делать "простую в использовании" - прийдется забыть о универсальности. В любом случае прийдется загонять в какие-то рамки "вот эти задачи решает, а вот эти - нет".

 

black
Offline
Зарегистрирован: 18.03.2013

leshak пишет:
Если вы реализуете в ней все что описали - сложность будет такова, что для простых задач, проще с нуля будет сделать чем сконфигурить всю эту систему

Это неочевидное утверждение. Сложное внутри не означает сложное снаружи. Комьютер устроен достаточно сложно, но им вполне могут пользоваться не разбирающиеся в деталях его устройства люди. Все зависит от интерфейса. При необходимости можно разработать отдельные интерфейсы для разных целей.

Разумно используя принцип convention-over-configuration (http://en.wikipedia.org/wiki/Convention_over_configuration), применяя модульный подход, собирая и анализируя варианты использования системы (т.е. то, что и как обычно делают пользователи), я уверен, можно сделать мощную и простую в использовании систему.

Но для одного меня эта задача слишком сложна. Поэтому я хочу найти людей, с которыми можно было бы обсудить детали интерфейса и реализации архитектуры, совместно найти оптимальное решение и воплотить его.

black
Offline
Зарегистрирован: 18.03.2013

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

leshak
Offline
Зарегистрирован: 29.09.2011

Интерестно. И то что существует фигова туча Open Source проектов - подтверждение тому.

Интерестно ли участвовать в вашем проекте? Большой вопрос. Не факт что он "полезный, технически интерестный...". Кроме ваших заявлений - ничего об этом не говорит. Хотя стоп. Факт что он не таков. По крайней мере на данный момент. Просто потому что его нет. Есть пара ссылок на википедию, намек на то что вы знакомы с архитектурными паттернами... и все.

Вообщем тут как паравоз толкать руками. Тяжело сдвинуть с места - потом полегче. Хотите сдвинуть - вначале нужно что-то создать полезное. А там, возможно, кто-нибудь и присоединится.  Если через пару недель ваш энтузиазм не угаснет (а ведь угасание - это скорее правило, чем исключение). 

Вы хотите вначале собрать единомышленников? Не хотите тратить собственное время если "оно никому не нужно".... ну значит не обладаете 150% уверенноситью что оно нужно. Хотите "подстраховатся"? Может тогда действительно "ну его...."?

Если обладаете, то Just Do It. Я думаю если бы Столман, перед тем как начинать писать Линукс начал бы "собирать желающих"... ну вы поняли ;)

Или с другой стороны... почти уверен что не вам первому пришло в голову. И какие-то Open Source проекты уже есть по этому поводу (разного уровня качества/готовности/похожести). Почему бы вам не присоединится к ним?  Потому что вам хочется реализовать именно свое видиние?  Ну так ведь всем именно этого хочется. Особенно там где "работа за интерес".

Вообщем либо начинайте толкать паравоз, либо ищите кто уже толкает и помогайте ему.

leshak
Offline
Зарегистрирован: 29.09.2011

black пишет:

Это неочевидное утверждение. Сложное внутри не означает сложное снаружи. Комьютер устроен достаточно сложно, но им вполне могут пользоваться не разбирающиеся в деталях его устройства люди. Все зависит от интерфейса. При необходимости можно разработать отдельные интерфейсы для разных целей.

Вот-вот. И я про тоже. Простой интерфейс означает "ограниченные возможности".  Но вы же хотите универсальный. Да еще с большой буквы. Универсальный. А это означает что либо интерфейс будет громадным, либо самих интерфейсов будет тысячи. А потом еще они начнут интерферировать между собой. Количество возможных связей... вообщем "комбинаторный взрыв".

Ваши ссылки на википедии - звучит хорошо. Так же как и когда читаешь умную книго по программировнию, принципах дизайна и проч.... Принципы просты, полезность очевидна... "Вот теперь я умный, счас как залабаю Супер-Мега-Гипер-Универсальный-Фреймворк".  Да только в реальности все выходить несколько по другому и в итоге все все равно сводится к борьбе со сложностью. И приемов которые позволяют гарантированно обойти все эти камни - пока не обнаружили. Как бы красиво не писали в книгах - серебряной пули нет.

А вообще, рефлекс писать собственный Универсальный Фреймворк - у програмистов это как прыщи у подростков :) Мало кто может этого избежать, с другой стороны - это однозначный признак что человек развивается, а не стоит на месте. Происходит взросление професиональное.

Конечно, кому-то таки удается написать такой фреймворк (jQuery и т.п.), но... IMHO в лотерию выиграть шансы выше.

Так что я бы на вашем месте забил на "универсальность", и попытался вначали сделать что-то узко/полезное. Решающие одну задачу. Но хорошо решающую.  Когда будет опыт "хорошего решения" пары сотен задачь - тогда и что общие в них, возможо, увидится и получится "универсальное" сообразить. Но в любом случае это будет не "рецепт из книги", а из "вашей печенки". Выстраданное из вашего личного опыта :)

black
Offline
Зарегистрирован: 18.03.2013

Спасибо за развернутый ответ.

leshak пишет:
Просто потому что его нет.

Ну почему же нет. Есть консоль, ссылка на проект которой на SF приведена в статье http://nnm.ru/blogs/black32167/avtomatizaciya-uhoda-za-rasteniyami-na-ar... (см. выше).  Вполне себе рабочая. Ее можно развить в то, о чем я написал. Говорю как автор.

leshak пишет:
Есть пара ссылок на википедию, намек на то что вы знакомы с архитектурными паттернами... и все.

Технически я знаю как сделать все о чем говорю. Если нужно что-то вроде проектного портфолио - то см. уже упомянутую статью, а так же еще одну мою разработку http://zeroexchange.sourceforge.net. А мой более чем десятилетний опыт разработчика и аритектора поможет создать расширяемое и надежное решение.

leshak пишет:
ну значит не обладаете 150% уверенноситью что оно нужно.

Обладаю. Думаю и вы понимаете, что система, удовлетворяющая заявленным требованиям, будет востребована.

leshak пишет:
Или с другой стороны... почти уверен что не вам первому пришло в голову. И какие-то Open Source проекты уже есть по этому поводу (разного уровня качества/готовности/похожести). Почему бы вам не присоединится к ним?

Конечно, я рассматриваю такие варианты, хотя пока и не нашел подходящего. Но это не мешает искать единомышленников для того, чтобы присоединиться всем вместе, если мы так решим.

leshak пишет:
Вообщем либо начинайте толкать паравоз

Спасибо за совет, красивая аналогия, но ведь она не запрещает сдвигать паровоз совместно. Многие хорошие и нужные вещи не сделаны не потому что они не нужны, а потому что люди не в состоянии договориться о сотрудничестве и дать небольшой кредит доверия друг другу. Многие паровозы слишком тяжелы, чтобы их сдвинуть в одиночку.

leshak
Offline
Зарегистрирован: 29.09.2011

По поводу ссылки на ваше решиние - я в упор там не увидел намеков на заявленную универсальность.  С таким же успехом там мог быть пример из поставки ArduinoIde. Блинк или firmata какаяю-нибудь. Вообщем частное решение/частной задачи. . Хорошие или плохое решение - не вижу смысла обсуждать, так как не понимаю его взаимосвязь с заявленной темой "универсальность". Это примерно как показать здоровый сперматазоид и заявить "вот это будущий олимпийский чемпион". Теоретически - возможно, а практически... 

есть только ваши слова что опыт и знания позволят. У меня нет причин сомневатся в этом. Как и верить. И ни портфолио, ни что-то еще... да зачем тут оно? Вы же не на работу нанимаетесь :)   Тем более портфолио о чем-то говорить может только в случае типовых задач. А тут явно задача изобретальского уровня. В этом ни наличие, ни отсуствие портфолио никакой инфы не несет (разве что доказательство того что "человек умеет упорно добиватся").

То что "будет востребованно" - согласен. То что реально реализовать - сомневаюсь. Сделать Универсальность сохранив простоту - мечта любого разработчика в любой системе ;). И очень часто она же и убивает проект. Выливается в Overengineering.

Я просто ответил вам на ваше, манипулятивное "неужели никто не хочет...". Хочет, вот только, по крайней мере для меня, со сторонней точки зрения это совершенно не выглядит как "интерестный и полезный проект". Пока это скорее "еще один проект на ардуино"+прожект космического маштаба. и не более. А архитектура на sourcefourge больше напоминает "схемы кадета Биглера". Понятно что все великое начинается с малого и первые шаги - они все выглядят так, но вот боюсь что, по крайней мере я, не могу разглядеть там то великое что видите вы.

Далее, вопрос мотивации. Предположим мне нужно соорудить какую-то консоль. Скажем для кормления кошки. У меня есть выбор. Либо делать решение на существующих фреймворках. Узкое. Для кошки. Без всяких универсальностей. Либо на месяцы и годы уйти в совместный OpenSource проект, что-бы потом, через год, сделать свое решение для кошки, на его базе за 10-ть минут. Это если через какое-то время мы не разойдемся во взглядах "как его нужно развивать".

А есть еще понятие "выгодно". Open Source - это конечно модно. Полезно для человечества, но вот конкретные люди - хотят кушать. И у них всегда будет стоять вопрос/выбор. Либо заниматся альтруизмом, либо пилить такую штуку тихо про себя, а потом зарабатывать на ней деньги. Я не хочу сказать что Open Source - это "плохая вещь" (arduino, да ;). Просто не нужно ее воспринимать как "автоматическое благо". Помнить что подобный выбор, вопросы "как монетизировать" стоят всегда. Даже перед Open Source проектами. Явно или не явно.

А вообще - не очень понятно что и главное зачем вы хотите мне доказать. То что у вас есть хорошие привлекательные прототипы? Ну OK. Предположим я согласился. Ваш проект крут, перспективен,реален, ссылки - говорящие.  Ничего делать не нужно, менять тоже (в том числе и собственный взгляд на него). Раз он так хорошо и востребован - счас разработчики набегут сами и помогут толкать этот груз. Просто в понедельник еще не все успели прочитать тему. Нужно просто подождать, ну и пару раз еще запостить "ау-ау, присоединятесь". Ну что-бы наверняка.

Но, я убежден, что за Универнсальность - прийдется расплачиватся, за Внешнюю Простоту - тоже. Если "основатель" этого не видит - лучше в такое не ввязыватся. Все. Это просто "сторонние мнение". Учитывать его или нет, что делать со своим проектом - решать вам. Можете пересмотреть взглядлы на него, почитать какие-то книги по психологии совместной работы  (да, такие проекты не только от технарства зависят).

А можете просто посчитать меня либо балоболом, либо скрытым конкурентом  (может я сам пилю такую систему и пытаюсь вас психологический задавить. рассматривали такой вариант?). Ну тогда просто плюньте и не обращайте на меня внимание ;)

black
Offline
Зарегистрирован: 18.03.2013

leshak пишет:
А вообще - не очень понятно что и главное зачем вы хотите мне доказать.

Это вы пытаетесь доказать обоснованность вашего скептицизма. Я же просто поправил некоторые из ваших ошибочных предположений. Ваша точка зрения и аргументы понятны. Понятно так же, что многие рассуждают примерно так же как и вы. Скорее даже, большинство. Это нормально и ожидаемо. Вы объяснили почему вам не интересен проект. Спасибо, было полезно.