РЕКЛАМА НА ФОРУМХАУС Спасибо! Всё что описали выше работает! Реле управляется через switch. Как на странице так и с планшета. А вот подхват температуры от ардуино никак. С примером разобрался..перешью скетч с учетом количества датчиков. Предложенный вариант по 1-ware я думал только нет мастера сети (заводского) а самодельный не работает с температурными датчиками и ключами одновременно. Не знаю но либо ключи (они управляются) либо температурные датчики. правда максимум 5 шт. Всего 8, разбиты на 5 и 3 (ветки по этажам). Работали с Бенукс через разные мастера. Ключи тоже в отдельной ветке. Наверное закажу мастер ds9490 через почту. Еще вопрос. сижу никак не вникну в таинство? Number mytemperature {serialstring="COM5;=(mytemperature\-?\d+\.?\d*)"} это запрос на данные о температуре с Ардуино. ? Number Temperature_GF_Corridor "Температура [%.1f °C]" <temperature> (Temperature, GF_Corridor) это пример кода (демо) но как рабочий вариант. Если меняю просто temperature на mytemperature: то с экрана вообще пропадают данные о выводе температуры. Есть еще строка Number Temperature_Setpoint "Температура [%.1f °C]" <temperature> никак не вижу связь, откуда она берет данные, но понятно что она определяет вывод определенного формата. 2 цифры и в Цельсий. Ардуино выдает величину с например 12,354564667 понятно что это 12 С. но как их вживить хотя бы в одну строку. Например "Коридор" потом когда датчики подключу буду разбивать по такому примеру все остальные. Либо придется ждать мастер сети? Number Temperature_Setpoint "Температура [%.1f °C]" <temperature> с этим разобрался это уставка. через планшет работает.
Код: Number Temperature_GF_Corridor "Температура [%.1f °C]" <temperature> (Temperature, GF_Corridor) Number - это тип айтема Temperature_GF_Corridor - это название айтема, оно используется в сайтмапе или в правилах "Температура [%.1f °C]" - это формат вывода значения. Занчение выводится в виде строки. Справа выводится то что в []. Остальное выводится слева. То есть в данном примере слева будет слово "Температура", а справа вещественное число. Потому что f означает float. .1 перед f означает что округлять до 1 знака после запятой. Если хотите выводить целое число - будет %d, если строку - будет %s. <temperature> - это просто название иконки которая будет отображаться слева от слова "Температура" (Temperature, GF_Corridor) - это названия групп, можете на них пока вообще забить Изменения температуры в демке фиктивны и генерируются правилами. Они не связаны ни с какими реальными датчиками. Что-то типа такого (из файла demo. rules) Код: rule "Initialize room temperatures" when System started then Temperature.members.forEach(temperature| postUpdate(temperature, 20.0 + (25.0 - (Math::random * 50.0).intValue) / 10.0) ) end Код: Number mytemperature {serialstring="COM5;=(mytemperature:(\-?\d+\.?\d*)"} Вы уверены что правильно скопировали описание айтема? Должно быть Код: Number mytemperature {serialstring="COM5;REGEXP=(mytemperature:(\-?\d+\.?\d*))"}
Спасибо! Наверное. да ошибка..вкралась "собачка".. Еще один момент. Number mytemperature это айтем. Он уже имеет значение температуры из Ардуино. Получается что при каждом выводе данных идет опрос на Ардуино. Или это делается раз в 5 сек через Крон. Иными словами сейчас датчик один будет несколько т. е. за один опрос будет один ответ с данными температуры (один датчик) или каждый датчик будет иметь "адресный" опрос. Как в сети 1-ware/
Ничего не понял, где вопрос, где ответ. Похоже что вы пытаетесь использовать несколько датчиков температуры. Это можно осуществить двумя способами 1) Привязать каждый датчик на отдельную ногу ардуины. После этого нужно внести минимальные изменения в скетч. Например, добавляем еще один датчик на ногу ардуины 8 Код: OneWire ds1 (7); //arduino pin 7 = data OneWire ds2 (8); //новый датчик И добавляем функцию опроса этого датчика Код: if (process(&ds1, &data) == 1) { Serial. print("mytemperature:"); Serial. println (data,DEC); } if (process(&ds2, &data) == 1) { Serial. print("mytemperature2:"); Serial. println (data,DEC); } Ну и в айтемс Код: Number mytemperature_new_on_arduino_pin_8 {serialstring="COM5;REGEXP=(mytemperature2:(\-?\d+\.?\d*))"} 2) переписать скетч, чтобы он работал с сетью датчиков по взрослому и возвращал не только температуру но и ROM адрес датчика. Это требует определенного терпения и обучения, так что у вас не получится Ну и в очередной раз повторю свой совет - перестаньте биться с ардуиной и сделайте все на owfs
Т. е. если следовать: Number mytemperature {serialstring="COM5;REGEXP=(mytemperature\-?\d+\.?\d*)"} например 13.01 получили данные, дальше по идее должно: Number mytemperature {serialstring="COM5;=(mytemperature\-?\d+\.?\d*)"} <temperature> (Temperature, GF_Corridor) как бы отразиться значение с привязкой к картинке коридор. Но тогда как в правилах и сат мапе задать задать? Я запутался в ..соснах. И еще. описание Swiche и его работа стала понятна. Есть еще Contact ..я так понимаю это кнопка. У нее! только положение ON/OFF а его описание (вывод) идет вот таким образом [MAP (en.map):%s] что это за форма? Или это обязательный параметр. В вики не нашел ничего. Да сегодня заказал ds9490R.
Сорри, я с трудом понимаю, что вы пытаетесь сказать. Поэтому отвечаю только на то что понимаю. Все не так. Хоть немного напрягитесь и поищите в интеренете. Contact это не кнопка. - взято отсюда https://code.google.com/p/openhab/wiki/Items У айтемов нет положения, есть состояния. - взято отсюда https://www.forumhouse.ru/threads/46006/page-44#post-7723591 MAP к вам отношения вообще не имеет, но если бы вы чутьчуть напряглись и погуглили, то вот тут https://code.google.com/p/openhab/wiki/Items вы бы прочли следующие Я всегда рад помочь если вы что-то делаете и у вас не получается, но тупо заставлять меня заниматься за вас поиском в интернете наверное не совсем правильно
Извиняюсь за гнался...Вопросы будут но конкретные, по существу. С Уважением! Вот вопрос? Выполнены все рекомендуемые Вами действия. т. е. созданы правила. в соответствии с которыми каждые 5 сек. Ардуино направляется "status" / Это видно в командной строке но когда я стал смотреть на саму ардуино (она в боксе) то увидел что обращение отсутствует. Не моргают светодиоды. Однако через монитор порта программы arduino-1.0.5 на запрос status ардуино сразу выдает положенные сведения. и моргают светодиоды. Может в настройках serialstring должно быть 9600 бит. А там другое значение...Как это проверить. В остальном вроде вопросы сами решаются..
В serialstring как раз скорость 9600 и изменить ее нельзя. А ком порт выбран правильно? Он свободен когда опенхаб работает? К нему не подключена никакая другая программа? Для диагностики погасите опенхаб. Найдите в директории опенхаба папку logs и вытрите из нее все. В правиле поменяйте 5 секунд на 1 секунду. Запустите опенхаб и после того как он стартует подождите некоторое время, чтобы на консоли было видно, как в ардуино уходит "status". Пусть запрос статуса пройдет раз 10. Снова погасите опенхаб. И содержимое папки logs - в студию (events.log и openhab. log) А вроде раньше все работало?
Вот так проверьте еще https://www.forumhouse.ru/threads/46006/page-42#post-7606275 в вашем случае ессно команда должна быть Код: osgi>ss serial
Ss serial вот такой выход? активен как я понял не тот биндинг лишние все удалил оставил только те которые идут как демо и добавил ВАш. "Framework is launched." id State Bundle 202 RESOLVED org. openhab. io. transport. serial_1.3.1.201309182025 226 ACTIVE org. openhab. binding. serial_1.3.1.201309182025 230 INSTALLED org. openhab. binding. serialstring_1.4.0.201310161839 osgi> 00:24:40.015 INFO runtime. busevents[:42] - Arduino received command statu s
@vores8, Что-то я не догоню, как быть с отрицательной температурой... Как похолодало - за окном стало 655.33 градуса. Это потому, что я на 100 делю... Понятно, что дело в типе данных - от контроллера прилетает word, а я пытаюсь его int'ом сделать. А вот как привести WORD к INT в опенхабе - недопонял... По идее можно куда-то запихать конструкцию типа Код: if Temp > 32767 then IntTemp := 65535 - Temp else IntTemp := Temp; А куда? В scripts? И сам себе отвечу - в rules! Код: var n3 = Number3.state as DecimalType if (n3 > 32767){n3 = -1*(65535 - n3)} var result3 = n3 / 100 Temperature3.sendCommand(result3)
Ну или сдвигать n3 вправо до упора и смотреть 8-й бит. Если он выставлен в 1 - то число отрицательное Должно быть вот так Код: osgi> ss serial "Framework is launched." id State Bundle 202 RESOLVED org.openhab.io.transport.serial_1.3.1.201309182025 223 ACTIVE org.openhab.binding.serialstring_1.4.0.201310161839 226 ACTIVE org.openhab.binding.serial_1.4.0.201310161506 версии могут отличаться, но статус должен совпадать. Попробуйте выкинуть все лишнее, убрать все демо-фишки из айтемов, правил и сайтмапов. Оставить только нужные вам байндинги в addons Получившиеся файлы. items. rules. sitemap и логи от запуска кладите сюда, будем посмотреть Вот здесь кстати есть совет (http://blog.sarathonline.com/2008/12/osgi-starters-guide-for-install-update.html) Поскольку вы наверняка его читать не будете, привожу здесь в разжеванном виде. В консоли osgi попытаться стартовать байндинг руками. Поскольку у вас serialstring имеет id 230 Код: osgi> start 230 и посмотреть что вывалится в консоль
ОК! как доберусь до сервера. Нет я прилежный ученик! и читаю...но. Вечером. Создам пустой айтем с одним только управлением ардуино и запросом статус..я думаю будет все видно. Кстати у меня версия Опен НАВ 1.3.1 может попробовать 1.2.1. поскольку на форумах видел высказывания что "байдинги" от разных версий не подходят? За совет отдельное спасибо.
Да простят меня админы..на рабоче машине запустил пустой. Карта естественно не отразилась (сайт мап пустой) но org. openhab. binding. serialstring_1.4.0.201310161839 был активно. может есть конфликт портов. Т. е. на порт 5 претендует еше кто то ? В данной машине этого конфликта нет а в сервере я думаю что может. поскольку присутствует программа которая инициирует виртуальные порты это относиться к bluetooth (при установке появилось 9 новых портов, попробую ее деинсталлировать). osgi> ss ser13:24:05.002 INFO runtime. busevents[:42] - Arduino received command status ial "Framework is launched." id State Bundle 199 RESOLVED org. openhab. io. transport. serial_1.2.0.201304141051 218 ACTIVE org. openhab. binding. serial_1.4.0.201311270213 osgi> 13:24:10.003 INFO runtime. busevents[:42] - Arduino received command status Переустановил всё. Установил org. openhab. binding. serial-1.3.1 и все ...пошло.Отклик сразу и все параметры... пока наслаждаюсь результатом. Теперь следующий этап привязка остальных функций. Спасибо за помощь! Вот и вопрос? Number mytemperature {serial="COM5;REGEXP=(mytemperature\-?\d+\.?\d*)"} так выводиться запрос на Ардуино. Данные отражаются в командной строке. Но на планшете и странице (основной) их нет.
Вот и ответ? А в сайтмапе прописать - непосильный труд? Или жива детская мечта о чуде что все само случиться?