Умный дом по радиоканалу

Обсуждение статей, технологий домашней автоматизации, программных и аппаратных решений
comparator
Сообщения: 516
Зарегистрирован: 20 окт 2012, 12:40
Откуда: Мюнхен

Re: Умный дом по радиоканалу.

Сообщение comparator » 24 янв 2014, 14:49

2artkoz

Немного добавлю, если у вас не используется динамическое выделение переменных, а есть фиксированный набор, то практически от 2/3 кода можно избавиться. Папка ехт уходит полностью, вам всё равно надо писать свой HAL. ObjDict.* уходит так же больше чем на половину.
Плюс уйдет некоторое количество кода в MQTTS.c

То есть остается следующее.

Connect/ConnACK - Подсоединяемся к серверу
Register own variables / RegACK -на данном этапе регистрируем свои переменные и получаем для них ID
Subscribe '#' - это чтобы сервер мог так-же послать нам данные.

Ну и собственно работа; Publish <- ->
Ну а на все входящие Register, отвечаем, что не поддерживается.

Мне пока не ясно что у вас за проект, и как его можно оптимировать. STM8 то-же есть довольно толстые.
Было бы неплохо всётаки взглянуть на код.

artkoz
Сообщения: 10
Зарегистрирован: 06 янв 2014, 23:42

Re: Умный дом по радиоканалу.

Сообщение artkoz » 24 янв 2014, 16:51

x13dev писал(а): subscribe(на "#" - это значит на всё для конкретного устройства) - suback
вот! подписка на # важная штука, оказалось. Передал, сервер закидал регистрациями, уже прогресс, спасибо.
x13dev писал(а):
artkoz писал(а):09:39:48.73[W] /var/test.SetValue(8zX11=1, ) - Строка не распознана как действительное логическое значение.
Поподробнее, если можно.
ответил на SearchGW, передал CONNECT. получил ноду без ничего. В нее в консоли ImportTo и взял файлик Jeenode.xst. Появились пачки входов/выходов. Сделал вручную /var/test типа boolean. На лограмме связал ее с цифровым выходом, предполагая что цифровой выход по сути true/false.

Попробовал изменить /var/test. Получил в консоли вышеприведеное сообщение.
x13dev писал(а):Если где-то убавилось - значит в других местах прибавилось. (программистская мудрость про сложность) :geek:
в принципе да, есть такое :)
comparator писал(а): Subscribe '#' - это чтобы сервер мог так-же послать нам данные.
вот это оказалось ключевым. Я почему-то предполагал, что привязаные к устройству переменные при изменении (и если устройство подключено) по умолчанию будут отсылаться ему.

comparator писал(а): Ну а на все входящие Register, отвечаем, что не поддерживается.
не пойдет :) после коннекта если сказать subscribe # - сервер как раз регистрацией и передает TopicID для переменных.
Впрочем, если запросить регистрацию сначала устройством, наверное этого не будет?
comparator писал(а): STM8 то-же есть довольно толстые.
Было бы неплохо всётаки взглянуть на код.
у меня самый мелкий STM8S003F3. Проект приложил, но там ваши же исходники, перековерканые. Впрочем, при подключении через serial вполне сервером видится такое устройство.

У меня есть панель на светодиодных матрицах, там из-за ресурсов графики и прочего места под полный вариант нет. Ну и вообще, хочется понимать как работает, а не просто копировать, тем более что физический уровень по дому представлен одним проводом с собственной реализацией кодирования а-ля гибрид CAN по коллизиям и манчестерским кодированием всего остального. Беспроводные сегменты пойдут на nrf24l01 (да, я счастливчик - у меня в доме не ловится ни одной сети на 2,4ггц, кроме собственной :) ).
Вложения
mw_mqqtgw.zip
(112.06 КБ) 261 скачивание

x13dev
Сообщения: 396
Зарегистрирован: 22 окт 2012, 11:40
Откуда: Бавария

Re: Умный дом по радиоканалу.

