CCU.IO + DashUI

Обсуждение статей, технологий домашней автоматизации, программных и аппаратных решений
Urbas81
Сообщения: 313
Зарегистрирован: 28 авг 2012, 14:22

Re: CCU.IO + DashUI

Сообщение Urbas81 » 25 июн 2014, 21:20

Bluefox писал(а): Попробовал сделать netAlarm адаптер. Но все вслепую.
Нужно, что бы кто-то протестил.
netalarm.zip
Спасибо за труд. К сожалению сейчас совсем нет времени, да и неталармы у меня немного модифицированные, в общем пока только слежу за темой. :roll:

Bluefox
Сообщения: 150
Зарегистрирован: 03 мар 2014, 20:02

Re: CCU.IO + DashUI

Сообщение Bluefox » 25 июн 2014, 23:12

plusQ писал(а):
Bluefox писал(а): MeagD Драйвер вообще работает? Кто нибудь может подтвердить работоспособность?
1) пробую добавить виджет hqWidget елемент On/Off
кликаю на выбрать ID объекта - там пусто

2) пробую добавить виджет hqWidget елемент Motion Detector
кликаю на выбрать ID объекта - там доступны порты 7-13, это те которые OUT а не IN
в ID освещенности доступны все порты

3) что значит в настройках megaD колонка Сдвиг ?

4) в megaD можно настроить порты 10, 12 и13 в режим ШИМ, иными словами реализовать функцию диммирования
виджет hqWidget елемент Dimmer также не видет megaD
Что бы выбрать нажми сюда:
Dialog.png
Dialog.png (182.85 КБ) 9130 просмотров
Т.к. аналоговые значения от 0 до 255, то для их преобразования есть фактор и сдвиг.

Код: Выделить всё

значение ccu.io = (значение из меги / 256) * фактор + сдвиг
значение для меги = ((значение ccu.io - сдвиг) / фактор) * 256
Это в теории. А на практике я ещё не подключил фактор и сдвиг к вычеслениям, но сейчас сделаю. :)

Bluefox
Сообщения: 150
Зарегистрирован: 03 мар 2014, 20:02

Re: CCU.IO + DashUI

Сообщение Bluefox » 25 июн 2014, 23:27

Urbas81 писал(а):
Bluefox писал(а): Попробовал сделать netAlarm адаптер. Но все вслепую.
Нужно, что бы кто-то протестил.
netalarm.zip
Спасибо за труд. К сожалению сейчас совсем нет времени, да и неталармы у меня немного модифицированные, в общем пока только слежу за темой. :roll:
Я написал драйвер таким образом, что он сначала считывает status с именами и потом, основываясь на Tx,INx,OUTx,Ax, задает имена и помечает порты, как дискретный или аналоговый. Количество портов тоже можно сконфигурировать от 1 до 32.
Как они у тебя модифицированы?
Единственное, мне не понятно, как можно по HTTP управлять OUT портом.

Bluefox
Сообщения: 150
Зарегистрирован: 03 мар 2014, 20:02

MegaD Драйвер для CCU.IO

Сообщение Bluefox » 25 июн 2014, 23:30

А ещё не понятно: как считать из меги температуру и аналоговые входы.

Bluefox
Сообщения: 150
Зарегистрирован: 03 мар 2014, 20:02

Re: CCU.IO + DashUI

Сообщение Bluefox » 26 июн 2014, 00:00

Версию с множителем и сдвигом для MegaD драйвера можно взять здесь:
https://github.com/GermanBluefox/ccu.io ... D/megaD.js

plusQ
Сообщения: 115
Зарегистрирован: 01 фев 2013, 15:29
Контактная информация:

Re: CCU.IO + DashUI

Сообщение plusQ » 26 июн 2014, 21:39

вот лог

Код: Выделить всё

