Arduino, ESP8266 Lua, Raspberry Pi 2 && OpenHab. Умный дом: азы управления.

Тема в разделе "Глядите, что я сделал", создана пользователем ИгорьК, 12 май 2015.

  1. Root Of Life

    Root Of Life Нерд

    Добрый день.

    Хотел бы в первую очередь сказать спасибо Игорю - эта тема очень помогла мне разобраться во многих вопросах и вообще решиться начать это дело.
    Дома пока подключил только верхний свет в комнате и датчик температуры


    На работе тоже поднял сервер, там отслеживаются показания датчиков температуры и добавил astro binding. Вот с его запуском и всплыли некоторые проблемы.

    На данный момент на работе сервер работает под виндой и проблем с ним нет, все корректно.
    Дома сервер поднят на малинке и там опенхаб хватает неправильное системное время (на час вперед), как в item`ах связанных с ntp, так и в event.log, хотя по команде date консоль выдает корректное время. Если кто-нибудь сталкивался, подскажите решение.
     
    Последнее редактирование: 13 дек 2015
    ИгорьК нравится это.
  2. ИгорьК

    ИгорьК Гуру

    И на эту проблему было решение...
     
  3. Root Of Life

    Root Of Life Нерд

    Уже сделал, но это костыль - будет правильно работать или опенхаб или все остальное.
    Опять же если летом история повторится, снова часовой пояс менять?
     
  4. ИгорьК

    ИгорьК Гуру

    Не помню на счет лета, возможно и придется. Но и сейчас работает все правильно.
    Просто малинка считает все как-то по-другому. У меня и системное время и время OpenHab сейчас в норме. Место - Минск.
    222555.jpg
     
    Последнее редактирование: 9 дек 2015
  5. Root Of Life

    Root Of Life Нерд

    У вас в системе часовой пояс MSK - это Минск или Москва?
    Посмотрите, пожалуйста, что в /etc/timezone?
     
  6. ИгорьК

    ИгорьК Гуру

    2345.jpg
     
  7. Root Of Life

    Root Of Life Нерд

    Заготовка для управления шторами
    [​IMG] [​IMG]


    По поводу неправильного времени нагуглил это:
    https://github.com/openhab/openhab/issues/3311
    Тут обсуждают вариант кривого модуля Joda Time 2.3, (он есть в версии 1.7.1)
    Можно попробовать заменить модуль, но надо будет искать и менять все ссылки на него, проще застрелиться сразу. Пока забил.
     
    Последнее редактирование: 12 дек 2015
    АндрейШвед нравится это.
  8. DenLis

    DenLis Нуб

    Добрый день.
    Я только начинаю осваивать такую сложную тему как OpenHab и Умный дом. Пока нахожусь на стадии теории.
    Нужен Ваш совет. Задумка такова: OpenHab установлен на Raspberry Pi, к ней подключена Arduino UNO, к Arduino UNO подключены реле и несколько Arduino Pro Mini, а к ним датчики и выключатели. (во вложении схема для наглядности; реле, выключателей и датчиков будет гораздо больше чем на схеме). Основная программа будет стоять на Arduino Uno, OpenHab будет использоваться только для связи с ПК и смартфоном. (если вдруг откажет Raspberry Pi, то всё будет продолжать работать и дальше, только пропадёт связь с ПК и смартфоном).
    Вопрос: какой протокол использовать между Raspberry Pi и Arduino UNO, Arduino UNO и Arduino ProMini. (на схеме нарисовано штриховыми линиями). При чём протокол должен быть "двухсторонним", т. е. если сработал датчик дыма, то Arduino Pro Mini сама посылает сигнал на Arduino UNO, а не ждёт от неё запроса. А Arduino UNO сама отправляет сигнал на Raspberry Pi о случившимся событии, так же не дожидаясь запроса от Raspberry Pi.
    Прошу Вас не оставляйте просьбу без ответа.
    За ранее Спасибо.
     

    Вложения:

    • Схема.png
      Схема.png
      Размер файла:
      26,1 КБ
      Просмотров:
      1.077
  9. Root Of Life

    Root Of Life Нерд

    Привет.

    У меня обмен между малиной и ардуино идет по ком-порту, протокол самописный. Формат передаваемых данных такой - Команда:Данные:Адрес$, где $ знак окончания передаваемого сообщения. Обмен двухсторонний. Могу поделиться кодом, если интересно.

    Рекомендую посмотреть на протокол Firmata, в на сайте ардуино есть библиотека и пример.
     
  10. DenLis

    DenLis Нуб

    Root Of Life, большое спасибо за ответ.
    Мне нужен протокол который уже поддерживается OpenHab. Я очень плохо разбираюсь в программировании, всё что я могу это собрать примеры и из них склепить что-то. Написать самостоятельно Bindig под какой-нибудь протокол для меня пока просто не реально.
     
  11. datacopy

    datacopy Нуб

    Здравствуйте!
    Помогите пожалуйста по некоторым вопросам, возможно кому-то это тоже будет интересно. Необходимо реализовать управление увлажнителем. Я так понял здесь можно сделать так же как и с управлением котла, только принимать влажность и отправлять сигнал на реле.
    И еще есть esp-12 с прошивкой от смарт-хома, к нему подключен дисплей. Прошивка позволяет принимать по mqtt информации и выводить ее на дисплей. Помогите реализовать правило на OpenHab для отправки информации.
    Заранее благодарю!
     
  12. opyzhov

    opyzhov Нуб

    Коллеги OH стоит на Raspberry PI как думаете, почему он падает раз в сутки (сама RPi не зависает)
    в логах пусто.
    систему полностью переставлял на другую SD. перегрева нет. БП как и RPi оригинальные.
    из внесенных с систему измененийи: все логи пишуться в tmpfs

    Файловая система Размер Использовано Дост Использовано% Cмонтировано в
    /dev/root 7,2G 1,3G 5,6G 19% /
    devtmpfs 459M 0 459M 0% /dev
    tmpfs 463M 0 463M 0% /dev/shm
    tmpfs 463M 6,4M 457M 2% /run
    tmpfs 5,0M 4,0K 5,0M 1% /run/lock
    tmpfs 463M 0 463M 0% /sys/fs/cgroup
    tmpfs 100M 752K 100M 1% /opt/openhab/logs
    tmpfs 100M 132K 100M 1% /var/log
    tmpfs 30M 0 30M 0% /var/tmp
    tmpfs 100M 32K 100M 1% /tmp
    /dev/mmcblk0p1 60M 20M 41M 34% /boot
    /dev/sda1 7,2G 1,5G 5,3G 22% /mnt/backup

    логи были огромного размера и роняли OH после заполнения tmpfs .. поменял logback. xml стало лучше.
    cat /opt/openhab/configurations/logback.xml
    <configuration scan="true">
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
    <pattern>%d{yyyy-MM-dd HH: mm: ss. SSS} [%-5level] [%-30.30logger{36}] - %msg%n</pattern>
    </encoder>
    </appender>
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${openhab.logdir:-logs}/openhab.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
    <fileNamePattern>${openhab.logdir:-logs}/openhab.%i.log</fileNamePattern>
    <minIndex>1</minIndex>
    <maxIndex>3</maxIndex>
    </rollingPolicy>
    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
    <maxFileSize>240KB</maxFileSize>
    </triggeringPolicy>
    <encoder>
    <pattern>%d{yyyy-MM-dd HH: mm: ss. SSS} [%-5level] [%-30.30logger{36}] - %msg%n</pattern>
    </encoder>
    </appender>
    <appender name="EVENTFILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${openhab.logdir:-logs}/events.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
    <fileNamePattern>${openhab.logdir:-logs}/events.%i.log</fileNamePattern>
    <minIndex>1</minIndex>
    <maxIndex>3</maxIndex>
    </rollingPolicy>
    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
    <maxFileSize>240KB</maxFileSize>
    </triggeringPolicy>
    <encoder>
    <pattern>%d{yyyy-MM-dd HH: mm: ss} - %msg%n</pattern>
    </encoder>
    </appender>
    <logger name="runtime.busevents" level="INFO" additivity="false">
    <appender-ref ref="EVENTFILE" />
    <appender-ref ref="STDOUT" />
    </logger>
    <logger name="org.openhab" level="INFO"/>
    <!- this class gives an irrelevant warning at startup ->
    <logger name="org.atmosphere.cpr.AtmosphereFramework" level="ERROR" />
    <!- temporary workaround for https://github.com/openhab/jmdns/issues/12 ->
    <logger name="javax.jmdns" level="OFF"/>
    <!- temporary workaround for https://bugs.eclipse.org/bugs/show_bug.cgi?id=402750 ->
    <logger name="OSGi" level="OFF" />
    <!- temporary workaround to circumvent error messages with any obvious effect ->
    <logger name="org.atmosphere.cpr.AtmosphereFramework" level="OFF" />
    <logger name="org.atmosphere.cpr.DefaultAnnotationProcessor" level="OFF" />
    <root level="WARN">
    <appender-ref ref="FILE" />
    <appender-ref ref="STDOUT" />
    </root>

    Какие предположения? как отловить почему зависает
     
  13. ИгорьК

    ИгорьК Гуру

    https://openhab.ci.cloudbees.com/job/openHAB/ - устанавливали отсюда?
    Зависать он может в том случае, если не хватает java файлов в папке аддонов.
     
  14. opyzhov

    opyzhov Нуб

    Нет.; устанавливал все руками с сайта разработчика.. Версия 1.7.1 ...
    Про Java файлы в addons проверю.. Пока у меня две папки addons_all и addons .. В последней символьны ссылки на файлы в addons_all только используемые модули.. В логах OH ошибок во время работы не видно ..

    Советуете на 1.8 перескочить?
     
  15. ИгорьК

    ИгорьК Гуру

    Давно пора.
     
  16. alp69

    alp69 Форумчанин

  17. ИгорьК

    ИгорьК Гуру

    Второй смотрел. Давно. Там были проблемы с биндингом OwnTrack. А он для меня критичен.
     
  18. opyzhov

    opyzhov Нуб

    Игорь снова нужен совет

    Обновление не помогло :-(
    Но кажется обваливает систему мои настройки по определению расстоянию по GPS координатам..
    Идея такая: получаю по скрипту строку типа json из нее получаю время обновления и координаты..
    по координатам с помощью JS получаю расстояние..

    Код (Java):
    var Float distance_pre  = new Float(transform("JS", "distanceGPS.js", json))
                    var Integer distance = distance_pre.intValue()
                    MyDistance.postUpdate(distance)
                    // передача переменной по MODBUS в ПЛК
                    if ( MyDistance_mb1.state != Uninitialized && MyDistance_mb1.state != Uninitialized ) {
                            var n1  = distance/256/256
                            var n2  = distance - (n1*256*256)
                            if(MyDistance_mb1 != n2) {sendCommand(MyDistance_mb1, n2)}
                            if(MyDistance_mb2 != n1) {sendCommand(MyDistance_mb2, n1)}
                    }
     
    cat distanceGPS.js
    Код (Java):
    function latlng2distance(lat1, long1, lat2, long2) {
        //радиус Земли
        var R = 6372795;
        //перевод коордитат в радианы
        lat1 *= Math.PI / 180;
        lat2 *= Math.PI / 180;
        long1 *= Math.PI / 180;
        long2 *= Math.PI / 180;
        //вычисление косинусов и синусов широт и разницы долгот
        var cl1 = Math.cos(lat1);
        var cl2 = Math.cos(lat2);
        var sl1 = Math.sin(lat1);
        var sl2 = Math.sin(lat2);
        var delta = long2 - long1;
        var cdelta = Math.cos(delta);
        var sdelta = Math.sin(delta);
        //вычисления длины большого круга
        var y = Math.sqrt(Math.pow(cl2 * sdelta, 2) + Math.pow(cl1 * sl2 - sl1 * cl2 * cdelta, 2));
        var x = sl1 * sl2 + cl1 * cl2 * cdelta;
        var ad = Math.atan2(y, x);
        var dist = ad * R; //расстояние между двумя координатами в метрах
        return dist
    }

    var location = eval('(' + input + ')');
    var dist = latlng2distance(59.ххх, 30.ххх, location.latitude, location.longitude);
    result = dist;
    может как то можно оптимизировать код.. не могу понять что обваливает OH
     
    Последнее редактирование: 10 янв 2016
  19. Коллеги. Попробуйте проект Blynk . Убойная вещь. Управление через сервер Blynk с гаджетов под Андроид и iOs. Очень экономит время и мозг. В исходный код нужно вставить обработчик. В обработчике обработать сигнал с датчика. Просто, быстро, красиво. Большой квалификации не требует.
     
    Последнее редактирование: 10 янв 2016
  20. ИгорьК

    ИгорьК Гуру

    Это Вам к спецам по java...