Сообщение x13dev » 24 янв 2014, 18:34

artkoz писал(а):09:39:48.73[W] /var/test.SetValue(8zX11=1, ) - Строка не распознана как действительное логическое значение.
ответил на SearchGW, передал CONNECT. получил ноду без ничего. В нее в консоли ImportTo и взял файлик Jeenode.xst. Появились пачки входов/выходов. Сделал вручную /var/test типа boolean. На лограмме связал ее с цифровым выходом, предполагая что цифровой выход по сути true/false.

Попробовал изменить /var/test. Получил в консоли вышеприведеное сообщение.
Ну эти файлы для импорта в /etc/declarers/...
Я даже не знаю, в каком виде это импортировалось.
artkoz писал(а):Впрочем, если запросить регистрацию сначала устройством, наверное этого не будет?
Если делать регистрацию до подписки, в ответ приходит suback с TopicID.
artkoz писал(а):У меня есть панель на светодиодных матрицах, там из-за ресурсов графики и прочего места под полный вариант нет.
У меня матрица 16x8 при минимальной яркости неприятно моргает. Буду переделывать коммуникационный процессор - отдельно, муху - отдельно.

artkoz
Сообщения: 10
Зарегистрирован: 06 янв 2014, 23:42

Re: Умный дом по радиоканалу.

Сообщение artkoz » 24 янв 2014, 18:49

x13dev писал(а): Ну эти файлы для импорта в /etc/declarers/...
Я даже не знаю, в каком виде это импортировалось.
ну так метод научного тыка :) а как - щелкаем по ноде, а потом в меню import to.
x13dev писал(а): Если делать регистрацию до подписки, в ответ приходит suback с TopicID.
это я проверил, угу. После регистрации клиентом, если subscribe # - то уже сервер не будет со своей стороны register слать?
x13dev писал(а):У меня матрица 16x8 при минимальной яркости неприятно моргает. Буду переделывать коммуникационный процессор - отдельно, муху - отдельно.
да, я когда собирал свою 32 х 8 - с управлением тоже слегка недодумал, яркость низкую ставить не удается(моргает). Надо шим на само питание, имхо, а не пропуском кадров развертки.

wanvo
Сообщения: 164
Зарегистрирован: 30 сен 2013, 09:45
Откуда: Russia, Rostov-on-Don

Re: Умный дом по радиоканалу.

Сообщение wanvo » 24 янв 2014, 18:49

У меня опять какие-то непонятки.
Вроде все установил, в том числе свежую версию моно. Теперь при запуске из командной строки sudo mono engine.exe стартует без ругани, но по выходу выдает строчку
14:43:56.75[E] HttpServ.ContextReady->BeginGetContext: The object was used after being disposed.
Все бы ничего, но я не могу подключиться потому, что после каждого такого запуска меняется пароль в файле /home/mqtt/data/security.xst

Что не так, подскажите пожалуйста!

x13dev
Сообщения: 396
Зарегистрирован: 22 окт 2012, 11:40
Откуда: Бавария

Re: Умный дом по радиоканалу.

Сообщение x13dev » 24 янв 2014, 19:16

wanvo писал(а):У меня опять какие-то непонятки.
Вроде все установил, в том числе свежую версию моно. Теперь при запуске из командной строки sudo mono engine.exe стартует без ругани, но по выходу выдает строчку
14:43:56.75[E] HttpServ.ContextReady->BeginGetContext: The object was used after being disposed.
Все бы ничего, но я не могу подключиться потому, что после каждого такого запуска меняется пароль в файле /home/mqtt/data/security.xst

Что не так, подскажите пожалуйста!
persitentStorage работает корректно? Файл data/persist.db3 обновляется?
При корректном выключении такую ошибку можно игнорировать.

wanvo
Сообщения: 164
Зарегистрирован: 30 сен 2013, 09:45
Откуда: Russia, Rostov-on-Don

Re: Умный дом по радиоканалу.

Сообщение wanvo » 24 янв 2014, 19:19

Дата файла data/persist.db3 меняется а обновляется он или нет, не знаю как узнать.
А как сделать чтобы пароль в файле /home/mqtt/data/security.xst оставался постоянным?

x13dev
Сообщения: 396
Зарегистрирован: 22 окт 2012, 11:40
Откуда: Бавария

Re: Умный дом по радиоканалу.

Сообщение x13dev » 24 янв 2014, 19:31

artkoz писал(а): это я проверил, угу. После регистрации клиентом, если subscribe # - то уже сервер не будет со своей стороны register слать?
Если уже всё зарегистрировано ;)
artkoz писал(а):да, я когда собирал свою 32 х 8 - с управлением тоже слегка недодумал, яркость низкую ставить не удается(моргает).
Я управляю через программный ШИМ, по прерываниям от таймера включаю/выключаю строку. Проблема, что при длительности 1/256 не хватает времени на остальное и строка горит слишком долго(ярко).
artkoz писал(а): Надо шим на само питание, имхо, а не пропуском кадров развертки.
У стандартного ШИМа частота всего 120 Гц, думаю будет промахиваться.

artkoz
Сообщения: 10
Зарегистрирован: 06 янв 2014, 23:42

Re: Умный дом по радиоканалу.

Сообщение artkoz » 24 янв 2014, 19:39

x13dev писал(а): Если уже всё зарегистрировано ;)
отлично.

x13dev писал(а): Я управляю через программный ШИМ, по прерываниям от таймера включаю/выключаю строку. Проблема, что при длительности 1/256 не хватает времени на остальное и строка горит слишком долго(ярко).
у меня сейчас тупее - главный цикл контроллера крутит буфер по строкам, а в прерываниях буфер перезаполняется, если нужно, данными от хоста. Яркость регулируется пропуском кадров.
x13dev писал(а): У стандартного ШИМа частота всего 120 Гц, думаю будет промахиваться.
а что такое стандартный ШИМ? :) Для ночника на светодиодной ленте задействовал 2КГц шим, никаких мерцаний и очень плавная регулировка.

А вообще - у меня индикаторы с общим катодом, думал ДО управляющих транзисторов строк повесить еще один полевик для ШИМа яркости, тоже килогерц на 2. должно помочь, по идее.

x13dev
Сообщения: 396
Зарегистрирован: 22 окт 2012, 11:40
Откуда: Бавария

Re: Умный дом по радиоканалу.

Сообщение x13dev » 24 янв 2014, 19:43

wanvo писал(а):Дата файла data/persist.db3 меняется а обновляется он или нет, не знаю как узнать.
А как сделать чтобы пароль в файле /home/mqtt/data/security.xst оставался постоянным?
Новый security.xst создается если при старт ветка /etc/Broker/security пуста.

При перезагрузке все ранее созданные переменные(export, plc, var) остаются?

wanvo
Сообщения: 164
Зарегистрирован: 30 сен 2013, 09:45
Откуда: Russia, Rostov-on-Don

Re: Умный дом по радиоканалу.

Сообщение wanvo » 24 янв 2014, 19:49

x13dev ,
так я еще ничего не успел создать :) Понял куда смотреть, наверное что-то недокопировал. Спасибо!

comparator
Сообщения: 516
Зарегистрирован: 20 окт 2012, 12:40
Откуда: Мюнхен

Re: Умный дом по радиоканалу.

Сообщение comparator » 25 янв 2014, 13:28

Таки добрался до запуска сервера сервисом, проверено на debian, ubuntu, rpi + wheezy.
Доступно для скачивания.

Для установки читать 'readme'

небольшая выдержка

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