2014-06-26 21:30:05.241 info   : adapter megaD getPortState http://192.168.1.32/sec/?pt=0&cmd=get
2014-06-26 21:30:05.243 info   : adapter megaD getPortState http://192.168.1.32/sec/?pt=1&cmd=get
2014-06-26 21:30:05.244 info   : adapter megaD getPortState http://192.168.1.32/sec/?pt=2&cmd=get
2014-06-26 21:30:05.245 info   : adapter megaD getPortState http://192.168.1.32/sec/?pt=3&cmd=get
2014-06-26 21:30:05.245 info   : adapter megaD getPortState http://192.168.1.32/sec/?pt=4&cmd=get
2014-06-26 21:30:05.246 info   : adapter megaD getPortState http://192.168.1.32/sec/?pt=5&cmd=get
2014-06-26 21:30:05.247 info   : adapter megaD getPortState http://192.168.1.32/sec/?pt=6&cmd=get
2014-06-26 21:30:05.258 info   : adapter megaD: detected new value for port 0: NaN, calc state NaN
2014-06-26 21:30:05.259 info   : adapter megaD  setState 74502 NaN
2014-06-26 21:30:05.270 info   : adapter megaD: detected new value for port 0: NaN, calc state NaN
2014-06-26 21:30:05.271 info   : adapter megaD  setState 74504 NaN
2014-06-26 21:30:05.274 info   : adapter megaD: detected new value for port 0: NaN, calc state NaN
2014-06-26 21:30:05.274 info   : adapter megaD  setState 74506 NaN
2014-06-26 21:30:05.278 info   : adapter megaD: detected new value for port 0: NaN, calc state NaN
2014-06-26 21:30:05.278 info   : adapter megaD  setState 74508 NaN
2014-06-26 21:30:05.287 info   : adapter megaD: detected new value for port 0: NaN, calc state NaN
2014-06-26 21:30:05.287 info   : adapter megaD  setState 74510 NaN
2014-06-26 21:30:05.296 info   : adapter megaD: detected new value for port 0: NaN, calc state NaN
2014-06-26 21:30:05.296 info   : adapter megaD  setState 74512 NaN
2014-06-26 21:30:05.307 info   : adapter megaD: detected new value for port 0: NaN, calc state NaN
2014-06-26 21:30:05.307 info   : adapter megaD  setState 74514 NaN
вот ответы если выполнять в браузере

Код: Выделить всё

http://192.168.1.32/sec/?pt=0&cmd=get
OFF/0

http://192.168.1.32/sec/?pt=1&cmd=get
ON/5

http://192.168.1.32/sec/?pt=2&cmd=get
OFF/0


Bluefox
Сообщения: 150
Зарегистрирован: 03 мар 2014, 20:02

Re: CCU.IO + DashUI

Сообщение Bluefox » 26 июн 2014, 21:40

Посмотрю после игры.
Почему там /5 или /0...?

plusQ
Сообщения: 115
Зарегистрирован: 01 фев 2013, 15:29
Контактная информация:

Re: CCU.IO + DashUI

Сообщение plusQ » 26 июн 2014, 21:47

Bluefox писал(а):Посмотрю после игры.
Почему там /5 или /0...?
через слэш количество срабатываний

да и еще порты 7-13 хоть и настроены на OUT но их состояние также можно проверить

Код: Выделить всё

http://192.168.1.32/sec/?pt=7&cmd=get
OFF

http://192.168.1.32/sec/?pt=9&cmd=get
ON

http://192.168.1.32/sec/?pt=13&cmd=get
17
тут ШИМ димирование

Bluefox
Сообщения: 150
Зарегистрирован: 03 мар 2014, 20:02

Re: CCU.IO + DashUI

Сообщение Bluefox » 26 июн 2014, 22:12

Вот новая версия:
https://github.com/GermanBluefox/ccu.io ... D/megaD.js
через слэш количество срабатываний
В документации ни слова про это...

plusQ
Сообщения: 115
Зарегистрирован: 01 фев 2013, 15:29
Контактная информация:

Re: CCU.IO + DashUI

Сообщение plusQ » 26 июн 2014, 23:14

пишит в логах

Код: Выделить всё

    at process._tickCallback (node.js:415:13)TypeError: Object 17 has no method 'split'
    at processPortState (/opt/ccu.io/adapter/megaD/megaD.js:259:23)
    at IncomingMessage.<anonymous> (/opt/ccu.io/adapter/megaD/megaD.js:240:21)
    at IncomingMessage.EventEmitter.emit (events.js:117:20)
    at _stream_readable.js:920:16
ЗЫ megaD.js до этого использовал с первой страницы темы

Bluefox
Сообщения: 150
Зарегистрирован: 03 мар 2014, 20:02

Re: CCU.IO + DashUI

Сообщение Bluefox » 27 июн 2014, 00:49

Ну чтож...
Трудно без устройства.
Следующая попытка:
https://github.com/GermanBluefox/ccu.io ... D/megaD.js

Rik
Сообщения: 65
Зарегистрирован: 28 фев 2012, 01:17
Откуда: Украина Харьков

Re: CCU.IO + DashUI

Сообщение Rik » 27 июн 2014, 11:53

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

