ūüďĎ Como enviar SMS atrav√©s do HA


(Rodolfo) #1

Malta, hoje a internet está em todo o lado…e vivemos conectados dia e noite quer queiramos quer não , são os dias de hoje.
Contudo por vezes existe momentos em que n√£o temos os dados m√≥veis ou WIFI ligado nos nossos dispositivos, e existe momentos em que nos faria falta uma alternativa para recebermos notifica√ß√Ķes usando somento os dados GSM.
Pois bem, em fase de explora√ß√£o encontrei o github do @sthopeless em que fiz umas ligeiras modifica√ß√Ķes e conseguimos deste modo enviar n√£o s√≥ SMS via Home Assistant, como tamb√©m localizar os dispositivos, envia comandos tasker, definir wallpapers etc.

COMO FUNCIONA:

Precisamos de instalar a aplicação Android localizada em: https://play.google.com/store/apps/details?id=com.joaomgcd.join&hl=en_US

Ap√≥s instalada a app, clica onde diz: ‚ÄúSETTINGS‚ÄĚ depois " SMS and Phone Calls" e activa a op√ß√£o que diz SMS and call Service e d√° permiss√£o aos passos seguintes que aparecerem.

Ok

De seguida caso já estejas logado no browser com o teu endereço igual ao que usaste no Play Store, vai a:

https://joinjoaomgcd.appspot.com/

Vai aparecer algo tipo isto:

https://www.dropbox.com/s/9y63bwlfjwb978z/join1.JPG?dl=0

Clicas ai em cima do lado esquerdo onde diz o nome do teu equipamento e de seguida vai aparecer isto:

https://www.dropbox.com/s/dkb6ihda0pi9m69/join2.JPG?dl=0

Clicas no separador que diz " Join API"

Depois vai aparecer isto:

https://www.dropbox.com/s/u4g73ovkbi9amby/join4.JPG?dl=0

Clicas onde diz ‚ÄúShow‚ÄĚ e vai guardar em um bloco de nota ou outro os seguintes dados:

  • Nome do teu dispositivo (esta em cima do lado esquerdo em baixo do icone do tlm amarelo)

  • Device Id

  • Api Key

C√ďDIGO PARA O HOME ASSISTANT

Dentro do teu groups.yaml colocas:

default_view:
  view: yes
  icon: mdi:home
  entities:
    - group.join_joaoapps 

Caso j√° tenhas os grupos apenas tens que chamar o grupo: - group.join_joaoapps

Dentro da tua pasta Packages crias um ficheiro chamado join.yamll e colas lá dentro o seguinte código:

homeassistant:
###############################################################################
#                                                                             #
#                         C U S T O M I Z E                                   #
#                                                                             #
###############################################################################   

  customize:
    script.join_mega_script:
      icon: mdi:email
    input_text.msg_text:
      icon: mdi:comment-text-outline
    input_text.phone_number:
      icon: mdi:phone-classic
    input_text.join_url:
      icon: mdi:web
    input_text.join_cmd:
      icon: mdi:console
    input_select.contact_list:
      icon: mdi:account-group
    input_select.join_services:
      icon: mdi:sitemap
  customize_glob:
    "script.join_script_*":
      hidden: true

###############################################################################
#                                                                             #
#                         G R O U P                                           #
#                                                                             #
###############################################################################         
      
group:
  join_joaoapps:
    name: "Join"
    control: hidden
    view: no
    entities:
      - input_select.contact_list
      - input_text.phone_number
      - input_text.msg_text
      - input_text.join_url
      - input_text.join_cmd
      - input_select.join_services
      - script.join_mega_script
      
###############################################################################
#                                                                             #
#                         N O T I F Y                                         #
#                                                                             #
###############################################################################         
      
notify:
  - platform: joaoapps_join
    name: Join
    api_key: 
    device_id: 
    device_names: K10000 Pro

joaoapps_join:
  - name: rodolfo
    device_id: 
    api_key: 
    
###############################################################################
#                                                                             #
#                         I N P U T    S E L E C T                            #
#                                                                             #
###############################################################################       

input_select:
  join_services:
    name: Serviços
    options:
     - Enviar SMS
     - Enviar Ficheiro
     - Enviar URL
     - Enviar comando tasker
     - Tocar Telemóvel
     - Definir Wallpaper
    initial: Enviar SMS

  contact_list:
    name: Contactos
    options:
     - Rodolfo
     - Contact 2
     - Contact 3
     - Contact 4
     - Contact 5
     - "N√ļmero"        ## with this option we can set the phone number in the Number input_text
    initial: "N√ļmero"
###############################################################################
#                                                                             #
#                         I N P U T    T E X T                                #
#                                                                             #
###############################################################################   
    
input_text:
  msg_text:
    name: "SMS:"
    initial: ""

  phone_number:
    name: "N√ļmero:"
    max: 15
    initial: ""

  join_url:
    name: "Endereço URL:"
    initial: ""

  join_cmd:
    name: "Comando Tasker:"
    initial: Comando Tasker
    