# install autostart script or >>>
#check path to mono-service - проверить путь до mono-service, отличается на разных системах
sudo find / -name mono-service
#If path is different as '/usr/local/bin/mono-service', correct the variable DAEMON in the file X13Svc
# если не ..  изменить соответственно переменную ... в файле ....
# устанавливаем атрибуты
sudo chown 755 X13Svc
#копируем в папку со скриптами автозапуска, путь может отличаться да других системах
sudo cp X13Svc /etc/init.d
# после этого можно попробовать запустить сервис вручную
sudo service X13Svc start
#install as service
# разрешаем автозапуск
sudo update-rc.d X13Svc defaults
#to remove service > sudo update-rc.d -f X13Svc remove
# restart system 
#если запустили вручную, то перезапуск не требуется, но лучше для успокоения сделать
sudo reboot

wanvo
Сообщения: 164
Зарегистрирован: 30 сен 2013, 09:45
Откуда: Russia, Rostov-on-Don

Re: Умный дом по радиоканалу.

Сообщение wanvo » 25 янв 2014, 14:18

Что-то я начинаю тихо офигевать. Пароль все время меняется. Вот что я делаю:

- установил RSE2.5 зашел пользователем "pi" включил SSH
- отвязал серийный порт
- mono-3.2.7 по ссылке http://sourceforge.net/projects/homegen ... ono-armhf/ исчез потому установил из репозитория - ставится версия 3.2.3
- установил sqlite из репозитория
- создал пользователя mqtt и добавил его в группу dialout
- зашел под пользователем mqtt и перешел в домашний каталог
- скачал X13.Home_v0_3.tar.gz и растарил его
- запустил mono bin/engine.exe вышел. Смотрю пароль cat data/security.xst
- опять запустил mono bin/engine.exe вышел. Смотрю пароль cat data/security.xst - он уже другой! :evil:
Соответственно подключиться из под винды не могу, не знаю пароля, соответственно не могу включить дебаглог.
Замкнутый круг какой-то.

comparator,
не будет наглостью попросить Вас выложить образ SD карты малины?

wanvo
Сообщения: 164
Зарегистрирован: 30 сен 2013, 09:45
Откуда: Russia, Rostov-on-Don

Re: Умный дом по радиоканалу.

Сообщение wanvo » 25 янв 2014, 14:44

Вот еще информация:
Удалось подключиться из под винды(подсмотрел пароль зайдя второй сессией putty). Ветка /etc/Broker/security не пустая. НО!
Сразу после подключения,малина его отбила, а в консоли написала такую фразу:

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

10:26:06.85[I] DreamWolf_CC@LONER-XP Connected
10:26:07.13[E] unhandled Exception System.IO.IOException: Bad file descriptor
  at System.IO.Ports.SerialPortStream.ThrowIOException () [0x00000] in <filename unknown>:0
  at System.IO.Ports.SerialPortStream.Dispose (Boolean disposing) [0x00000] in <filename unknown>:0
  at System.IO.Ports.SerialPortStream.Finalize () [0x00000] in <filename unknown>:0
10:26:07.14[I] DreamWolf_CC@LONER-XP Disconnected

comparator
Сообщения: 516
Зарегистрирован: 20 окт 2012, 12:40
Откуда: Мюнхен

Re: Умный дом по радиоканалу.

Сообщение comparator » 25 янв 2014, 15:23

wanvo писал(а):Вот еще информация:
Удалось подключиться из под винды(подсмотрел пароль зайдя второй сессией putty). Ветка /etc/Broker/security не пустая. НО!
Сразу после подключения,малина его отбила, а в консоли написала такую фразу:
Попробуйте для начала запустить в консоли от рута, то есть:
sudo mono engine.exe
очень похоже что где то забыли chmod или chown. и у системы нет доступа к базе.
Сервис все равно запускается под рутовыми правами, иначе под малиной мне так и не удалось получит доступ к ttyAMA0.

wanvo
Сообщения: 164
Зарегистрирован: 30 сен 2013, 09:45
Откуда: Russia, Rostov-on-Don

Re: Умный дом по радиоканалу.

Сообщение wanvo » 25 янв 2014, 15:26

