Arduino Nano has:
- LED on D2
- LDR on A0
Nano is connected via serial USB to Home Assistant
Nano is controlled with commands sent on serial.
Nano runs via tasks.
Nano reports via serial to HA.
- echo 'ss1000,30;' > /dev/ttyUSB0
- echo 'sl500,50;' > /dev/ttyUSB0
{"lightlevel":1,"Sensor":{"Interval":1000,"AvgSamples":30},"LedBlink":{"Interval":500,"Duration":50}}sensor:
- platform: serial
serial_port: /dev/ttyUSB0
shell_command:
set_sensor: /config/nano-send-command.sh "ss" {{ interval }} {{ samples }}
set_led_blink: /config/nano-send-command.sh "sl" {{ interval }} {{ duration }}
template: !include template.yamlAnd the contents of the template.yaml file:
### template.yaml
- sensor:
- name: Nano Light Level
state: "{{ state_attr('sensor.serial_sensor', 'lightlevel') }}"
unique_id: nano_light_level
unit_of_measurement: lx
- number:
- name: Nano Sensor Interval
unique_id: nano_sensor_interval
state: "{{ state_attr('sensor.serial_sensor', 'Sensor').Interval }}"
set_value:
- action: script.set_sensor_interval
data:
interval: "{{ value }}"
samples: "{{ state_attr('sensor.serial_sensor', 'Sensor').AvgSamples }}"
step: 1
min: 100
max: 60000
unit_of_measurement: ms
- number:
- name: Nano Sensor Average Samples
unique_id: nano_sensor_avg_samples
state: "{{ state_attr('sensor.serial_sensor', 'Sensor').AvgSamples }}"
set_value:
- action: script.set_sensor_interval
data:
interval: "{{ state_attr('sensor.serial_sensor', 'Sensor').Interval }}"
samples: "{{ value }}"
step: 1
min: 1
max: 60000
- number:
- name: Nano LED Interval
unique_id: nano_led_interval
state: "{{ state_attr('sensor.serial_sensor', 'LedBlink').Interval }}"
set_value:
- action: script.set_led_blink_interval
data:
interval: "{{ value }}"
duration: "{{ state_attr('sensor.serial_sensor', 'LedBlink').Duration }}"
step: 1
min: 1
max: 60000
unit_of_measurement: ms
- number:
- name: Nano LED Duration
unique_id: nano_led_duration
state: "{{ state_attr('sensor.serial_sensor', 'LedBlink').Duration }}"
set_value:
- action: script.set_led_blink_interval
data:
interval: "{{ state_attr('sensor.serial_sensor', 'LedBlink').Interval }}"
duration: "{{ value }}"
step: 1
min: 1
max: 60000
unit_of_measurement: ms