###############################################################################
#                                                                             #
#                         S C R I P T                                         #
#                                                                             #
###############################################################################       

script:
  join_script_ring:
    alias: "Script Join Ring"
    sequence:
      - service: joaoapps_join.rodolfo_ring
      
  join_script_send_file:
    alias: "Script Join Send File"
    sequence:
      - service: joaoapps_join.rodolfo_send_file
        data_template:
          url: '{{ states("input_text.join_url") }}'
      - delay: 00:00:01
      - service: input_text.set_value
        data:
          entity_id: input_text.join_url
          value: Endereço URL
          
  join_script_send_sms:
    alias: "Script Join Send SMS"
    sequence:
      - service: joaoapps_join.rodolfo_send_sms
        data_template:
          message: '{{ states("input_text.msg_text") }}'
          number: >
            {% if is_state("input_select.contact_list", "Rodolfo") %} 96xxxxxx
            {% elif is_state("input_select.contact_list", "Contact 2") %} 
            {% elif is_state("input_select.contact_list", "Contact 3") %} 
            {% elif is_state("input_select.contact_list", "Contact 4") %} 
            {% elif is_state("input_select.contact_list", "Contact 5") %} 
            {% elif is_state("input_select.contact_list", "N√ļmero") %} {{ states("input_text.phone_number") }}
            {% endif %}
      - delay: 00:00:05
      - service: input_text.set_value
        data:
          entity_id: input_text.msg_text
          value: ""
      - service: input_text.set_value
        data:
          entity_id: input_text.phone_number
          value: ""
          
  join_script_send_tasker:
    alias: "Script Join Send Tasker"
    sequence:
      - service: joaoapps_join.rodolfo_send_tasker
        data_template:
          command: '{{ states("input_text.join_cmd") }}'
      - delay: 00:00:01
      - service: input_text.set_value
        data:
          entity_id: input_text.join_cmd
          value: Comando Tasker
          
  join_script_send_url:
    alias: "Script Join Send URL"
    sequence:
      - service: joaoapps_join.rodolfo_send_url
        data_template:
          url: '{{ states("input_text.join_url") }}'
      - delay: 00:00:01
      - service: input_text.set_value
        data:
          entity_id: input_text.join_url
          value: Endereço URL
          
  join_script_set_wallpaper:
    alias: "Script Join Send URL"
    sequence:
      - service: joaoapps_join.rodolfo_set_wallpaper
        data_template:
          url: '{{ states("input_text.join_url") }}'
      - delay: 00:00:01
      - service: input_text.set_value
        data:
          entity_id: input_text.join_url
          value: Endereço URL
          
  join_mega_script:
    alias: "Enviar"
    sequence:
      - service: homeassistant.turn_on 
        data_template:
          entity_id: >
           {% if is_state("input_select.join_services", "Tocar Telemóvel") %} script.join_script_ring
           {% elif is_state("input_select.join_services", "Enviar Ficheiro") %} script.join_script_send_file
           {% elif is_state("input_select.join_services", "Enviar SMS") %} script.join_script_send_sms
           {% elif is_state("input_select.join_services", "Enviar comando tasker") %} script.join_script_send_tasker
           {% elif is_state("input_select.join_services", "Enviar URL") %} script.join_script_send_url
           {% elif is_state("input_select.join_services", "Definir Wallpaper") %} script.join_script_set_wallpaper
           {% endif %}

NOTAS IMPORTANTES:

Aqui no código onde te aparece:

notify:
  - platform: joaoapps_join
    name: Join
    api_key: 
    device_id: 
    device_names: 

joaoapps_join:
  - name: rodolfo
    device_id: 
    api_key: 

tens que coloca os dados que em cima te disse para guardares em um bloco de notas.

Onde te aparece:

  contact_list:
    name: Contacts
    options:
     - Rodolfo
     - Contact 2
     - Contact 3
     - Contact 4
     - Contact 5
     - "Outro n√ļmero"        ## with this option we can set the phone number in the Number input_text
    initial: "Outro n√ļmero"

Tens que colocar a lista com o nome das pessoas a quem queres que sejam enviadas as mensages.

onde te aparece:

  join_script_send_sms:
    alias: "Script Join Send SMS"
    sequence:
      - service: joaoapps_join.rodolfo_send_sms
        data_template:
          message: '{{ states("input_text.msg_text") }}'
          number: >
            {% if is_state("input_select.contact_list", "Rodolfo") %} 96xxxxxxx
            {% elif is_state("input_select.contact_list", "Contact 2") %} 
            {% elif is_state("input_select.contact_list", "Contact 3") %} 
            {% elif is_state("input_select.contact_list", "Contact 4") %} 
            {% elif is_state("input_select.contact_list", "Contact 5") %} 
            {% elif is_state("input_select.contact_list", "Outro n√ļmero") %} {{ states("input_text.phone_number") }}

Onde te aparece Rodolfo e a frente 96xxxxxx tens que por o nome da pessoa que puseste na lista no passo anterior e o numero dessa pessoa a frente conforme te mostro ai nesse exemplo.

O que vais ver no teu frontend é isto:

https://www.dropbox.com/s/9ycegvlh7t0ytqh/join5.JPG?dl=0


(Carlos Alberto Martins) #2

Parabéns pelo tópico !!!
E como faz para enviar SMS automaticamente em alguma automação por exemplo ?


(Hopeless Automations) #3

@CarlosMartins podes criar uma automation deste estilo:

automation:
  - alias: 'Enviar SMS Alarm Triggered'
    trigger:
      - platform: state
        entity_id: alarm_control_panel.ha_alarm
        to: 'triggered'
    action:
      - service: joaoapps_join.sthope_send_sms
        data:
          message: "ALARM! The alarm has been triggered"
          number: "Numero para enviar"

(Fl√°vio Afonso) #4

Muito bom! Obrigado!


(Paulo Rosa) #5

Excelente. Com este projecto, aprendi uma maneira de configurar que me tinha passado ao lado desde o inicio que comecei a programar o homeassistant h√° mais de 1 ano. :crazy_face:
A op√ß√£o de poder juntar todas as configura√ß√Ķes num pacote (package). N√£o sei se n√£o seria oportuno colocar uma linha a mostrar como se faz ou criar um post no forum sobre esta op√ß√£o. (pessoalmente tive que pesquisar no forum oficial depois de ver este post para perceber o que era isso do package) .


(Hopeless Automations) #6

@paulo106 da uma vista de olhos na documentacao https://www.home-assistant.io/docs/configuration/packages/

Eu basicamente tenho

homeassistant:
  packages: !include_dir_named packages

E na pasta de config do Home Assistant tenho uma pasta chamada de packages onde meto para la as yaml configs.

Podes tambem dar uma vista de olhos nesta configuracao do Home Assistant https://github.com/mf-social/Home-Assistant


(Paulo Rosa) #7

Obrigado Hopeless.
Hé hé. Descobri mesmo essa informação ontem ao pesquisar para fazer esta configuração.
Poderá ser util para quem ainda não tinha ouvido falar desta opção como eu. :grinning:


(Rodolfo) #8

@paulo106 relativamente à questão dos packages essa informação já estava aqui no fórum. Como podes ver neste link


(Paulo Rosa) #9

Ok. Obrigado pela informa√ß√£o. Vou guarda-lo nos meus marcadores. Na altura que pesquisei, n√£o sei como fiz, mas n√£o encontrei. O meu coment√°rio n√£o foi pejorativo. S√≥ estava a destacar que era uma ferramenta muito √ļtil que eu desconhecia e que descobri com este teu post. :grinning: Se pudesse ter o link que colocaste logo no post, era menos voltas que se dava para quem n√£o √© muito craque na programa√ß√£o (ou √© distra√≠do como eu).


(Bruno Melo) #10

Boas pessoal, eu precisava de uma coisa idêntica mas no meu caso para automatizar uma chamada. Pois o portão do meu trabalho é aberto através de uma chamada. Era fixe se houvesse maneira de automatizar essa chamada… Já uso o zanzito juntamente com zonas… Será que é possível?
Cumps forte abraço.


(Rodolfo) #11

Podes usar o tasker para isso sem por o HA ao barulho.
Mas qual era a intenção mesmo? era abrir esse portão quando?


(Bruno Melo) #12

A intenção era abrir o portão sempre que entrasse na zona de trabalho. Pois tenho de andar sempre a pegar no telemóvel para abrir o portão. Se houve-se algo que fizesse isso automaticamente era fixe. Já tentei usar o Tasker mas nunca funcionou comigo não sei porquê…


(Rodolfo) #13

@ricain não dá aqui neste caso usar o que tu tens parq as sms só que em vez disso usar para fazer chamadas?


(Ricardo Silva) #14

Só experimentando, para sms funciona bem agora para chamadas só testando.


(Bruno Melo) #15

E como posso testar? @ricain? D√°s-me uma ajuda?


(Ricardo Silva) #16

Estive a pesquisa, e como faço não funciona. Eu uso um script para o envio de sms a partir do HA para um provedor sip. E esse sip como é obvio não deixa fazer chamadas através de script porque tens que ter algo que simula o telefone para realizar a chamada, neste caso por script não dá.


(Bruno Melo) #17

Hum. Que pena, dava-me mesmo bué de jeito essa opção… Muito obrigado por tudo. Forte abraço.


(Henrique Ferreira) #18

dá para enviar sms pelo Homeassistant sem precisar de uma app externa ? android ? ou por uma que seja gratis ? Instalando a app do mosquito dá também para enviar sms ?


(Jorge Assunção) #19

Que app é essa do Mosquitto?


(Henrique Ferreira) #20

queria dizer Zanzito - MQTT Extension
https://play.google.com/store/apps/details?id=it.barbaro.zanzito