bzaugolnov
Сообщения: 18
Зарегистрирован: 06 дек 2012, 13:24

Re: CCU.IO + DashUI

Сообщение bzaugolnov » 27 июн 2014, 15:34

Bluefox писал(а): Ядро я написал на 50%. Другую часть (начальную) написал товарищ из германии, а я понимаю немецкий. Вот и получилась система изначально для немецкой системы автоматизации. Но я активно перевожу все части на английский и русский. Так, что если где заметите немецкое слово, дайте знать. Уже глаз замылился ;)
Круто.
Bluefox писал(а): Разруливание... Сама CCU.IO не обращается два раза к одному и тому же устройству одновременно. А т.к. основная коммуникация происходит по TCP/IP, то эта задача ложится на протокол. С чем он успешно справляется.
А если такие ресурсы, как GPIO на малине, то да. Доступ должен быть тогда только у CCU.IO.
Например такая задача: для того, чтобы разбудить человека, можно в течении 30 минут плавно включать свет. Если человек проснулся немного раньше, он может выключателем включить этот свет на полную, не ожидая 30 минут. Если не прервать процесс плавного включения, то после отработки команды пользователя, свет продолжит включаться дальше. Я хотел спросить: есть ли какие средства взаимодействия между процессами (семафоры, мьютексы и т.д.)
Bluefox писал(а): Какие системы автоматизации используются у тебя?
Сейчас - ничего. Нахожусь снова на распутье. Просто взялся один за большой проект и не успел довести до логического конца. Сейчас свободное время закончилось.
Я взялся сразу за разработку и железа и п/о. Из железок получилось:
1. Web-контроллер на STM32 общается с основным сервером по HTTP (является HTTP сервером и клиентом), к нему можно непосредственно подключать датчики и исполнительные механизмы. Так же он является шлюзом для подключения удаленных устройств по CAN, 4-20, радио (CC1101) протоколы собственные.
2. LED драйвер, подключающийся к web-контроллеру по CAN и/или Радио
3. Датчики влажность/давление/температура/освещенность/счетчик с автономным питанием , подключающийся к web-контроллеру по Радио.
железо прошло 1,5 итерации (нужно 3-4 итерации для получения вменяемого результата).
Основной сервер делал на Apache, PHP, mySQL. Предполагалась возможность создания пользователем адаптеров под различные устройства и виджетов для отображения информации в произвольном виде (что-то вроде DashUI). Не понравилась сложность создания дополнительных элементов. Сделал несколько выводов:
1. Система должна быть простой и интуитивно понятной. В CCU.IO есть инсталлятор, который все делает сам - очень хорошая штука. Еще было бы здорово сделать демо базу, которая будет содержать тестовые данные и несколько экранов с настроенным интерфейсом DashGUI а также адаптер, который может генерировать случайные события и имитировать показания датчиков. Плюс несколько скриптов. Т.е. нажал пользователь в интерфейсе кнопку, а на соседнем виджете загорелась лампочка (ну и т.д.). Изучать работу системы проще всего на готовых работающих примерах.
2. Красивой. Если пользователь сам создает интерфейс, предложить ему шаблон/рекомендации по созданию интерфейса.
3. Удобство и простота внесения изменений. Если у конечного пользователя будет возможность что-нибудь напрограммить для себя и поделиться этим с остальными (возможно с премодерацией), это может способствовать быстрому развитию и распространению системы. Для этого нужны средства отладки и инструкция по развертыванию средств разработки или готовая сборка.

Еще что касается интерфейса создания скриптов: было бы круто иметь на экране дерево всех устройств, которые можно было бы перетаскивать в код скрипта или на диаграмму, если скрипт создается с помощью графических средств. А также иметь список других скриптов или шаблонов в которые можно постоянно подглядывать и вырезать нужные куски. Программирование в стиле Ctrl+C,Ctrl+V очень ускоряет процесс.
Несколько скриншотов из того, что получилось:
001.png
Размещение и настройва виджетов на экране
001.png (62.05 КБ) 9048 просмотров
002.png
002.png (29.01 КБ) 9048 просмотров
003.png
003.png (35.5 КБ) 9048 просмотров
004.png
Админка
004.png (31.48 КБ) 9048 просмотров
005.png
Интерфейс редактирования скрипта
005.png (17.53 КБ) 9048 просмотров

Acid_Reptile
Сообщения: 21
Зарегистрирован: 15 окт 2013, 09:04

Re: CCU.IO + DashUI

Сообщение Acid_Reptile » 27 июн 2014, 17:57

А сколько ОЗУС "ест" CCU.IO вместе с node.js?

Bluefox
Сообщения: 150
Зарегистрирован: 03 мар 2014, 20:02

Re: CCU.IO + DashUI

Сообщение Bluefox » 27 июн 2014, 18:05

Acid_Reptile писал(а):А сколько ОЗУС "ест" CCU.IO вместе с node.js?
Порядка 40 мегабайт на процесс. Т.е. Core ~40Mb + ScriptEngine ~40Mb + (Adapter ~40Mb * кол-во адаптеров). Т.е на малине с 256 Мб будет тесновато.
На 512 хватает на всё. (256 уже не производятся, но можно купить на ebay)

Bluefox
Сообщения: 150
Зарегистрирован: 03 мар 2014, 20:02

Re: CCU.IO + DashUI

Сообщение Bluefox » 27 июн 2014, 18:45

bzaugolnov писал(а): Например такая задача: для того, чтобы разбудить человека, можно в течении 30 минут плавно включать свет. Если человек проснулся немного раньше, он может выключателем включить этот свет на полную, не ожидая 30 минут. Если не прервать процесс плавного включения, то после отработки команды пользователя, свет продолжит включаться дальше. Я хотел спросить: есть ли какие средства взаимодействия между процессами (семафоры, мьютексы и т.д.)
Это довольно просто делается ч.з. переменную в CCU.IO.
Можно создать пользовательскую переменную (Все с индексом >= 100000) и эта переменная будет видна во всех скриптах, ccu.ui, Dash UI и во всех драйверах. Нужно только подписаться на неё. И через нее делать логику. (Можно создать сколько угодно переменных).
Но в этом конкретном случае глобальная переменная не нужна и скрипт будет выглядеть так:

Код: Выделить всё

var timerWakeUpRunning = null; // Наш таймер для 30 минут
var lampValueWakeUp = 0; // Значение света от 0 до 1 как float
var idSwitch = 12123; // Выключатель в спалне
var idLamp   = 12323;  // Исполнительный модуль для лампы в спальне

// Выполнять каждое утро по рабочим дням в 7:15
schedule("15 7 * * 1-5", function () {
	if (timerWakeUpRunning) {
		clearInterval(timerWakeUpRunning);
	}
	// Обнулить значение яркости
	lampValueWakeUp = 0;
	// выполнять каждую минуту
	timerWakeUpRunning = setInterval(function() {
		lampValueWakeUp += 0.033; // одна тридцатая
		if (lampValueWakeUp >= 1) {
			lampValueWakeUp = 1;
		}
		setState(idLamp, lampValueWakeUp);
		// Мы включили лампу на полную. Можно остановить таймер.
		if (lampValueWakeUp >= 1) {
			clearInterval (timerWakeUpRunning);
			timerWakeUpRunning = null;
		}
	}, 60000);// 60 секунд
});

// подписаться на события нажатия на выключатель
subscribe(idSwitch, function (obj) {
	// Если таймер просыпания запущен
	if (timerWakeUpRunning) {
		// Если свет включен с выключателя
		if (obj.newState.value) {
			// Можно остановить таймер.
			clearInterval(timerWakeUpRunning);
			timerWakeUpRunning = null;
		} else {
			// Если свет вЫключен с выключателя
			email({
				to: "myMail@gmail.com",
				subject: "ccu.io",
				text: "Нефиг спать! Свет все равно будет включаться дальше".
			});
		}
	}
});
Сейчас - ничего. Нахожусь снова на распутье. Просто взялся один за большой проект и не успел довести до логического конца. Сейчас свободное время закончилось.
Я взялся сразу за разработку и железа и п/о. Из железок получилось:
1. Web-контроллер на STM32 общается с основным сервером по HTTP (является HTTP сервером и клиентом), к нему можно непосредственно подключать датчики и
Понятно. Но в твоем случае нужно писать драйвер под CCU.IO для твоего самодельного сервера. Т.к. всё управляется через него. Если есть желание могу помочь в написании.
Сделал несколько выводов:
1. Система должна быть простой и интуитивно понятной. В CCU.IO есть инсталлятор, который все делает сам - очень хорошая штука. Еще было бы здорово сделать демо базу, которая будет содержать тестовые данные и несколько экранов с настроенным интерфейсом DashGUI
Эту роль выполняет dashui.ccu.io. Плюс на выходных я встрою Welcome страницу (но только одну) на которой будет показываться квартира, текст и несколько датчиков. Что бы новичок не сидел перед белым листом.
а также адаптер, который может генерировать случайные события и имитировать показания датчиков. Плюс несколько скриптов. Т.е. нажал пользователь в интерфейсе кнопку, а на соседнем виджете загорелась лампочка (ну и т.д.). Изучать работу системы проще всего на готовых работающих примерах.
Хорошая идея. Подумаю, как реализовать.
2. Красивой. Если пользователь сам создает интерфейс, предложить ему шаблон/рекомендации по созданию интерфейса.
Опять таки dashui.ccu.io
3. Удобство и простота внесения изменений. Если у конечного пользователя будет возможность что-нибудь напрограммить для себя и поделиться этим с остальными (возможно с премодерацией), это может способствовать быстрому развитию и распространению системы. Для этого нужны средства отладки и инструкция по развертыванию средств разработки или готовая сборка.