comparator писал(а): Попробуйте для начала запустить в консоли от рута, то есть:
sudo mono engine.exe
очень похоже что где то забыли chmod или chown. и у системы нет доступа к базе.
Пробовал от рута, и через sudo и через sudo su. Не помогает. Сейчас контрольную пробу сделаю.
Сервис все равно запускается под рутовыми правами, иначе под малиной мне так и не удалось получит доступ к ttyAMA0.
А я ttyAMA0 выключаю.Это правильно?

UPD: чудеса какие-то. Запустилось! И пароль не поменялся. Едиственное на что думаю - может тогда перезагрузки не было, поэтому :)
Ладно, сечас буду HTTP сервер мучить.

comparator
Сообщения: 516
Зарегистрирован: 20 окт 2012, 12:40
Откуда: Мюнхен

Re: Умный дом по радиоканалу.

Сообщение comparator » 25 янв 2014, 15:49

С ttyAMA0 на малине были проблемы с доступом, то есть если я залогинившись с mqtt запускаю mono-service и далее по тексту, то малина находит подключенный гейт и все работает.
Если же она запускается сервисом с пользователем mqtt, то в лог сыпалось - access denied. Все пляски с бубном и прочие расширяющие сознание методы ни к чему не привели. Возможно забыл подключить еще какой то скриптик или установить какой-то ключ, но куча перелопаченной документации и форумов так ничего и не дали.
Поэтому только root, только хардкор ;)

wanvo
Сообщения: 164
Зарегистрирован: 30 сен 2013, 09:45
Откуда: Russia, Rostov-on-Don

Re: Умный дом по радиоканалу.

Сообщение wanvo » 25 янв 2014, 15:52

Опять 25.
При старте engine в консоль выдает

11:49:15.26[E] ContextReady[, ] Exception=System.NullReferenceException: Object reference not set to an instance of an object
at System.Net.HttpConnection.get_RemoteEndPoint () [0x00000] in <filename unknown>:0
at System.Net.HttpListenerRequest.get_RemoteEndPoint () [0x00000] in <filename unknown>:0
at X13.HttpServer.HttpServPl.ContextReady (IAsyncResult ar) [0x00000] in <filename unknown>:0


