Rega Automatica com Sonoff 4ch


(Alexandre Oliveira) #1

Olá pessoal. tenho um sonoff de 4 canais e ja está a funcionar perfeitamente, segue a minha config abaixo, agora gostaria de ter varios horarios para cada canal, aguem por aqui me dá uma ajuda?
Obrigado

switch:

  - platform: mqtt
    name: "Rega Mimos"
    state_topic: "stat/sonoff/POWER1"
    command_topic: "cmnd/sonoff/POWER1"
    payload_available: "Online"
    payload_not_available: "Offline"
    qos: 1
    payload_on: "ON"
    payload_off: "OFF"
    retain: true

  - platform: mqtt
    name: "Rega Batatas"
    state_topic: "stat/sonoff/POWER2"
    command_topic: "cmnd/sonoff/POWER2"
    payload_available: "Online"
    payload_not_available: "Offline"
    qos: 1
    payload_on: "ON"
    payload_off: "OFF"
    retain: true

  - platform: mqtt
    name: "Rega Reserva"
    state_topic: "stat/sonoff/POWER3"
    command_topic: "cmnd/sonoff/POWER3"
    payload_available: "Online"
    payload_not_available: "Offline"
    qos: 1
    payload_on: "ON"
    payload_off: "OFF"
    retain: true

  - platform: mqtt
    name: "Rega Arvores"
    state_topic: "stat/sonoff/POWER4"
    command_topic: "cmnd/sonoff/POWER4"
    payload_available: "Online"
    payload_not_available: "Offline"
    qos: 1
    payload_on: "ON"
    payload_off: "OFF"
    retain: true

(Jorge Assunção) #2

Agora só tens de criar a automação e enviar o comando para ligar e desligar para o tópico do cmnd.


(Bruno Melo) #3

Já cá tens um tópico relacionado com rega.


(Alexandre Oliveira) #4

já adicionei as automações para cada canal, ex: abaixo. agora eu queria adicionar um switch na pagina do HA que me desactiva-se a automação. Imaginem que durante uma semana está chover, desactivo a rega automatica.

- alias: Regar Arvores
    trigger:
      - platform: time
        at: '05:00:00'
    condition:
      - condition: time
        weekday:
          - mon
          - tue
          - wed
          - thu
          - fri
          - sat
          - sun
    action:
      - service: switch.turn_on
        data:
          entity_id: switch.rega_arvores
      - delay: 00:15:00
      - service: switch.turn_off
        data:
          entity_id: switch.rega_arvores

(Jorge Assunção) #5

Basta adicionares um condição que leia o estado desse switch.


(Bruno Melo) #6

Para isso desligas as automaçoes ou então fazes um sensor de chuva igual ao meu.


(Alexandre Oliveira) #8

boas noites, esquecendo a automação que publiquei acima, resolvi inventar mais um pouco. aqui ai:

encontrei este codigo que supostamente estava a funcionar e eu apenas alterei as ultimas duas linhas. Mas não acontece nada. o suposto é eu definir um horario e a eletrovavula 1 ligar a essa hora. alguem faz ideia do erro que estou a fazer? obrigado

sensor:
# Templates for alarm clock
  - platform: template
    sensors:
      # Alarm clock
      alarm_hour:
        friendly_name: 'Hour'
        value_template: '{{ states.input_number.alarmhour.state|round(0)|string }}'
      alarm_minutes:
        friendly_name: 'Minutes'
        value_template: '{{ states.input_number.alarmminutes.state|round(0)|string }}'
      alarm_time:
        friendly_name: 'Alarm'
        value_template: '{% if states.input_number.alarmhour.state|round(0)|string|length == 1 %}0{% endif %}{{ states.input_number.alarmhour.state|round(0)|string }}:{% if states.input_number.alarmminutes.state|round(0)|string|length == 1 %}0{% endif %}{{ states.input_number.alarmminutes.state|round(0)|string }}'
      time:
        value_template: '{{ now().strftime("%H:%M")}}'

binary_sensor:
  # Sensor to inform if current day is a work day
  - platform: workday
    country: PT

input_number:
  # Additional icons for alarm clock
  alarmhour:
    name: Hour
    icon: mdi:timer
    initial: 7
    min: 0
    max: 23
    step: 1
  alarmminutes:
    name: Minutes
    icon: mdi:timer
    initial: 40
    min: 0
    max: 59
    step: 1

input_boolean:
  # Additional icons for alarm clock
  alarmstatus:
    name: Ativar Agendamento
    initial: off
    icon: mdi:alarm-check
  alarmweekday:
    name: Weekdays Only
    initial: off
    icon: mdi:calendar

automations:
- id: Alarm Clock
  alias: Alarm Clock
  trigger:
    platform: time
    minutes: '/1'
    seconds: 00

  condition:
    condition: and
    conditions:
      - condition: template
        value_template: '{{ states.sensor.time.state == states.sensor.alarm_time.state }}'

      - condition: or
        conditions:
          - condition: and
            conditions:
              - condition: state
                entity_id: input_boolean.alarmstatus
                state: 'on'
              - condition: state
                entity_id: input_boolean.alarmweekday
                state: 'on'
              - condition: state
                entity_id: 'binary_sensor.workday_sensor'
                state: 'on'

          - condition: and
            conditions:
              - condition: state
                entity_id: input_boolean.alarmstatus
                state: 'on'
              - condition: state
                entity_id: input_boolean.alarmweekday
                state: 'off'
  action:
    - service: switch.turn_on
      entity_id: switch.eletrovavula_1_mimos

groups.yaml:


  Programadorgroup:
    control: hidden
    name: Programador De Rega
    entities:
      - input_boolean.alarmstatus
      - input_number.alarmhour
      - input_number.alarmminutes
      - sensor.alarm_time

(Nuno Neves) #9

Está um bocado confusa… Por exemplo, para que servem os sensor.alarm_hour e sensor.alarm_minutes? Pura e simplesmente não os usas para nada…
De resto, provavelmente será um problema com strings vs int…


(Alexandre Oliveira) #10

Penso que será para defenir as horas e minutos no input slide que depois introduz esse valores num outro sensor.alarmstatus


(Nuno Neves) #11

Não… O input_number pode ser definido directamente e um sensor nunca define nada, apenas “recebe”…


(Bruno Melo) #12

Boas @cafeoliveira, se quiseres aguardar mais uns dias irei postar novo código para a rega. Estou em testes para ter a certeza que está tudo funcional para depois postar cá o código. É algo idêntico ao que já tens.


(Alexandre Oliveira) #13

Obrigado @maxcalavera, vou aguardar.


(Ricardo Reis) #14

Finalmente também tenho o meu sistema quase funcional, ou melhor, está funcional mas há uns ajustes que queria melhorar antes de partilhar. Estou a fazer em node-red. De qualquer das maneiras, vai ser bom para cruzarmos ideias


(Bruno Melo) #15

@ricreis394 infelizmente os testes que fiz hoje não correram bem. A rega não iniciou a hora programa. :worried:


(Jorge Assunção) #16

@ricreis394 e @maxcalavera

Quando tiverem os vossos projectos concluídos abram um novo tópico e coloquem na categoria Partilha de Projectos.

Obrigado pelo vosso trabalho!


(Alexandre Oliveira) #17

boa noite. tenho este erro e não estou a perceber o que se passa:

ERROR (MainThread) [homeassistant.config] Invalid config for [automation]: [minutes] is an invalid option for [automation]. Check: automation->trigger->0->minutes. (See /root/.homeassistant/packages/slide.yaml, line 2). Please check the docs at https://home-assistant.io/components/automation/

codigo:

automation:

  - alias: "reveil matin Aurore Semaine"
    trigger:
      - platform: time
        minutes: '/1'
        seconds: 0
    condition:
      - condition: state
        entity_id: input_boolean.alarmweekon
        state: 'on'
      - condition: state
        entity_id: input_boolean.alarmweekday
        state: 'on'
      - condition: state
        entity_id: calendar.jours_feries_en_france
        state: 'off'
      - condition: time
        weekday:
          - mon
          - tue
          - wed
          - thu
          - fri
      - condition: template
        value_template: '{{ ((now().strftime("%s") | int + 300) | timestamp_custom("%H:%M") == states.sensor.alarm_time.state) }}'
    action:
      - service: automation.turn_on
        entity_id: automation.regar_arvores


sensor:

  - platform: template
    sensors:
      alarm_time:
        friendly_name: 'Time'
        value_template: '{{ "%0.02d:%0.02d" | format(states("input_number.alarmhour") | int, states("input_number.alarmminutes") | int) }}'

(Ricardo Reis) #18

no trigger em vez de time, mete time_pattern


(Ricardo Reis) #19

Os meus testes correram muito bem, já estou a funcionar 100% com o meu sistema.
Somente tenho um problema que falta arranjar, que é parar a rega se ativar manualmente. De resto, está tudo.

Aqui deixo a sneak peek do interface


(Alexandre Oliveira) #20

Obrigado. O erro desapareceu…
Mas eu agendei e nada aconteceu, já adicionei o fim de semana a lista dos dias de senama, mas nada…


(Bruno Melo) #21

@ricreis394 a tua automação é muito idêntica ao que estava a preparar. Mas a minha ainda não funciona…