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

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

  1. ИгорьК

    ИгорьК Гуру

    Возможно, начать следует с апгрейда Java.
     
    Securbond нравится это.
  2. Sevic71

    Sevic71 Нерд

    Может даже и так, выполнение набора базовых требований для установки openhab я оставил "за скобками". Но с другой стороны, человек приаттачил скриншот рабочего UI openhab. Значит, уже взлетели. Хотя, конечно, возможны варианты...
     
  3. ИгорьК

    ИгорьК Гуру

    С малиной идет предустановленная Ява, не знаю какого розлива. Возможно ОпенХаб имени 1.8.1 требует каких-то специфических вещей.
    Безусловно, ситуацию надо исследовать с помощью MqttSpy.
    Потом, я не очень понял "старость" картинки. Она вообще больше не обновляется, обновляется после перезагрузки компа, малины, страницы?
     
    Securbond нравится это.
  4. Sevic71

    Sevic71 Нерд

    Я делал даже проще - "MQTT Client" на смартфоне с подпиской на топик #. (компа вообще под рукой не было, все делал на малине). На ней же можно mosquitto_sub запустить с тем же успехом.
    Вообще, как по мне, то смахивает как раз на несогласованность keep alive timeout на стороне брокера, ESP и/или openhab.т.е сначала все участники процесса коннектятся, все работает, но кто-то не отрабатывет keep alive и voila.. Данные "замерзают". Отсюда еще один совет - почитать лог mosquitto (или кто брокер?) на предмет таймаутов. У меня такое тоже было, но еще до openhab, на голом MQTT
     
    Securbond и ИгорьК нравится это.
  5. Securbond

    Securbond Гуру

    Всем большое спасибо! Сегодня на работе, завтра попробую.
     
  6. Securbond

    Securbond Гуру

    При загрузке страницы сначала графы данных пустые, через некоторое время появляются старые данные. Модуль ещё передаёт данные на народмон и имеет свою страницу, так что есть с чем сравнить.
     
  7. ИгорьК

    ИгорьК Гуру

    Наиболее вероятно.
    Эти данные сидят внутри Москита и передаются на ОпенХаб когда он запускается. Значит связка Москит-ОпенХаб работает.
    Но новых данных там нет. Либо они туда не попадают - смотреть MqttSpy, либо возникли ошибки в определении биндинга - какая-то буква изменилась и т.п. Обычное дело. У меня так постоянно - мозги то уже подводят :)
     
    Securbond нравится это.
  8. netmaster

    netmaster Гик

    День добрый.
    Связка Raspbian Jessie (expand root partition) + Mosquitto + OpenHab 1.8.1 (со криптом запуска)
    мной проверена и запущена. Все программы ставились из оригинального репа от Raspbian Jessie
     
  9. alp69

    alp69 Форумчанин

    В rules что-то по поводу обновления данных в итемах прописывали? Или там "демо" итемы везде фигурируют?
     
  10. Sevic71

    Sevic71 Нерд

    :) Ну тогда бы апдейты вообще не проходили, ни разу. Таких совпадений не бывает :) . Но ведь иногда же, вивдимо,проходят.
     
  11. ИгорьК

    ИгорьК Гуру

    Железо то какое у Вас?
     
  12. alp69

    alp69 Форумчанин

    Тем не менее из скрина все равно непонятно, что именно не обновляется.
    Напишите сюда имена итемов.
     
  13. netmaster

    netmaster Гик

    Малина 2 в четверг пришла из Китая, еще вайфай свисток и модуль точных часов хотя их пока еще не трогал. Помнится тут прьбегало что на джесси москит не работает, у меня работает!
     
  14. ИгорьК

    ИгорьК Гуру

    у меня на BeagleBone Black никаким способом не запустился. А на визли - с полпинка.
     
  15. Securbond

    Securbond Гуру

    А пробовали ребутить ? Автозапуск то же работает? Я так и не смог . На Визли все запустилось сразу.
    Модуль часов хорошая штука!
     
  16. netmaster

    netmaster Гик

    Пробовал, работает. Там секрет есть небольшой, скрипт надо запускать не из под pi а из под root иначе не хватает привилегий. Можно было конечно допилить, но времени уже не хватило пришлось еще и работать :)
    Жабу оставил по умолчанию, апдейтов не ставил. Короче на Джесси всё работает можно апгрейдится.
     
  17. netmaster

    netmaster Гик

    А почему не ВВВ не запускается, чем мотивирует? Дебаг в студию! Включить полный вывод можно
    в сислог в москитто. конф
     
  18. Securbond

    Securbond Гуру

    Проверил москит. Странная фигня.
    спаймоскит.PNG
    время в Last receivved стоит свежее, а данные старые и не меняются.
    Делаю вывод, что когда то данные загрузились и на этом всё. Москит запущен но по какой то причине данные от esp не принимает.
    mqtt.PNG
    Еще вопрос. где москит хранит данные? удалил его полностю потом поставил заново, но он откуда то опять взял старые данные

    Совсем всё поломал.. почистил файл базы данных москита. И он перестал запускаться, уже два раза переустановил... все равно ...
    mqtt2.PNG
     
    Последнее редактирование: 13 фев 2016
  19. netmaster

    netmaster Гик

    Ну поломал и ладно, толком и так не работало. Что у тебя в момент старта москит пишет в логи?/var/log/syslog или /var/log/<хрен его знает где>/<москит. лог> Этот путь (блин, не путя - путя у д@#$бов) смотреть в файле настройки момента. Да и вообще выложи этот конфиг под слайдер, я посмотрю.
    И логи при запуске туда же.

    Два спойлера как заставить москит писать логи в syslog !!!
    Работает на Rapsbian Jessie

    Код (Text):
    # Place your local configuration in /etc/mosquitto/conf.d/
    #
    # A full description of the configuration file is at
    # /usr/share/doc/mosquitto/examples/mosquitto.conf.example

    pid_file /var/run/mosquitto.pid

    persistence true
    persistence_location /var/lib/mosquitto/

    #log_dest file /var/log/mosquitto/mosquitto.log

    include_dir /etc/mosquitto/conf.d
     

    Код (C++):
    # =================================================================
    # Logging
    # =================================================================

    # Places to log to. Use multiple log_dest lines for multiple
    # logging destinations.
    # Possible destinations are: stdout stderr syslog topic file
    #
    # stdout and stderr log to the console on the named output.
    #
    # syslog uses the userspace syslog facility which usually ends up
    # in /var/log/messages or similar.
    #
    # topic logs to the broker topic '$SYS/broker/log/<severity>',
    # where severity is one of D, E, W, N, I, M which are debug, error,
    # warning, notice, information and message. Message type severity is used by
    # the subscribe/unsubscribe log_types and publishes log messages to
    # $SYS/broker/log/M/susbcribe or $SYS/broker/log/M/unsubscribe.
    #
    # The file destination requires an additional parameter which is the file to be
    # logged to, e.g. "log_dest file /var/log/mosquitto.log". The file will be
    # closed and reopened when the broker receives a HUP signal. Only a single file
    # destination may be configured.
    #
    # Note that if the broker is running as a Windows service it will default to
    # "log_dest none" and neither stdout nor stderr logging is available.
    # Use "log_dest none" if you wish to disable logging.
    #log_dest stderr
    log_dest syslog

    # Types of messages to log. Use multiple log_type lines for logging
    # multiple types of messages.
    # Possible types are: debug, error, warning, notice, information,
    # none, subscribe, unsubscribe, all.
    # Note that debug type messages are for decoding the incoming/outgoing
    # network packets. They are not logged in "topics".
    #log_type error
    #log_type warning
    #log_type notice
    #log_type information
    log_type all

    # If set to true, client connection and disconnection messages will be included
    # in the log.
    #connection_messages true
    connection_messages true

    # If set to true, add a timestamp value to each log message.
    #log_timestamp true
    log_timestamp true
     
     
    Последнее редактирование: 14 фев 2016
    ИгорьК нравится это.
  20. ИгорьК

    ИгорьК Гуру

    21. Получаем данные с AZ 771.
    AZ 7721 - это вот это. Производитель - Тайвань. Но вы можете успеть еще здесь. Других мест с такой ценой нет. (Особенно с учетом вот этого: http://www.electronshik.ru/item/kit-mt8060-monitor-uglekislogo-gaza-1921398 и вот этого: https://geektimes.ru/post/271100/)
    Эта штука измеряет количество СО2 и температуру, и оборудована нативным выходом (по ее утверждению) RS232, но это не правда. Там выход UART -> TX, защищенный оптопарой.
    Таким образом, без всякой подпайки и разборки мы можем получать сигнал с датчика.
    Для этого, соберем такую схему:
    35727.jpg

    На природе это будет выглядеть так:
    446688.jpg

    Что же оно нам шлет?
    [​IMG]

    Один пакет, приходящий из прибора, выглядит следующим образом:
    Код (C++):
    $CO2:Airc2\r\nC1300ppm:T26.7C0e\r\n
    И, собственно, скрипт:
    Код (Lua):
    Broker="ВАШ_САЙТ"
    port=вашпорт
    myClient="AZ7721"
    name=myClient
    pass="AZ7721"
    co2, tmpr = nil, nil
    m = mqtt.Client(myClient, 180, name, pass)
    m:lwt("/lwt", myClient, 0, 0)
    m:on("offline", function(con)
        tmr.stop(2)
        print ("reconnecting...")
        print(node.heap())
        tmr.alarm(1, 120000, 1, function()
              m:connect(Broker, port, 0, function(conn)
                tmr.stop(1)
                      print ("Subscribed!")
                      tmr.start(2)
                end)
              end)
            collectgarbage()
        end)

    function publishData()
        tmr.alarm(2, 60000, 1, function()
            print("Now Try Publish!")
            if co2 ~= nil and tmpr ~= nil then
                print("Publish CO2 "..co2.." and T: "..tmpr)
                m:publish("AZ7721/co2/state",co2,0,0, function()
                    tmr.alarm(3, 1000, 0, function()
                        m:publish("AZ7721/tmpr/state",tmpr,0,0, function()
                            tmr.stop(3)
                        end)
                    end)
                end)
            end
        end)
    end


    uart.on("data","\n",
        function(input)
            if wifi.sta.status() == 5 then
                print("Received from UART:", input)
                local lco2, ltmpr
                lco2, ltmpr = string.match(input, "(%d+)ppm:T(%d+%.?%d?%d?)")
                if lco2 ~= nil and ltmpr ~= nil then
                    print("Got "..lco2.." and "..ltmpr)
                    co2 = lco2
                    tmpr = ltmpr
                end
                lco2 = nil
                ltmpr = nil
                collectgarbage()
            end
        end, 0)

    tmr.alarm(0, 1000, 1, function()
        if wifi.sta.status() == 5 and wifi.sta.getip() ~= nil then
            tmr.stop(0)
            m:connect(Broker, port, 0, function(conn)
                print("connected")
                publishData()
                end)
        end
    end)
     
    AZ 7721 и MQ-135:
    32435456.jpg

    Следующий топик.
     
    Последнее редактирование: 15 июл 2019
    netmaster нравится это.