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:
Clicas ai em cima do lado esquerdo onde diz o nome do teu equipamento e de seguida vai aparecer isto:
Clicas no separador que diz " Join API"
Depois vai aparecer isto:
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: