Sensor de movimento e conexão de registro de alarme e vídeo no Home Assistant no Raspberry pi

Quero falar sobre minha pouca experiência em trabalhar com o Home Assistant (doravante referido como HA) no Raspberry pi e sobre como conectar a função de registro de vídeo, sensor de movimento e, portanto, a função de segurança em casa para receber imagens por correio no caso de uma operação de "segurança".

Obviamente, uma das razões é o desejo de entender pelos seus comentários que o que eu fiz "fez errado", afinal, implementando esse cenário.

Existem três maneiras de configurar a funcionalidade acima: "sem problemas", "curto" e "independente". No primeiro caso, você, tendo baixado a imagem final do site https://ViaMyBox.com/downloadpagepara o seu Raspberry pi, você pode ver como tudo fica no formulário já configurado. No segundo caso, você pode baixar o zip do site ou do projeto github, instalar e instalar a imagem do docker HA através do utilitário (sudo via-setup.sh) para ver como tudo está configurado. E, finalmente, a terceira maneira é configurar “tudo do seu jeito”: pegue algo útil no site ou githab do projeto ou neste tutorial. Links para tudo no final do artigo.

Suponha que você já tenha um Assistente Doméstico (HA) em funcionamento. Neste artigo, consideraremos apenas aspectos da formação de configurações yaml e uma descrição da sequência de regras e condições que levam a uma ação específica, no nosso caso, a conexão de "segurança da casa" e um script que começa a tirar fotos dentro de 5 segundos após o sensor de movimento ser acionado. E, como resultado, o Assistente Doméstico envia as fotos tiradas por correio. Não sou especialista em yaml ou na criação de configurações para o Home Assistant, mas, seguindo os exemplos de trabalho, tenho uma configuração de trabalho, que quero compartilhar.

Todos os arquivos aos quais nos referiremos, explicarei no final do artigo para uma revisão mais conveniente. Não vou tratar aqui do trabalho de scripts para gravação de vídeo no bash ou python neste exemplo. Somente Assistente Doméstico. Mas se você tiver dúvidas - Bem-vindo!

No final, tudo fica assim para mim (destacado em vermelho que consideraremos no artigo):





Eu uso o Raspberry pi como plataforma. E meu caminho para os arquivos de configuração é / usr / share / hassio / homeassistant /. O caminho para seus arquivos de configuração pode ser diferente do meu caminho. Naquela época, eu tinha o Assistente Doméstico 0.101.3. Estaremos interessados ​​nos arquivos de configuração neste diretório: configuration.yaml e automation.yaml.

Após cada alteração nesses arquivos, é importante lembrar que será necessário verificar a configuração após nossas alterações para detectar quaisquer erros nela. Isso é feito na guia Painel do Home Assistant -> Configuração -> Controles do servidor -> Verificar configuração. E então, no mesmo local, recarregamos automações e recarregamos scripts, se a verificação foi bem-sucedida. E, em caso de dúvida, o reinício do Gerenciamento do Servidor na mesma guia atualiza com precisão a configuração.

O sensor de movimento HC-SR501 está conectado ao barramento Raspberry pi GPIO. É necessário conectar corretamente os três fios de contato ao GPIO, e podemos usar nosso sensor em ação. O sensor possui três contatos: potência gcc (+), zero gnd (-), contato de controle (dados). Depois de ler a descrição do GPIO, eu os conectei ao meu raspberry da seguinte maneira. Conectei o hc-sr501 ao conector GPIO: pino 2 - 5,5vvcc; pino 26 (13ª linha) - contato de dados e pino 6 - gnd (-) do sensor.

Eu uso uma câmera USB ou uma câmera CSI em conjunto com o mjpg-streamer como fonte da foto. Como instalar e configurar o mjpg-streamer no Raspberry pi, não consideraremos aqui. Exemplos de instalação rápida na Internet muito. No entanto, quero dizer que uso dados deste projetoA instalação deste módulo também é descrita em detalhes aqui. Ou use qualquer método conveniente para você tirar fotos e vídeos. Afinal, qual script bash para fixar no HA, em última análise, depende de você.

Agora descreveremos nosso sensor em configuration.yaml, digamos, através da linha de comando:

sudo nano /usr/share/hassio/homeassistant/configuration.yaml

embora o uso do bloco de notas ++ com winscp possa ser mais conveniente ...

Descrevemos a sequência de configurações do HC-SR501 da seguinte maneira:

binary_sensor:
  - platform: rpi_gpio
    #name: HC-SR501
    ports:
      7: Sensor HC-SR501
    invert_logic: false

Note-se que aqui o importante são as configurações nas linhas que descrevem a conexão com os contatos de controle (dados) dos sensores: pino 7

portas:

7: Sensor HC-SR501

O Assistente Doméstico possui uma ferramenta integrada para ativar a função de segurança doméstica. Vamos descrevê-lo em nosso configuration.yaml, usando a descrição: www.home-assistant.io/integrations/manual

alarm_control_panel:
  - platform: manual
    name: Home Alarm
    pending_time: 60
     delay time 40
     triggered:
    pending_time: 0
    code: 1234

Essa configuração significa que temos 60 segundos para sair de casa (após esse período o alarme será ativado) e 40 segundos para desligá-lo (com senha 1234) ao retornar para casa. Por alguma razão, você sempre sai mais do que vem.)

Agora, descreveremos o mecanismo para ativar e desativar as fotos pela operação do sensor de movimento em nossa configuration.yaml (mais sobre a plataforma switch - command_line pode ser encontrada aqui ):

 - platform: command_line
   switches:
      start_stop_motion_rec_timelapse:
        friendly_name: 'Record motion timelapse video'
        command_on: 'curl http://localhost/start_mjpgstrm.php  && curl http://localhost//rec-motion-mjpg.php'
        command_off: 'curl http://localhost/stop_mjpgstrm.php && curl http://localhost/rec-motion-mjpg-stop.php'


Aqui, vinculamos o comando enable command_on e command_off off aos nossos scripts que controlam a gravação da câmera. Nesse caso, quando o command_on é executado, 2 scripts são executados seqüencialmente. Isso está lançando o mjpg-streamer e disparando a gravação do sensor de movimento. O acesso aos scripts bash passa pelo arquivo php do site de trabalho no Raspberry pi. Para fazer isso, configurei o nginx e o acesso à web e, ao acessar pelo navegador no formato http: // <endereço IP do seu Raspberry pi> /start_mjpgstrm.php, nosso script php deve ser executado. Este script executa mjpg-streamer nesta situação.

Não consideramos a configuração de acesso à web neste artigo. Definitivamente, isso não é segurança, mas devido ao fato de eu ter HA no docker, me deparei com o fato de eu ter um ambiente de docker isolado e o “mundo externo” do SO que posso ver entrando em contato com meu site através do php. Provavelmente, existem várias boas soluções de docker ou gurus de HA. Escreva, seria interessante saber!

Deixarei uma lista desses scripts no artigo, não vamos nos alongar neles. Neste artigo, desejo rastrear apenas a formação da sequência de ações no Assistente de residência.

Tudo isso é colocado no objeto start_stop_motion_rec_timelapse, que será nosso interruptor visual, com o qual controlaremos a gravação de fotos quando o sensor de movimento for acionado.



Podemos visualizar esses objetos criados por nós na guia Home Assistant -> Overwiew, alternando a ativação do modo de configuração da interface do usuário no canto superior direito.



Reinicie o HA no navegador na guia "Configuration -> Server Control" para pegar nosso configuration.yaml.

Em seguida, selecione o sinal de mais amarelo na parte inferior da janela do navegador, clique no cartão Entidades e anexe nossos objetos criados aos mapas.



Para o nosso sensor, selecione a placa do sensor. Ele ficará assim:



Como você pode ver na figura, no segundo campo da entidade, a opção acima é: switch.start_stop_motion_rec_timelapse.

Isso nos permite ativar e desativar a gravação no sensor de movimento, independentemente da inclusão da função "segurança em casa". E, em geral, já deve funcionar depois de todas as ações acima.

Bem, e consequentemente, o mapa do painel de alarme:



Há outro ponto interessante. Eu uso o Home Assistant como um contêiner de encaixe. Nesse sentido, o caminho para o nosso script será diferente do caminho real para o arquivo de script. Afinal, a estrutura do arquivo dentro do contêiner é virtualizada e conectada à estrutura real do arquivo através dos volumes montados do docker. É assim: Caminho dentro do contêiner: / config / scripts / Caminho dentro do SO: / usr / share / hassio / homeassiatnt / scripts. Portanto, observe as configurações do contêiner, como esses volumes são configurados no campo Binds. Se você tem HA.

sudo docker inspect homeassistant|less

Quando o sensor de movimento é acionado, no momento em que o alarme é ativado: quero que, além do fato de estarmos iniciando uma fotografia rápida (fotos com timelapse), receba um aviso por correio e uma foto. Eu paralelizei os processos. Na primeira foto, o registro (instantâneos de timelapse) ocorre alguns segundos após o disparo do sensor. Para fazer isso, eu corro mjpg-streamer curl localhost / start_mjpgstrm.php , inicio o php: surl http: //localhost/rec-motion-mjpg.php . Ele, por sua vez, executa o script python mov.py. Todos os arquivos e links descritos estão no final do artigo por referência. E outro script takeSnapshotWebcam.sh tira uma captura instantânea, que eu envio por email. Eu descrevo esses scripts em nosso configuration.yaml assim:

shell_command:
#      
  take_snapshot_webcam: '/config/scripts/takeSnapshotWebcam.sh'
#  mjpg-streamer 
  start_mgpg_streamer: 'curl http://localhost/start_mjpgstrm.php'
# mjpg-streamer
  stop_mgpg_streamer: 'curl http://localhost/stop_mjpgstrm.php'
#      5 
  start_motion_rec: 'curl http://localhost/rec-motion-mjpg.php'
# 
  stop_motion_rec: 'curl http://localhost/rec-motion-mjpg-stop.php'

Lá, em configuration.yaml, descrevemos nosso objeto para correspondência:

notify:
  - name: ha_sendmail
    platform: smtp
#    gmail
    server: smtp.gmail.com
    port: 587
    timeout: 15
#  
    sender: user@gmail.com
    encryption: starttls
    username: user@gmail.com
    password: passwd
#  (       ,    )
    recipient:
      - user@gmail.com
    sender_name: My Home Assistant

Um ponto importante! Para que nosso HA se conecte e envie cartas (campo do remetente), precisamos habilitar o gmail para usar esta caixa em nosso serviço de HA. Como fazer isso é o link aqui: myaccount.google.com/lesssecureapps

E, em seguida, descrevemos o próprio mecanismo de automação quando o alarme home_alarm é ativado em automation.yaml:

#   (alias) “  ,   ”
- alias: 'Trigger alarm while armed away'
#alias ,     “on”
  trigger: 
    - platform: state
      entity_id: binary_sensor.sensor_hc_sr501
      to: 'on'
# ,         “armed away”
  condition:
    - condition: state
      entity_id: alarm_control_panel.home_alarm
      state: armed_away
#     
  action:
# mjpg-streamer ( )
    - service: shell_command.start_mgpg_streamer
# ,   
    - service: shell_command.start_motion_rec
#    “  ”   HA   “ ”
    - service: alarm_control_panel.alarm_trigger
      entity_id: alarm_control_panel.home_alarm

O seguinte conjunto de condições e ações é enviar uma mensagem do console ao desativar a "segurança" e desativar nossos scripts de gravação de movimento:

- alias: 'Send notification when alarm is Disarmed'
  trigger:
    - platform: state
      entity_id: alarm_control_panel.home_alarm
      to: 'disarmed'
  action:
    - service: shell_command.stop_mgpg_streamer
    - service: shell_command.stop_motion_rec
    - service: persistent_notification.create
      data:
       message: The alarm is Disarmed at {{ states('sensor.date_time') }}"

E finalmente, o terceiro grupo - enviamos uma carta com uma foto:

- alias: 'Send notification when alarm triggered'
  trigger: 
   - platform: state
     entity_id: alarm_control_panel.home_alarm
     to: 'triggered'
  action:
    - service: persistent_notification.create
      data:
       message: Notification when alarm triggered. Motion sensor HC-SR501 detected.
    - delay:
       seconds: 4
#     
    - service: script.webcam_snapshot
#      configuration.yaml: notify.ha_sendmail
    - service: notify.ha_sendmail
      data:
        title: 'Intruder alert'
        message: '{{now().strftime("%H:%M %Y-%m-%d")}}:Notification when alarm triggered. Motion sensor HC-SR501 detected.'
        data:
           images:
#      script.webcam_snapshot  
              - /config/camera/snapshot.jpg

Lembre-se de que o layout da linha é importante nos arquivos yaml e os caracteres de espaço antes dos comandos desempenham um papel importante na formação dos blocos de código, sua estrutura. Verifique todas as alterações no yaml através da Configuração do Assistente Doméstico (HA) -> Controles do servidor -> Verifique a configuração.

Tudo parece estar, e seu Raspberry pi se torna elegante ... se o raio não travar!)

Aqui está - a automação de trabalho HA, Configure com suas próprias mãos! Certifique-se de escrever para mim o que você pensa sobre isso!

E, se você ainda ler até o fim, ofereço os links prometidos:

https://viamybox.com/downloadpage

https://github.com/viatc/viamybox Os

arquivos de configuração descritos aqui:
automation.yaml, configuration.yaml, takeSnapshotWebcam. sh, rec-motion-mjpg.php, mov.py

Source: https://habr.com/ru/post/undefined/


All Articles