Еще что касается интерфейса создания скриптов: было бы круто иметь на экране дерево всех устройств, которые можно было бы перетаскивать в код скрипта или на диаграмму, если скрипт создается с помощью графических средств. А также иметь список других скриптов или шаблонов в которые можно постоянно подглядывать и вырезать нужные куски. Программирование в стиле Ctrl+C,Ctrl+V очень ускоряет процесс.
Вообще скрипты можно создавать в ScriptGUI. Там, как раз, всё есть и отладка и список приборов. И обучающее видео. Товарищ сейчас в отпуске, но по возвращению обещал заняться переводом. А видео пока делать не для кого. Не немецких пользователей нет. (Такой вот порочный круг. :D )
Несколько скриншотов из того, что получилось:
Да действительно напоминает Dash UI. :) Поражаюсь каждый день, сколько решений в инете.

Bluefox
Сообщения: 150
Зарегистрирован: 03 мар 2014, 20:02

Re: CCU.IO + DashUI

Сообщение Bluefox » 27 июн 2014, 18:52

Rik писал(а):Какая классная программа, хочется побольше разных примеров её внедрения, так как форум на немецком где есть много обсуждения, для меня это полный лес. Спасибо разработчику.
Конечно полный лес. Этож на немецком. Поэтому надо задавать вопросы здесь, а я постараюсь ответить.
Самое главное - это запихать данные с приборов и сервисов в систему. А там с ними можно строить какие угодно связи и визуализировать их.
Каждую неделю создается по драйверу. И поэтому мне важно знать, что люди используют.
Недавно (вчера), один товарищ сделал скрипт (т.к. он после операции и не может вставать), что если его подруга находится в зоне действия домашнего Wifi (пинг каждые 5 секунд) и нажимает на кнопку звонка, то обе двери (во двор и домой) открываются, т.к. сам он встать не может.

plusQ
Сообщения: 115
Зарегистрирован: 01 фев 2013, 15:29
Контактная информация:

Re: CCU.IO + DashUI

Сообщение plusQ » 27 июн 2014, 21:10

теперь исчезли все устройства даже с галочкой Убрать фильтр по устройствам
лог в файле
Вложения
megaD.zip
(1.78 КБ) 293 скачивания

Acid_Reptile
Сообщения: 21
Зарегистрирован: 15 окт 2013, 09:04

Re: CCU.IO + DashUI

Сообщение Acid_Reptile » 27 июн 2014, 21:56

Bluefox писал(а):
Acid_Reptile писал(а):А сколько ОЗУС "ест" CCU.IO вместе с node.js?
Порядка 40 мегабайт на процесс. Т.е. Core ~40Mb + ScriptEngine ~40Mb + (Adapter ~40Mb * кол-во адаптеров). Т.е на малине с 256 Мб будет тесновато.
На 512 хватает на всё. (256 уже не производятся, но можно купить на ebay)
Эге, а собрался попробовать на WR703N :)

Bluefox
Сообщения: 150
Зарегистрирован: 03 мар 2014, 20:02

Re: CCU.IO + DashUI

Сообщение Bluefox » 27 июн 2014, 22:50

plusQ писал(а):теперь исчезли все устройства даже с галочкой Убрать фильтр по устройствам
лог в файле
Очередная попытка..
https://github.com/GermanBluefox/ccu.io ... D/megaD.js
Странные названия портов. Можешь прислать мне свой ccu.io\datastore\adapter-megaD.json ?

CCU.IO у тебя бежит на кубике? Судя по всему там нельзя не root создавать сокеты с портами ниже 1024, чем порт 80 и является..
Нельзя ли сделать Мегу с настраиваемым портом? Это вопрос скорее к производителям, чем к тебе...

Ответить