1 2 3 4 5 6 7 8 9 10 9/10 8,94оценок: 17

Smarthome - самому и бюджетно?

Тема в разделе "Умный дом", создана пользователем vores8, 31.10.09.

  1. vores8
    Регистрация:
    26.12.07
    Сообщения:
    367
    Благодарности:
    238

    vores8

    Живу здесь

    vores8

    Живу здесь

    Регистрация:
    26.12.07
    Сообщения:
    367
    Благодарности:
    238
    Адрес:
    Нижний Новгород
    Нет, нужен именно 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.

    И вобщем-то это все
     
    Последнее редактирование: 02.12.13
  2. Shemnik69
    Регистрация:
    10.04.13
    Сообщения:
    119
    Благодарности:
    78

    Shemnik69

    Это Я

    Shemnik69

    Это Я

    Регистрация:
    10.04.13
    Сообщения:
    119
    Благодарности:
    78
    Адрес:
    Саратов
    Еще один момент, может тоже проходили. Свисток (DS9490R) Имеет встроенный идентификатор. Т. е определяется как USB в моем варианте работают 2 самодельных адаптера на основе МАХ232 СРЕ (преобразователь уровней) и используют СОМ1 и СОМ2 порты. Бенукс и другие программы превосходно с этими адаптерами дружат даже более чем. Проблем нет поскольку как указывал сети разделены на ключи и температурные датчики. Но OWFS эти адаптеры не видят. Толи, эти программы уже не работают с такими адаптерами или, в настройках не указан ключ работы с СОМ портами. Но все рекомендуемые варианты я пробовал. Получается что Бенукс и ТемпКеппер например, прекрасно понимают эти адаптеры а OWFS нет.
    Ваши рекомендации проверю вечером на сервере.
     
  3. Shemnik69
    Регистрация:
    10.04.13
    Сообщения:
    119
    Благодарности:
    78

    Shemnik69

    Это Я

    Shemnik69

    Это Я

    Регистрация:
    10.04.13
    Сообщения:
    119
    Благодарности:
    78
    Адрес:
    Саратов
    Схема адаптеров на одной микросхеме их 2 (2) работают без замечаний. Сигналы четкие и ошибок нет.

    А свисток заказал но ждать дней 7-10...
     

    Вложения:

    • adapterRS232to1wire.gif
    Последнее редактирование модератором: 02.12.13
  4. vores8
    Регистрация:
    26.12.07
    Сообщения:
    367
    Благодарности:
    238

    vores8

    Живу здесь

    vores8

    Живу здесь

    Регистрация:
    26.12.07
    Сообщения:
    367
    Благодарности:
    238
    Адрес:
    Нижний Новгород
    А что выдается в ответ на
     
  5. Shemnik69
    Регистрация:
    10.04.13
    Сообщения:
    119
    Благодарности:
    78

    Shemnik69

    Это Я

    Shemnik69

    Это Я

    Регистрация:
    10.04.13
    Сообщения:
    119
    Благодарности:
    78
    Адрес:
    Саратов
    Вечером скопирую всю информацию и постараюсь предоставить.
     
  6. AlexeyDubashov
    Регистрация:
    17.02.12
    Сообщения:
    74
    Благодарности:
    19

    AlexeyDubashov

    Живу здесь

    AlexeyDubashov

    Живу здесь

    Регистрация:
    17.02.12
    Сообщения:
    74
    Благодарности:
    19
    Адрес:
    Московская область
    Я вот недавно научил OpenHab понимать голос через android смартфон. Баловство это, конечно, но прикольно. Командую "отбой" и дом становится на сигнализацию. Командую "включить воду" и наружу подается вода (у меня там управляемый шаровый кран). Простые русские слова понимает хорошо, а сложные, вроде "аэрация" - не очень.
    Я для этого на телефоне установил программу голосового управления "utter!" и исполнитель Tasker, который умеет всевозможные http запросы посылать (post, get).
    Utter распознает голос и вызывает обработчик в Tasker. Обработчик выполняет REST запрос через http на OpenHab.
    Только настраивать Utter приходится кропотливо - каждый возможный вариант команды учитывать (включи воду, включить воду, воду включи, воду включить, подай воду, воду подай, и т. д.).
    Utter используют стандартные службы TTS и распознавания голоса (Google, к примеру).
    Есть еще одно ограничение для русского языка на сегодняшний момент в бетта версии Utter - распознавание можно инициировать только нажатием ярлыка. Разработчики обещают это позже исправить. Английский распознаватель можно инициировать трясением и еще какими-то способами.
     
  7. Shemnik69
    Регистрация:
    10.04.13
    Сообщения:
    119
    Благодарности:
    78

    Shemnik69

    Это Я

    Shemnik69

    Это Я

    Регистрация:
    10.04.13
    Сообщения:
    119
    Благодарности:
    78
    Адрес:
    Саратов
    Отлично! :hello:
    По пройденной теме добавлю, что OWFS c моими адаптерами не работает. :( .Жду фирменный. Другие программы с ними отлично и проблем нет, я для пробы включал 5 датчиков ds18b20 гроздью на конец бухты кабеля UTP примерно 60 м. питание стандарт 5 а. (в сети 12, на каждый датчик стабилизатор). Но ...что сказать адаптер работает. да и работал он. Я думал, может затяжка фронтов..может еще чего. Думаю что просто версия OWFS для win (c с сайта) не работает с адаптерами аналогами DS9097E (COM) поэтому пока эксперименты остановил до приезда DS9490R.
     
  8. vores8
    Регистрация:
    26.12.07
    Сообщения:
    367
    Благодарности:
    238

    vores8

    Живу здесь

    vores8

    Живу здесь

    Регистрация:
    26.12.07
    Сообщения:
    367
    Благодарности:
    238
    Адрес:
    Нижний Новгород
  9. kosmas
    Регистрация:
    22.07.11
    Сообщения:
    89
    Благодарности:
    7

    kosmas

    Живу здесь

    kosmas

    Живу здесь

    Регистрация:
    22.07.11
    Сообщения:
    89
    Благодарности:
    7
    Адрес:
    Питер
    @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
     
  10. Shemnik69
    Регистрация:
    10.04.13
    Сообщения:
    119
    Благодарности:
    78

    Shemnik69

    Это Я

    Shemnik69

    Это Я

    Регистрация:
    10.04.13
    Сообщения:
    119
    Благодарности:
    78
    Адрес:
    Саратов
    Это да. Данный адаптер на основе DS9480 Он дружит c OWFS 2/8/p14 lдело то что аналог моих адаптеров, это DS9497e, они, на основе простых элементов, без микросхем, и основные сигналы формируются программным способом. Что наверное на Win проблематично, или еще что.
    Иными словами, все последние адаптеры это активные микропроцессорные устройства которые избавляют от проблем на уровне программной реализации алгоритма обработки сигнала 1-ware.
    Из хороших новостей ! все что Вы ранее описывали, все работает, пока правда в тестовом режиме (сам разбираюсь что к чему) но работает. Ворота управляются как было задумано, :hello:.сейчас, немного хочу подправить алгоритм, (скетч) под небольшую задержку на закрытие по работавшему датчику (т.е) при пересечении проема (ИК) датчик останавливает створу. а спустя 5-7 сек опять пускает) на настоящий момент это реализовано на сервере, хочу чтобы это делала ардуинка. Я все таки сторонник, чтобы простые функции (защита, логика управления. обработка нажатий кнопок (дребезг) исполнялись на железе. И потом, выключение сервера, тогда никак не отражается на работе ворот. У меня так работает управление освещением и другими.
    С Уважением!
     
  11. vores8
    Регистрация:
    26.12.07
    Сообщения:
    367
    Благодарности:
    238

    vores8

    Живу здесь

    vores8

    Живу здесь

    Регистрация:
    26.12.07
    Сообщения:
    367
    Благодарности:
    238
    Адрес:
    Нижний Новгород
    Ну во первых, определитесь что именно хочется. Как я понимаю из кода, есть диммер на модбасе Dimmer1, которым хочется управлять из опенхаба. Но при этом сам Dimmer1 может изменяться независимо от опенхаба - правильно?

    Исходя из этого вижу как минимум две проблемы с правилом
    условие when надо изменить
    Код:
    when
        Item Dimmer1 received update or
        Item DimmedLight received command
    then
    
    И в конце апдейтить не DimmedLight (он и так апдейтится опенхабом), а модбасовский Dimmer1, то есть
    Код:
    postUpdate(DimmedLight, percent);
    заменить на
    Код:
    Dimmer1.sendCommand(percent)
     
  12. vores8
    Регистрация:
    26.12.07
    Сообщения:
    367
    Благодарности:
    238

    vores8

    Живу здесь

    vores8

    Живу здесь

    Регистрация:
    26.12.07
    Сообщения:
    367
    Благодарности:
    238
    Адрес:
    Нижний Новгород
    Проект выходного дня - прикручиваем электрический счетчик к опенхабу и интернету.

    По совету одного умного человека решил озаботиться мониторингом потребляемой электрической мощности в доме. Реализация проекта заняла примерно полтора часа. В результате вот тут 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 (см линк выше)

    Из минусов - почему-то иногда пропускаются импульсы от счетчика. То есть точное значение потребления энергии таким способом не посчитаешь. Но общую картину получить можно, в моем случае этого достаточно
     
  13. kosmas
    Регистрация:
    22.07.11
    Сообщения:
    89
    Благодарности:
    7

    kosmas

    Живу здесь

    kosmas

    Живу здесь

    Регистрация:
    22.07.11
    Сообщения:
    89
    Благодарности:
    7
    Адрес:
    Питер
    Я себе для этих целей прикупил https://www.owen.ru/catalog/99040592

    А вот за это отдельное спасибо!
     
  14. kosmas
    Регистрация:
    22.07.11
    Сообщения:
    89
    Благодарности:
    7

    kosmas

    Живу здесь

    kosmas

    Живу здесь

    Регистрация:
    22.07.11
    Сообщения:
    89
    Благодарности:
    7
    Адрес:
    Питер
    Я начал не с той стороны. Итак, есть овеновский контроллер, к нему прикручен модуль аналогового вывода 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
    Я правильно понимаю политику партии?
     
  15. vores8
    Регистрация:
    26.12.07
    Сообщения:
    367
    Благодарности:
    238

    vores8

    Живу здесь

    vores8

    Живу здесь

    Регистрация:
    26.12.07
    Сообщения:
    367
    Благодарности:
    238
    Адрес:
    Нижний Новгород
    В принципе да. Но в реализации есть проблемы. В качестве начального приближения попробуйте вот это
    Код:
    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)
     
    Последнее редактирование: 09.12.13