РЕКЛАМА НА ФОРУМХАУС Нет, нужен именно org. openhab. binding. onewire-1.3.1.jar owfs под виндой ставиться тоже без особых проблем. Какие именно у вас трудности? Сносите в винде в диспетчере устройств все что вам понаставил даллас/максим Ставите owfs отсюда https://sourceforge.net/projects/owfs/files/owfs/2.8p14/ все галки по умалчанию (оно вам по дороге поставит libusb отсюда http://sourceforge.net/apps/trac/libusb-win32/wiki) Дальше подключаете свисток (usb<->1-wire) К свистку цепляете свои 1-wire устройства Запускаете (вот тут точно не помню, по моему так) Код: owserver -u --debug Вы сразу можете проверить как все это работает без опенхаба (http://owfs.org/index.php?page=owshell) Например Код: owdir -s 4304 должно выдать вам весь список датчиков, которые подключены к вашему свистку. ну и потом owread и owwrite. И вобщем-то это все
Еще один момент, может тоже проходили. Свисток (DS9490R) Имеет встроенный идентификатор. Т. е определяется как USB в моем варианте работают 2 самодельных адаптера на основе МАХ232 СРЕ (преобразователь уровней) и используют СОМ1 и СОМ2 порты. Бенукс и другие программы превосходно с этими адаптерами дружат даже более чем. Проблем нет поскольку как указывал сети разделены на ключи и температурные датчики. Но OWFS эти адаптеры не видят. Толи, эти программы уже не работают с такими адаптерами или, в настройках не указан ключ работы с СОМ портами. Но все рекомендуемые варианты я пробовал. Получается что Бенукс и ТемпКеппер например, прекрасно понимают эти адаптеры а OWFS нет. Ваши рекомендации проверю вечером на сервере.
Схема адаптеров на одной микросхеме их 2 (2) работают без замечаний. Сигналы четкие и ошибок нет. А свисток заказал но ждать дней 7-10...
Я вот недавно научил OpenHab понимать голос через android смартфон. Баловство это, конечно, но прикольно. Командую "отбой" и дом становится на сигнализацию. Командую "включить воду" и наружу подается вода (у меня там управляемый шаровый кран). Простые русские слова понимает хорошо, а сложные, вроде "аэрация" - не очень. Я для этого на телефоне установил программу голосового управления "utter!" и исполнитель Tasker, который умеет всевозможные http запросы посылать (post, get). Utter распознает голос и вызывает обработчик в Tasker. Обработчик выполняет REST запрос через http на OpenHab. Только настраивать Utter приходится кропотливо - каждый возможный вариант команды учитывать (включи воду, включить воду, воду включи, воду включить, подай воду, воду подай, и т. д.). Utter используют стандартные службы TTS и распознавания голоса (Google, к примеру). Есть еще одно ограничение для русского языка на сегодняшний момент в бетта версии Utter - распознавание можно инициировать только нажатием ярлыка. Разработчики обещают это позже исправить. Английский распознаватель можно инициировать трясением и еще какими-то способами.
Отлично! По пройденной теме добавлю, что OWFS c моими адаптерами не работает. .Жду фирменный. Другие программы с ними отлично и проблем нет, я для пробы включал 5 датчиков ds18b20 гроздью на конец бухты кабеля UTP примерно 60 м. питание стандарт 5 а. (в сети 12, на каждый датчик стабилизатор). Но ...что сказать адаптер работает. да и работал он. Я думал, может затяжка фронтов..может еще чего. Думаю что просто версия OWFS для win (c с сайта) не работает с адаптерами аналогами DS9097E (COM) поэтому пока эксперименты остановил до приезда DS9490R.
Вообще-то owfs должен работать с 9097 https://owfs.org/index.php?page=usb-usb9097 http://www.ab-log.ru/forum/viewtopic.php?f=1&t=118
@vores8, что-то у меня мысль остановилась, как правильно свет диммить опенхабом. в итемах я описываю диммер: Код: Number Dimmer1 {modbus="slave4:3"} Dimmer DimmedLight "Dimmer [%d %%]" <slider> У меня как раз эта переменная в кодесисе изменяется от 0 до 100. пишу его в сайтмапе: Код: Slider item=DimmedLight Переменную Dimmer1 в консоли вижу. а вот как написать правила, мозгов не хватает. Код: rule "Dimmed Light" when Dimmer1 changed or Item DimmedLight received command then var Number percent = Dimmer1 if(DimmedLight.state instanceof DecimalType) percent = DimmedLight.state as DecimalType if(receivedCommand==INCREASE) percent = percent + 5 if(receivedCommand==DECREASE) percent = percent - 5 if(percent<0) percent = 0 if(percent>100) percent = 100 postUpdate(DimmedLight, percent); end
Это да. Данный адаптер на основе DS9480 Он дружит c OWFS 2/8/p14 lдело то что аналог моих адаптеров, это DS9497e, они, на основе простых элементов, без микросхем, и основные сигналы формируются программным способом. Что наверное на Win проблематично, или еще что. Иными словами, все последние адаптеры это активные микропроцессорные устройства которые избавляют от проблем на уровне программной реализации алгоритма обработки сигнала 1-ware. Из хороших новостей ! все что Вы ранее описывали, все работает, пока правда в тестовом режиме (сам разбираюсь что к чему) но работает. Ворота управляются как было задумано, .сейчас, немного хочу подправить алгоритм, (скетч) под небольшую задержку на закрытие по работавшему датчику (т.е) при пересечении проема (ИК) датчик останавливает створу. а спустя 5-7 сек опять пускает) на настоящий момент это реализовано на сервере, хочу чтобы это делала ардуинка. Я все таки сторонник, чтобы простые функции (защита, логика управления. обработка нажатий кнопок (дребезг) исполнялись на железе. И потом, выключение сервера, тогда никак не отражается на работе ворот. У меня так работает управление освещением и другими. С Уважением!
Ну во первых, определитесь что именно хочется. Как я понимаю из кода, есть диммер на модбасе Dimmer1, которым хочется управлять из опенхаба. Но при этом сам Dimmer1 может изменяться независимо от опенхаба - правильно? Исходя из этого вижу как минимум две проблемы с правилом условие when надо изменить Код: when Item Dimmer1 received update or Item DimmedLight received command then И в конце апдейтить не DimmedLight (он и так апдейтится опенхабом), а модбасовский Dimmer1, то есть Код: postUpdate(DimmedLight, percent); заменить на Код: Dimmer1.sendCommand(percent)
Проект выходного дня - прикручиваем электрический счетчик к опенхабу и интернету. По совету одного умного человека решил озаботиться мониторингом потребляемой электрической мощности в доме. Реализация проекта заняла примерно полтора часа. В результате вот тут https://xively.com/feeds/505833235 могу наблюдать показания Итак, что имеем. Счетчик НЕВА 306 (http://www.meters.taipit.ru/electro/catalog/3/14/) У счетчика есть такая вот функция (наверное у всех современных счетчиков она есть) Овеновский модуль МДВВ http://www.owen.ru/catalog/92002761 ну и овеновский контроллер (любой), к которому МДВВ подсоединен как slave. Сам контроллер видится в локальной сети как Modbus TCP Slave Идея: Выход счетчика генерирует импульсы. 1600 импульсов = 1 Квт*ч посчитанной энергии. То есть если импульсы следуют с периодом 2.25 сек, то потребляемая мощность составляет 1Квт. Соотвественно, измеряя время между импульсами, вычисляем реальную потребляемую мощность. Аппаратная часть: 30 см двужильного провода от клемм 20 и 21 счетчика к клеммам COM и какой-нибудь вход МДВВ Программная часть: Пишем кусок кода в CodeSys, который измеряет время между импульсами, преобразовывает это в мощность и пишет в какой-нибудь регистр, доступный для чтения опенхабу. Что то вроде этого Код: power_pulse := stNow.ulHigh * 65536.0 + stNow.ulLow - power_pulse; power_pulse_sec := power_pulse / 1000000.0; power_pulse_span := 2250 / power_pulse_sec; proc_CurrentTime(SystemTime := stNow, TimeDate := dtNow); power_pulse := stNow.ulHigh * 65536.0 + stNow.ulLow; при этом power_pulse_span - это собственно и есть значение мощности, в моем случае мапится на модбасовский регистр Код: power_pulse_span AT %QD10.1.0: REAL; В опенхабе (напишу подробно, поскольку многие пытаются это делать) В items добавляем 3 айтема. Код: Number PowerReadings "Электричество [%.0f w]" Number PowerReadings1 {modbus="slave2:0"} Number PowerReadings2 {modbus="slave2:1"} PowerReadings1 и PowerReadings2 - это половинки значения REAL, хранящиеся в двух последовательных модбасовских регистрах. PowerReadings - это собственно нужное нам значение мощности. Осталось написать правило, которое из двух модбасовских регистров собирает REAL. Привожу его здесь полностью, поскольку на эту тему было много вопросов Код: rule "Power readings" when Item PowerReadings1 changed or Item PowerReadings2 changed then var n2 = (PowerReadings1.state as DecimalType).intValue var n1 = (PowerReadings2.state as DecimalType).intValue var temp = n1 * 256 * 256 + n2 var sign = -temp.shiftRight(31).bitwiseNot() var exponent = temp.shiftRight(23).bitwiseAnd(255) - 127 var mantissa = temp.bitwiseAnd(8388607).doubleValue / 8388608 + 1 var result = sign * mantissa * 1.shiftLeft(exponent) PowerReadings.sendCommand(result) end И теперь вы можете с PowerReadings делать что угодно. Я например через mqtt отсылаю его на xively (см линк выше) Из минусов - почему-то иногда пропускаются импульсы от счетчика. То есть точное значение потребления энергии таким способом не посчитаешь. Но общую картину получить можно, в моем случае этого достаточно
Я начал не с той стороны. Итак, есть овеновский контроллер, к нему прикручен модуль аналогового вывода 0-10в. На выход модуля сам управляемый 0-10в диммер. Управление сейчас происходит с помощью энкодера PEC11-4115K-S0018... Это работает. И тут, на свою голову, увидел Ваш пост про опенхаб. И началось... В общем ситуация такая - как передавать текущее значение яркости в опенхаб по модбасу понятно. А вот как это добро внутри опенхаба крутить - не очень. Итак, первое - создаем переменные для приема данных по модбасу - в файл demo. items пишем Код: Number Dimmer1 {modbus="slave4:3"} Dimmer DimmedLight "Dimmer [%d %%]" <slider> Первой строкой описываю данные, прилетающие по модбасу, второй собственно сам опенхабовский диммер, который помещаю на сайтмап: Код: Slider item=DimmedLight Осталось фигня - написать правила. Код: rule "Dimmed Light" when Item Dimmer1 received update or Item DimmedLight received command then var Number percent = Dimmer1 if(DimmedLight.state instanceof DecimalType) percent = DimmedLight.state as DecimalType if(receivedCommand==INCREASE) percent = percent + 5 if(receivedCommand==DECREASE) percent = percent - 5 if(percent<0) percent = 0 if(percent>100) percent = 100 Dimmer1.sendCommand(percent) end Я правильно понимаю политику партии?
В принципе да. Но в реализации есть проблемы. В качестве начального приближения попробуйте вот это Код: rule "Dimmed Light" when Item DimmedLight received command then var Number percent = Dimmer1.state as DecimalType if(receivedCommand==INCREASE) percent = percent + 5 if(receivedCommand==DECREASE) percent = percent - 5 if(percent<0) percent = 0 if(percent>100) percent = 100 Dimmer1.sendCommand(percent) end Что поменялось? Мы не предполагаем что состояние Dimmer1 может меняться иначе как с помощью DimmedLight. Поэтому нас не интересуют события изменения состояния Dimmer1. Каждый раз, когда мы меняем состояние DimmedLight, мы получаем актуальное состояние Dimmer1 Код: var Number percent = Dimmer1.state as DecimalType и именно это значение мы увеличиваем или уменьшаем в зависимости от полученной DimmedLight команды. Да, и предполагается, что значения яркости для Dimmer1 лежат в диапазоне 0-100. Но например для ОВЕН МУ110-6У это работать не будет, ибо как сказано в описании https://www.owen.ru/uploads/re_mu110-6u_1411.pdf значение должно лежать в диапазоне 0-1000 (таблица В. 4 на стр 35)