Интеграция датчика освещенности гидропонной установки в Home Assistant — различия между версиями

Материал из ЭНЭ
Перейти к: навигация, поиск
(Получить «сырые» данные при разных уровнях)
Строка 7: Строка 7:
 
Сначала нам надо собрать принципиальную схему нашего датчика.
 
Сначала нам надо собрать принципиальную схему нашего датчика.
  
(Фото 2) Для этого используем три фоторезистора: 90мВт, 2-6кОм, 540нм, Монтаж: THT, 100ВDC, dLED: 5мм и резисторы сопротивлением: 1, 10, 100 КОм.  
+
(Фото 2) Для этого используем три фоторезистора: '''90мВт, 2-6кОм, 540нм, Монтаж: THT, 100ВDC, dLED: 5мм''' и резисторы сопротивлением: '''1, 10, 100 КОм.'''
  
 
Три фоторезистора нам нужны, чтобы производить замеры в трех разных диапазонах освещенности, в вечрнее время, днем и при ярком солнечном свете.
 
Три фоторезистора нам нужны, чтобы производить замеры в трех разных диапазонах освещенности, в вечрнее время, днем и при ярком солнечном свете.
Строка 73: Строка 73:
 
'''Y=259* EXP(0,00741* Х)'''
 
'''Y=259* EXP(0,00741* Х)'''
  
=== Определить калибровочные коэффициенты ===
+
Теперь можно приступать к настройке постоянных замеров освещенности.
Для калибровки будем использовать технологию фотографирования белого листа цифровым фотоаппаратом или смартфоном. Калибровка освещенности с телефона производим по калькулятору c сайта [https://www.gidroponika.su/gidroponika-teorija.html/osvewenie/163-kak-izmerit-osveschennost-pomescheniya-bez-lyuksmetra.html www.gidroponika.su]
+
Вывод, коэффициенты пересчета получаются такие:
+
  
'''Y=259* EXP(0,00741* Х)'''
 
 
(Фото 5)
 
  
 
== Настроить интеграцию с Home Assistant ==
 
== Настроить интеграцию с Home Assistant ==
Настраиваем интеграцию через [https://www.home-assistant.io/integrations/firmata Firmata]
+
Настраиваем интеграцию через [https://www.home-assistant.io/integrations/firmata Firmata] Для этого присоединим по USB плату Arduino к HA и в конфигурационном фале , который находится например в путях ''/config/configuration.yaml'' добавляем несколько строчек. После этого перегружаем НА.
(Фото 6)
+
<syntaxhighlight lang="C">
 +
firmata:
 +
  - serial_port: /dev/ttyUSB0
 +
    serial_baud_rate: 57600
 +
    sampling_interval: 1000
 +
    sensors:
 +
      - name: raw_light0
 +
        pin: A0
 +
        pin_mode: ANALOG
 +
        differential: 80
 +
      - name: raw_light1
 +
        pin: A1
 +
        pin_mode: ANALOG
 +
        differential: 20       
 +
      - name: raw_light2
 +
        pin: A2
 +
        pin_mode: ANALOG
 +
        differential: 20
 +
</syntaxhighlight>
 +
Если все сделано без ошибок, то мы сможем увидеть новые объекты в меню: Настройки>>Устройства и службы>>Объекты . У них будут ID объекта: sensor.raw_light0, sensor.raw_light1, sensor.raw_light2, а Интеграция: firmata.
 +
 
 +
Но это пока еще сырые данные - в вольтах. Для того чтобы пересчитать их в люксы, с использованием наших поправочных коэффициентов, необходимо внести в этот же файл конфигурации ''/config/configuration.yaml'' еще один раздел:
 +
<syntaxhighlight lang="C">
 +
sensor: 
 +
  - platform: template
 +
    sensors:
 +
      light_01:
 +
        friendly_name: "освещенность в яркий день"
 +
        unit_of_measurement: lk
 +
        value_template: "{{ 259 * (e**(0,00741*states('sensor.raw_light0' )))| int }}"
 +
 
 +
      light_02:
 +
        friendly_name: "освещенность в пасмурную погоду"
 +
        unit_of_measurement: lk
 +
        value_template: "{{ 259 * (e**(0,00741*states('sensor.raw_light1' )))| int }}"
 +
 
 +
      light_03:
 +
        friendly_name: "освещенность вечером"
 +
        unit_of_measurement: lk
 +
        value_template: "{{ 259 * (e**(0,00741*states('sensor.raw_light2' )))| int }}"
 +
 
 +
</syntaxhighlight>
 +
 
 +
И перезагрузить НА.
 +
 
 +
Теперь у нас в Объектах добавятся:  sensors.light_01, sensors.light_02, sensors.light_03, их мы можем выводить на панель  НА. Для этого заведем новую карточку на панели
 +
graph: line
 +
hours_to_show: 24
 +
type: sensor
 +
entity: sensors.light_01
 +
unit: lk
 +
detail: 1
 +
name: Освещенность
 +
 
 +
Результат представлен на (Фото 6), (Фото 7), (Фото 8)
  
=== Отредактировать конфигурационный файл ===
 
(Фото 7)
 
  
 
=== Добавить на панель график с историей ===
 
=== Добавить на панель график с историей ===
Строка 99: Строка 146:
 
| [[Файл:Замер освещенности на улице.png|link=http://wiki.laser.ru/images/6/60/Замер_освещенности_на_улице.png |thumb|280px| (Фото 3) Замер освещенности на улице]]
 
| [[Файл:Замер освещенности на улице.png|link=http://wiki.laser.ru/images/6/60/Замер_освещенности_на_улице.png |thumb|280px| (Фото 3) Замер освещенности на улице]]
 
| [[Файл:Замер освещености в гроубоксе.png |link=http://wiki.laser.ru/images/a/a1/Замер_освещености_в_гроубоксе.png |thumb|160px| (Фото 4) Замер освещености в гроубоксе]]
 
| [[Файл:Замер освещености в гроубоксе.png |link=http://wiki.laser.ru/images/a/a1/Замер_освещености_в_гроубоксе.png |thumb|160px| (Фото 4) Замер освещености в гроубоксе]]
|+
 
 
| [[Файл:Пересчет освещенности экспонента.png |link=http://wiki.laser.ru/images/3/31/Пересчет_освещенности_экспонента.png |thumb|280px| (Фото 5) Пересчет освещенности экспонента]]
 
| [[Файл:Пересчет освещенности экспонента.png |link=http://wiki.laser.ru/images/3/31/Пересчет_освещенности_экспонента.png |thumb|280px| (Фото 5) Пересчет освещенности экспонента]]
| [[Файл:История освещенности.png|link=http://wiki.laser.ru/images/1/1c/История_освещенности.png |thumb|160px| (Фото 8) История освещенности]]
+
|+
 
+
| [[Файл:История освещенности.png|link=http://wiki.laser.ru/images/1/1c/История_освещенности.png |thumb|160px| (Фото 6) История освещенности на моб]]
 +
| [[Файл:История освещенности.png|link=http://wiki.laser.ru/images/1/1c/История_освещенности.png |thumb|160px| (Фото 7) История освещенности в ПК]]
 +
| [[Файл:История освещенности.png|link=http://wiki.laser.ru/images/1/1c/История_освещенности.png |thumb|160px| (Фото 8) История освещенности в Gnuplot]]
  
 
|+
 
|+

Версия 16:00, 7 июля 2023

(Фото 1) Датчик освещенности, люксометр

Интеграция датчика освещенности гидропонной установки в Home Assistant

Для того чтобы растения нормально росли и развивались в гроубоксе, в теплице, в оранжереи или в какой то гидропонной установке, как известно, им нужно достаточно света для фотосинтеза. Следить за изменением освещенности можно изготовив самостоятельно датчик освещенности (люксометр), например прямо на макетной плате. Далее загружать данные в автоматическом режиме в Home Assistant, осуществляя сбор данных через контроллер Ардуино. Можно воспользоваться готовым решением, купить датчик освещенности на Алиэкспресс . Но можно собрать самостоятельно (Фото 1), для этого необходимо:

Собрать датчик по схеме

Сначала нам надо собрать принципиальную схему нашего датчика.

(Фото 2) Для этого используем три фоторезистора: 90мВт, 2-6кОм, 540нм, Монтаж: THT, 100ВDC, dLED: 5мм и резисторы сопротивлением: 1, 10, 100 КОм.

Три фоторезистора нам нужны, чтобы производить замеры в трех разных диапазонах освещенности, в вечрнее время, днем и при ярком солнечном свете.

Загрузить в Arduino программный код

Загружаем в контроллер Arduino или ESP8266, или ESP32 программный код для отображение данных в COM порту. И проводим несколько замеров при разной освещенности на улице — в солнечную погоду и при облаках, а так же в помещении. (Фото 3), (Фото 4)

//////////////////////////////////////////////
// 2023.07.06 woronin, umkiedu@gmail.com
// Датчик освещености — люксометр
// Robot UMKI controller K6_3
//////////////////////////////////////////////
int light0 = 0;
int light1 = 0;
int light2 = 0;
 
void setup()
{
  Serial.begin(9600);
  pinMode(A0, INPUT);
  pinMode(A1, INPUT);
  pinMode(A2, INPUT);
}
 
void loop()
{
  light0 = analogRead(A0);
  Serial.println(light0);
  light1 = analogRead(A1);
  Serial.println(light1);
  light2 = analogRead(A2);
  Serial.println(light2);
 
  delay(10); // Delay a little bit to improve simulation performance
}


Откалибровать полученные данные

Получаем набор «сырых» данных в вольтах, на основе которых будем производить калибровку для пересчета в люксы. Сводим полученные данные в таблицу.

Для заполнения столбца люксов, будем использовать технологию фотографирования белого листа цифровым фотоаппаратом или смартфоном. Калибровка освещенности с телефона производим по калькулятору c сайта www.gidroponika.su


Значение люксы
HA(V)    Lx
274      2400
350      2800
479      8900
498      9900
609      23700
620      26000
634      30000
735      61000


После заполнения таблицы измеренными значениями в вольтах и в люксах, строим график в любом табличном процессоре. Например в LibreOffice Calc, используя опцию: Построение линии тренда, показать формулу.

(Фото 5)

Вывод, в нашем случае коэффициенты пересчета получаются такие:

Y=259* EXP(0,00741* Х)

Теперь можно приступать к настройке постоянных замеров освещенности.


Настроить интеграцию с Home Assistant

Настраиваем интеграцию через Firmata Для этого присоединим по USB плату Arduino к HA и в конфигурационном фале , который находится например в путях /config/configuration.yaml добавляем несколько строчек. После этого перегружаем НА.

 firmata:
  - serial_port: /dev/ttyUSB0
    serial_baud_rate: 57600
    sampling_interval: 1000 
    sensors:
      - name: raw_light0
        pin: A0
        pin_mode: ANALOG
        differential: 80
      - name: raw_light1
        pin: A1
        pin_mode: ANALOG
        differential: 20        
      - name: raw_light2
        pin: A2
        pin_mode: ANALOG
        differential: 20

Если все сделано без ошибок, то мы сможем увидеть новые объекты в меню: Настройки>>Устройства и службы>>Объекты . У них будут ID объекта: sensor.raw_light0, sensor.raw_light1, sensor.raw_light2, а Интеграция: firmata.

Но это пока еще сырые данные - в вольтах. Для того чтобы пересчитать их в люксы, с использованием наших поправочных коэффициентов, необходимо внести в этот же файл конфигурации /config/configuration.yaml еще один раздел:

sensor:   
  - platform: template
    sensors:
      light_01:
        friendly_name: "освещенность в яркий день"
        unit_of_measurement: lk
        value_template: "{{ 259 * (e**(0,00741*states('sensor.raw_light0' )))| int }}"
 
      light_02:
        friendly_name: "освещенность в пасмурную погоду"
        unit_of_measurement: lk
        value_template: "{{ 259 * (e**(0,00741*states('sensor.raw_light1' )))| int }}"
 
      light_03:
        friendly_name: "освещенность вечером"
        unit_of_measurement: lk
        value_template: "{{ 259 * (e**(0,00741*states('sensor.raw_light2' )))| int }}"

И перезагрузить НА.

Теперь у нас в Объектах добавятся: sensors.light_01, sensors.light_02, sensors.light_03, их мы можем выводить на панель НА. Для этого заведем новую карточку на панели

graph: line
hours_to_show: 24
type: sensor
entity: sensors.light_01
unit: lk
detail: 1
name: Освещенность

Результат представлен на (Фото 6), (Фото 7), (Фото 8)


Добавить на панель график с историей

Рассчитываем интегральную составляющую освещенности за день, за месяц, за весь период выращивания растений. Что составляет:…

(Фото 8)

(Фото 2) Люксометр схема
(Фото 3) Замер освещенности на улице
(Фото 4) Замер освещености в гроубоксе
(Фото 5) Пересчет освещенности экспонента
(Фото 6) История освещенности на моб
(Фото 7) История освещенности в ПК
(Фото 8) История освещенности в Gnuplot