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

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

  1. Serega_MO

    Serega_MO Нерд

    ДА С ОГРОМНЫМ УДОВОЛЬСТВИЕМ!!!!!
    Я в Химках ! ))
     
  2. ИгорьК

    ИгорьК Давно здесь Команда форума

    Есть правила написания json объектов и применения в них тех или иных символов. Навскидку не помню. Если эти правила не соблюдены вашим источником то OH скорее всего его не распарсит. Надо экспериментировать.
     
  3. Serega_MO

    Serega_MO Нерд

    Я плохо знаком с json, но учитывая, что это типовая прошивка tasmota, очень сильно надеюсь, что требования по спецификации протокола соблюдены.
    Но это ИМХО
     
  4. ИгорьК

    ИгорьК Давно здесь Команда форума

    Я все прошивки ESP-8266 пишу сам и понял, что применение Json не очень хорошее решение для OH. При любом сбое он не расшифровывает сообщение и теряется вся информация. Проще послать десяток топиков, потерять один но принять 9.
     
  5. Serega_MO

    Serega_MO Нерд

    Ну похоже я на этом же пути,
    просто думал tasmota - это типовое решение,
    нефига, нужен напильник..
     
  6. ИгорьК

    ИгорьК Давно здесь Команда форума

    Там рядом другой способ отправки многих данных.
     
  7. ИгорьК

    ИгорьК Давно здесь Команда форума

    Для датчика температуры пробуй такое правило:

    Код (Java):
    // {"Time":"2018-05-14T21:33:54","DS18B20":{"Temperature":24.9},"TempUnit":"C"}

    import org.openhab.core.library.types.*
    import org.openhab.core.persistence.*
    import org.openhab.model.script.actions.*

    rule "Get DS18b20"
      when
        Item Tmp_Box changed
      then
        // Преобразуем входящие данные в тип String
        var String json = (Tmp_Box.state as StringType).toString
        // Извлекаем стандартным парсингом в переменную 'raw' подстроку JSON '{"Temperature":24.9}'
        var String raw = transform("JSONPATH", "$.DS18B20", json)
        // Из этой подстроки извлекаем '24.9'
        var Number data = transform("JSONPATH", "$.Temperature", raw)
        // Отправляем данные на другой итем ('temperature01' - его надо создать)
        sendCommand(temperature01,  data)
      end
    Итем Number Tmp_Box сделай текстом String.
    Код (Java):
    String Tmp_Box "Мясо [%s]" <temperature> (Temperature, GF_Box) {mqtt="<[mqtt:/muhome/ou/SENSOR:state:default]"}
    Наблюдай что в него все приходит.
    Заведи еще один итем -Number "temperature01". В него и будут сливаться распарcенные данные.
    Работоспособность всего этого не гарантирую - OH2 у меня нет, проверить не могу.
     
    Последнее редактирование: 16 май 2018
  8. Serega_MO

    Serega_MO Нерд

    Игорь, спасибо тебе огромное, но решил проблему немного иначе.
    1. Подправил прошивку устройства, проблема была {"фигурные скобки" в {"фигурных скобках"}}
    родной json не понимал такой формат.

    В таком формате получал раньше:
    "Time":"2018-05-14T21:30:54","DS18B20":{"Temperature":24.9},"TempUnit":"C"}

    После корректировки прошивки:
    "Time":"2018-05-14T21:30:54","DS18B20-Temperature":24.9,"TempUnit":"C"}

    прописал items:
    Number Temperature_coop "Temperature [%.1f °C]" (GF_Box) {mqtt="<[mqtt:/muhome/ou/SENSOR:state:JSONPATH($.TDS18B20-Temperature)]"}

    3-й час,- полет нормальный ! ))))
    p.s.
    Предложение про пиво остается в стиле в любом случае! )))
     
    Последнее редактирование: 17 май 2018
    ИгорьК нравится это.
  9. ИгорьК

    ИгорьК Давно здесь Команда форума

    Ну да - это и было проблемой.
     
  10. IvanUA

    IvanUA Гуру

    В стиле - это сильно)))))
     
  11. Serega_MO

    Serega_MO Нерд

    В СИЛЕ!!!!!! )))))
    Не надо ногами за опечатку ! ))))
     
  12. BlackWolfSpb

    BlackWolfSpb Нуб

    Добрый день. Я совсем недавно открыл для себя Esp8266 как и Ардуино. Ваши советы очень помогли в изучении.
    Сейчас столкнулся с следующей проблемой. Приобрёл Esp8266 - 12E, ссылка.
    Пока разбирался что и как, стёр родную прошивку. Методом научного тыка с правильным подключением разобрался. Но при прошивке ESP8266 NONOS SDK V2.1.0 20170505 в порту (7480) "Fatal exception..." и светодиод либо постоянно горит либо часто мигает.
    Прошиваю FLASH_DOWNLOAD_TOOLS. По адресам:
    esp_init_data_default.bin - 0x1FC000
    blank.bin - 0x1FE000
    boot_v1.7.bin - 0x00000
    user1.2048.new.5.bin - 0x01000
    user2.2048.new.5.bin - 0x81000
    Если последние два файла не заливать контроллер запускается, но АТ команды не работают.
    Бубен, с которым я плясал над ним сломался, идей нет... Помогите чем можете. Скрин прилагается.


     

    Вложения:

    • 1.jpg
      1.jpg
      Размер файла:
      251,7 КБ
      Просмотров:
      207
    Последнее редактирование: 23 май 2018
  13. ИгорьК

    ИгорьК Давно здесь Команда форума

    Только завтра смогу въезжать в тему
     
  14. BlackWolfSpb

    BlackWolfSpb Нуб

    Жду, какие у меня варианты) полистаю форум пока что, авось прозрение будет
     
  15. ИгорьК

    ИгорьК Давно здесь Команда форума

  16. BlackWolfSpb

    BlackWolfSpb Нуб

    Питоном всё читается, стирается , записывается (всё как в описании) но результат тот же.
    Пробовал через FLASH_DOWNLOAD_TOOLS, по адресам как в md файле что идёт для прошивки (скрин11), контроллер запускается. Ат команды не работают. В ответе знаки вопроса(скрин44)
     

    Вложения:

    • 11.png
      11.png
      Размер файла:
      3,9 КБ
      Просмотров:
      193
    • 22.png
      22.png
      Размер файла:
      135,6 КБ
      Просмотров:
      201
    • 33.png
      33.png
      Размер файла:
      22,6 КБ
      Просмотров:
      203
    • 44.png
      44.png
      Размер файла:
      10,5 КБ
      Просмотров:
      205
  17. ИгорьК

    ИгорьК Давно здесь Команда форума

    То есть вам надо восстановить АТ прошивку на модуле? Я так до компа и не добрался, но точно помню, что у Амперки в вики есть инструкция как это делается. Поищите.

    По ссылке раздел "Перепрошивка":
    http://wiki.amperka.ru/продукты:troyka-wi-fi
     
  18. BlackWolfSpb

    BlackWolfSpb Нуб

    Благодарю, вопрос снят
     
  19. Egony

    Egony Нерд

    Три дня как зарелизился OH 2.3. Подробности тут: https://github.com/openhab/openhab-distro/releases/tag/2.3.0

    Несмотря на пробелы в документации, OH2.2 в сравнении с 1.8 имеет существенный прогресс (задницей попугая не пользуюсь, только текст, только хардкор). Надеюсь, 2.3 будет с новыми багами лучше :)
     
    Sachapda и ИгорьК нравится это.
  20. SergeiL

    SergeiL Гуру

    По поводу управления освещением по солнцу, перешел с варианта анализа времени заката/рассвета (типа: через 10 минут после заката) на вариант анализа угла на солнце.

    Мне показалось, что включение выключение освещения, стало происходить примерно при одинаковой уличной освещенности вне зависимости от времени года.

    Продолжительность сумерек, для одного и того же местоположения, сильно зависит от времени года и может отличаться почти в два раза.

    Items:
    Код (Text):
    Number    Elevation          "Высота солнца [%.2f °]"       (Astro)        {astro="type=ELEVATION"}
    Switch    SUN_Light_Switch   "Ночное освещение"             (Astro)  
    Rules:
    Код (Text):
    rule "Elevation Changed"
    when
        Item Elevation changed  
    then
        if (Elevation.state < -1 && Elevation_Light != 1 )
        {
            sendCommand(SUN_Light_Switch, ON)
            Elevation_Light = 1
        }
        else if (Elevation.state > -2 && Elevation_Light != 0 )
        {
            sendCommand(SUN_Light_Switch, OFF)
            Elevation_Light = 0
        }
    end    
    Elevation.state < -1 - это закат, солнце уходит за горизонт и угол на солнце стал меньше чем -1.0 градус.
    Elevation.state > -2 - это скоро восход, солнце поднимается и угол на солнце стал больше чем -2.0 градуса.


    SUN_Light_Switch - виртуальный переключатель.
    Ну а дальше в зависимости от присутствия людей, открытия дверей, и состояния SUN_Light_Switch, включаем, выключаем, или не включаем освещение.;)
     
    ИгорьК нравится это.