Умный дом по радиоканалу
-
- Сообщения: 516
- Зарегистрирован: 20 окт 2012, 12:40
- Откуда: Мюнхен
Re: Умный дом по радиоканалу.
2artkoz
Немного добавлю, если у вас не используется динамическое выделение переменных, а есть фиксированный набор, то практически от 2/3 кода можно избавиться. Папка ехт уходит полностью, вам всё равно надо писать свой HAL. ObjDict.* уходит так же больше чем на половину.
Плюс уйдет некоторое количество кода в MQTTS.c
То есть остается следующее.
Connect/ConnACK - Подсоединяемся к серверу
Register own variables / RegACK -на данном этапе регистрируем свои переменные и получаем для них ID
Subscribe '#' - это чтобы сервер мог так-же послать нам данные.
Ну и собственно работа; Publish <- ->
Ну а на все входящие Register, отвечаем, что не поддерживается.
Мне пока не ясно что у вас за проект, и как его можно оптимировать. STM8 то-же есть довольно толстые.
Было бы неплохо всётаки взглянуть на код.
Немного добавлю, если у вас не используется динамическое выделение переменных, а есть фиксированный набор, то практически от 2/3 кода можно избавиться. Папка ехт уходит полностью, вам всё равно надо писать свой HAL. ObjDict.* уходит так же больше чем на половину.
Плюс уйдет некоторое количество кода в MQTTS.c
То есть остается следующее.
Connect/ConnACK - Подсоединяемся к серверу
Register own variables / RegACK -на данном этапе регистрируем свои переменные и получаем для них ID
Subscribe '#' - это чтобы сервер мог так-же послать нам данные.
Ну и собственно работа; Publish <- ->
Ну а на все входящие Register, отвечаем, что не поддерживается.
Мне пока не ясно что у вас за проект, и как его можно оптимировать. STM8 то-же есть довольно толстые.
Было бы неплохо всётаки взглянуть на код.
Re: Умный дом по радиоканалу.
вот! подписка на # важная штука, оказалось. Передал, сервер закидал регистрациями, уже прогресс, спасибо.x13dev писал(а): subscribe(на "#" - это значит на всё для конкретного устройства) - suback
ответил на SearchGW, передал CONNECT. получил ноду без ничего. В нее в консоли ImportTo и взял файлик Jeenode.xst. Появились пачки входов/выходов. Сделал вручную /var/test типа boolean. На лограмме связал ее с цифровым выходом, предполагая что цифровой выход по сути true/false.x13dev писал(а):Поподробнее, если можно.artkoz писал(а):09:39:48.73[W] /var/test.SetValue(8zX11=1, ) - Строка не распознана как действительное логическое значение.
Попробовал изменить /var/test. Получил в консоли вышеприведеное сообщение.
в принципе да, есть такоеx13dev писал(а):Если где-то убавилось - значит в других местах прибавилось. (программистская мудрость про сложность)
вот это оказалось ключевым. Я почему-то предполагал, что привязаные к устройству переменные при изменении (и если устройство подключено) по умолчанию будут отсылаться ему.comparator писал(а): Subscribe '#' - это чтобы сервер мог так-же послать нам данные.
не пойдет после коннекта если сказать subscribe # - сервер как раз регистрацией и передает TopicID для переменных.comparator писал(а): Ну а на все входящие Register, отвечаем, что не поддерживается.
Впрочем, если запросить регистрацию сначала устройством, наверное этого не будет?
у меня самый мелкий STM8S003F3. Проект приложил, но там ваши же исходники, перековерканые. Впрочем, при подключении через serial вполне сервером видится такое устройство.comparator писал(а): STM8 то-же есть довольно толстые.
Было бы неплохо всётаки взглянуть на код.
У меня есть панель на светодиодных матрицах, там из-за ресурсов графики и прочего места под полный вариант нет. Ну и вообще, хочется понимать как работает, а не просто копировать, тем более что физический уровень по дому представлен одним проводом с собственной реализацией кодирования а-ля гибрид CAN по коллизиям и манчестерским кодированием всего остального. Беспроводные сегменты пойдут на nrf24l01 (да, я счастливчик - у меня в доме не ловится ни одной сети на 2,4ггц, кроме собственной ).
- Вложения
-
- mw_mqqtgw.zip
- (112.06 КБ) 261 скачивание
Re: Умный дом по радиоканалу.
Ну эти файлы для импорта в /etc/declarers/...artkoz писал(а):09:39:48.73[W] /var/test.SetValue(8zX11=1, ) - Строка не распознана как действительное логическое значение.
ответил на SearchGW, передал CONNECT. получил ноду без ничего. В нее в консоли ImportTo и взял файлик Jeenode.xst. Появились пачки входов/выходов. Сделал вручную /var/test типа boolean. На лограмме связал ее с цифровым выходом, предполагая что цифровой выход по сути true/false.
Попробовал изменить /var/test. Получил в консоли вышеприведеное сообщение.
Я даже не знаю, в каком виде это импортировалось.
Если делать регистрацию до подписки, в ответ приходит suback с TopicID.artkoz писал(а):Впрочем, если запросить регистрацию сначала устройством, наверное этого не будет?
У меня матрица 16x8 при минимальной яркости неприятно моргает. Буду переделывать коммуникационный процессор - отдельно, муху - отдельно.artkoz писал(а):У меня есть панель на светодиодных матрицах, там из-за ресурсов графики и прочего места под полный вариант нет.
Re: Умный дом по радиоканалу.
ну так метод научного тыка а как - щелкаем по ноде, а потом в меню import to.x13dev писал(а): Ну эти файлы для импорта в /etc/declarers/...
Я даже не знаю, в каком виде это импортировалось.
это я проверил, угу. После регистрации клиентом, если subscribe # - то уже сервер не будет со своей стороны register слать?x13dev писал(а): Если делать регистрацию до подписки, в ответ приходит suback с TopicID.
да, я когда собирал свою 32 х 8 - с управлением тоже слегка недодумал, яркость низкую ставить не удается(моргает). Надо шим на само питание, имхо, а не пропуском кадров развертки.x13dev писал(а):У меня матрица 16x8 при минимальной яркости неприятно моргает. Буду переделывать коммуникационный процессор - отдельно, муху - отдельно.
Re: Умный дом по радиоканалу.
У меня опять какие-то непонятки.
Вроде все установил, в том числе свежую версию моно. Теперь при запуске из командной строки sudo mono engine.exe стартует без ругани, но по выходу выдает строчку
14:43:56.75[E] HttpServ.ContextReady->BeginGetContext: The object was used after being disposed.
Все бы ничего, но я не могу подключиться потому, что после каждого такого запуска меняется пароль в файле /home/mqtt/data/security.xst
Что не так, подскажите пожалуйста!
Вроде все установил, в том числе свежую версию моно. Теперь при запуске из командной строки sudo mono engine.exe стартует без ругани, но по выходу выдает строчку
14:43:56.75[E] HttpServ.ContextReady->BeginGetContext: The object was used after being disposed.
Все бы ничего, но я не могу подключиться потому, что после каждого такого запуска меняется пароль в файле /home/mqtt/data/security.xst
Что не так, подскажите пожалуйста!
Re: Умный дом по радиоканалу.
persitentStorage работает корректно? Файл data/persist.db3 обновляется?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
Что не так, подскажите пожалуйста!
При корректном выключении такую ошибку можно игнорировать.
Re: Умный дом по радиоканалу.
Дата файла data/persist.db3 меняется а обновляется он или нет, не знаю как узнать.
А как сделать чтобы пароль в файле /home/mqtt/data/security.xst оставался постоянным?
А как сделать чтобы пароль в файле /home/mqtt/data/security.xst оставался постоянным?
Re: Умный дом по радиоканалу.
Если уже всё зарегистрированоartkoz писал(а): это я проверил, угу. После регистрации клиентом, если subscribe # - то уже сервер не будет со своей стороны register слать?
Я управляю через программный ШИМ, по прерываниям от таймера включаю/выключаю строку. Проблема, что при длительности 1/256 не хватает времени на остальное и строка горит слишком долго(ярко).artkoz писал(а):да, я когда собирал свою 32 х 8 - с управлением тоже слегка недодумал, яркость низкую ставить не удается(моргает).
У стандартного ШИМа частота всего 120 Гц, думаю будет промахиваться.artkoz писал(а): Надо шим на само питание, имхо, а не пропуском кадров развертки.
Re: Умный дом по радиоканалу.
отлично.x13dev писал(а): Если уже всё зарегистрировано
у меня сейчас тупее - главный цикл контроллера крутит буфер по строкам, а в прерываниях буфер перезаполняется, если нужно, данными от хоста. Яркость регулируется пропуском кадров.x13dev писал(а): Я управляю через программный ШИМ, по прерываниям от таймера включаю/выключаю строку. Проблема, что при длительности 1/256 не хватает времени на остальное и строка горит слишком долго(ярко).
а что такое стандартный ШИМ? Для ночника на светодиодной ленте задействовал 2КГц шим, никаких мерцаний и очень плавная регулировка.x13dev писал(а): У стандартного ШИМа частота всего 120 Гц, думаю будет промахиваться.
А вообще - у меня индикаторы с общим катодом, думал ДО управляющих транзисторов строк повесить еще один полевик для ШИМа яркости, тоже килогерц на 2. должно помочь, по идее.
Re: Умный дом по радиоканалу.
Новый security.xst создается если при старт ветка /etc/Broker/security пуста.wanvo писал(а):Дата файла data/persist.db3 меняется а обновляется он или нет, не знаю как узнать.
А как сделать чтобы пароль в файле /home/mqtt/data/security.xst оставался постоянным?
При перезагрузке все ранее созданные переменные(export, plc, var) остаются?
Re: Умный дом по радиоканалу.
x13dev ,
так я еще ничего не успел создать Понял куда смотреть, наверное что-то недокопировал. Спасибо!
так я еще ничего не успел создать Понял куда смотреть, наверное что-то недокопировал. Спасибо!
-
- Сообщения: 516
- Зарегистрирован: 20 окт 2012, 12:40
- Откуда: Мюнхен
Re: Умный дом по радиоканалу.
Таки добрался до запуска сервера сервисом, проверено на debian, ubuntu, rpi + wheezy.
Доступно для скачивания.
Для установки читать 'readme'
небольшая выдержка
Доступно для скачивания.
Для установки читать '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
Re: Умный дом по радиоканалу.
Что-то я начинаю тихо офигевать. Пароль все время меняется. Вот что я делаю:
- установил 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 - он уже другой!
Соответственно подключиться из под винды не могу, не знаю пароля, соответственно не могу включить дебаглог.
Замкнутый круг какой-то.
comparator,
не будет наглостью попросить Вас выложить образ SD карты малины?
- установил 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 - он уже другой!
Соответственно подключиться из под винды не могу, не знаю пароля, соответственно не могу включить дебаглог.
Замкнутый круг какой-то.
comparator,
не будет наглостью попросить Вас выложить образ SD карты малины?
Re: Умный дом по радиоканалу.
Вот еще информация:
Удалось подключиться из под винды(подсмотрел пароль зайдя второй сессией putty). Ветка /etc/Broker/security не пустая. НО!
Сразу после подключения,малина его отбила, а в консоли написала такую фразу:
Удалось подключиться из под винды(подсмотрел пароль зайдя второй сессией 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
-
- Сообщения: 516
- Зарегистрирован: 20 окт 2012, 12:40
- Откуда: Мюнхен
Re: Умный дом по радиоканалу.
Попробуйте для начала запустить в консоли от рута, то есть:wanvo писал(а):Вот еще информация:
Удалось подключиться из под винды(подсмотрел пароль зайдя второй сессией putty). Ветка /etc/Broker/security не пустая. НО!
Сразу после подключения,малина его отбила, а в консоли написала такую фразу:
sudo mono engine.exe
очень похоже что где то забыли chmod или chown. и у системы нет доступа к базе.
Сервис все равно запускается под рутовыми правами, иначе под малиной мне так и не удалось получит доступ к ttyAMA0.
Re: Умный дом по радиоканалу.
Пробовал от рута, и через sudo и через sudo su. Не помогает. Сейчас контрольную пробу сделаю.comparator писал(а): Попробуйте для начала запустить в консоли от рута, то есть:
sudo mono engine.exe
очень похоже что где то забыли chmod или chown. и у системы нет доступа к базе.
А я ttyAMA0 выключаю.Это правильно?Сервис все равно запускается под рутовыми правами, иначе под малиной мне так и не удалось получит доступ к ttyAMA0.
UPD: чудеса какие-то. Запустилось! И пароль не поменялся. Едиственное на что думаю - может тогда перезагрузки не было, поэтому
Ладно, сечас буду HTTP сервер мучить.
-
- Сообщения: 516
- Зарегистрирован: 20 окт 2012, 12:40
- Откуда: Мюнхен
Re: Умный дом по радиоканалу.
С ttyAMA0 на малине были проблемы с доступом, то есть если я залогинившись с mqtt запускаю mono-service и далее по тексту, то малина находит подключенный гейт и все работает.
Если же она запускается сервисом с пользователем mqtt, то в лог сыпалось - access denied. Все пляски с бубном и прочие расширяющие сознание методы ни к чему не привели. Возможно забыл подключить еще какой то скриптик или установить какой-то ключ, но куча перелопаченной документации и форумов так ничего и не дали.
Поэтому только root, только хардкор
Если же она запускается сервисом с пользователем mqtt, то в лог сыпалось - access denied. Все пляски с бубном и прочие расширяющие сознание методы ни к чему не привели. Возможно забыл подключить еще какой то скриптик или установить какой-то ключ, но куча перелопаченной документации и форумов так ничего и не дали.
Поэтому только root, только хардкор
Re: Умный дом по радиоканалу.
Опять 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`ом
В опере один раз при недозагрузке увидел переменные. Обновив страничку они пропали.
Может образ карты своей выложить или файлы какие?
При старте 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`ом
В опере один раз при недозагрузке увидел переменные. Обновив страничку они пропали.
Да это не принципиально, пусть рут, тем более это на малине а не на десктопе. Буду знать во всяком случае теперь.Поэтому только root, только хардкор
Может образ карты своей выложить или файлы какие?
Re: Умный дом по радиоканалу.
Сейчас в консоль вывалило вот такое:
После чего engine отрубился.
После перезапуска engine один раз даже удалось увидеть переменные и настоящий color piker. Потом, обновив страничку ничего не увидел, а в консоли куча мата.
Код: Выделить всё
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 один раз даже удалось увидеть переменные и настоящий 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
Re: Умный дом по радиоканалу.
Нашел как бороться со сменой пароля:
1.Стартуем из консоли engine.exe
2.Подключаемся второй сессией putty и смотрим изменившийся пароль
3.Подключаем конфигуратор из винды и создаем тестовую страничку
4.Выходим из конфигуратора. После этого пароль перестает меняться с каждым стартом engine.exe
Докладываю:
Скачал и установил новые сегодняшние файлы с гитхаба и установил gninx. В результате в хроме удалось-таки увидеть все правильно.
1.Стартуем из консоли engine.exe
2.Подключаемся второй сессией putty и смотрим изменившийся пароль
3.Подключаем конфигуратор из винды и создаем тестовую страничку
4.Выходим из конфигуратора. После этого пароль перестает меняться с каждым стартом engine.exe
Докладываю:
Скачал и установил новые сегодняшние файлы с гитхаба и установил gninx. В результате в хроме удалось-таки увидеть все правильно.