Точно так как и ранее нет VAR переменных, а color piker притворяется editbox`ом :D
В опере один раз при недозагрузке увидел переменные. Обновив страничку они пропали.
Поэтому только root, только хардкор ;)
Да это не принципиально, пусть рут, тем более это на малине а не на десктопе. Буду знать во всяком случае теперь.

Может образ карты своей выложить или файлы какие?

wanvo
Сообщения: 164
Зарегистрирован: 30 сен 2013, 09:45
Откуда: Russia, Rostov-on-Don

Re: Умный дом по радиоканалу.

Сообщение wanvo » 25 янв 2014, 16:07

Сейчас в консоль вывалило вот такое:

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

12:04:51.31[E] ContextReady[192.168.1.100:3492, /js/jquery-1.10.2.min.js] Exception=System.IO.IOException: Write failure ---> System.Net.Sockets.SocketException: The socket has been shut down
  at System.Net.Sockets.Socket.Send (System.Byte[] buf, Int32 offset, Int32 size, SocketFlags flags) [0x00000] in <filename unknown>:0
  at System.Net.Sockets.NetworkStream.Write (System.Byte[] buffer, Int32 offset, Int32 size) [0x00000] in <filename unknown>:0
  --- End of inner exception stack trace ---
  at System.Net.Sockets.NetworkStream.Write (System.Byte[] buffer, Int32 offset, Int32 size) [0x00000] in <filename unknown>:0
  at System.Net.ResponseStream.InternalWrite (System.Byte[] buffer, Int32 offset, Int32 count) [0x00000] in <filename unknown>:0
  at System.Net.ResponseStream.Write (System.Byte[] buffer, Int32 offset, Int32 count) [0x00000] in <filename unknown>:0
  at X13.HttpServer.HttpServPl.ContextReady (IAsyncResult ar) [0x00000] in <filename unknown>:0
12:04:51.40[E] ContextReady[192.168.1.100:3493, /favicon.ico] Exception=System.IO.IOException: Write failure ---> System.Net.Sockets.SocketException: The socket has been shut down
  at System.Net.Sockets.Socket.Send (System.Byte[] buf, Int32 offset, Int32 size, SocketFlags flags) [0x00000] in <filename unknown>:0
  at System.Net.Sockets.NetworkStream.Write (System.Byte[] buffer, Int32 offset, Int32 size) [0x00000] in <filename unknown>:0
  --- End of inner exception stack trace ---
  at System.Net.Sockets.NetworkStream.Write (System.Byte[] buffer, Int32 offset, Int32 size) [0x00000] in <filename unknown>:0
  at System.Net.ResponseStream.InternalWrite (System.Byte[] buffer, Int32 offset, Int32 count) [0x00000] in <filename unknown>:0
  at System.Net.ResponseStream.Write (System.Byte[] buffer, Int32 offset, Int32 count) [0x00000] in <filename unknown>:0
  at X13.HttpServer.HttpServPl.ContextReady (IAsyncResult ar) [0x00000] in <filename unknown>:0
После чего engine отрубился.

После перезапуска engine один раз даже удалось увидеть переменные и настоящий color piker. Потом, обновив страничку ничего не увидел, а в консоли куча мата.

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

12:10:26.04[E] ContextReady[, ] Exception=System.NullReferenceException: Object reference not set to an instance of an object
  at System.Net.HttpConnection.get_RemoteEndPoint () [0x00000] in <filename unknown>:0
  at System.Net.HttpListenerRequest.get_RemoteEndPoint () [0x00000] in <filename unknown>:0
  at X13.HttpServer.HttpServPl.ContextReady (IAsyncResult ar) [0x00000] in <filename unknown>:0

12:11:43.97[I] Shutdown engine
12:11:47.87[E] PersistenStorage.PrThread exception=System.NullReferenceException: Object reference not set to an instance of an object
  at Mono.Data.Sqlite.SQLite3.get_Changes () [0x00000] in <filename unknown>:0
  at Mono.Data.Sqlite.SqliteDataReader.NextResult () [0x00000] in <filename unknown>:0
  at Mono.Data.Sqlite.SqliteDataReader..ctor (Mono.Data.Sqlite.SqliteCommand cmd, CommandBehavior behave) [0x00000] in <filename unknown>:0
  at (wrapper remoting-invoke-with-check) Mono.Data.Sqlite.SqliteDataReader:.ctor (Mono.Data.Sqlite.SqliteCommand,System.Data.CommandBehavior)
  at Mono.Data.Sqlite.SqliteCommand.ExecuteReader (CommandBehavior behavior) [0x00000] in <filename unknown>:0
  at Mono.Data.Sqlite.SqliteCommand.ExecuteNonQuery () [0x00000] in <filename unknown>:0
  at X13.PLC.PersistentStorage.Process (LazyAction act) [0x00000] in <filename unknown>:0
  at X13.PLC.PersistentStorage.PrThread () [0x00000] in <filename unknown>:0

wanvo
Сообщения: 164
Зарегистрирован: 30 сен 2013, 09:45
Откуда: Russia, Rostov-on-Don

Re: Умный дом по радиоканалу.

Сообщение wanvo » 25 янв 2014, 16:59

Нашел как бороться со сменой пароля:
1.Стартуем из консоли engine.exe
2.Подключаемся второй сессией putty и смотрим изменившийся пароль
3.Подключаем конфигуратор из винды и создаем тестовую страничку
4.Выходим из конфигуратора. После этого пароль перестает меняться с каждым стартом engine.exe

Докладываю:
Скачал и установил новые сегодняшние файлы с гитхаба и установил gninx. В результате в хроме удалось-таки увидеть все правильно.

Ответить