Maybe someone is using such kind of set-up? And can share the ‘code’…?
I use a lot of notifications. Mostly, I create text files of historical values for my heating system run times, but I also have a couple of text and e-mail alerts.
Here’s an example from my configuragion.yaml which sends a text message to my Google Fi phone number. (fake number 1115551212 in the example below.) Most cell providers offer a similar way to send a text via e-mail. It should be easy to google it for your provider.
Or, just use your regular e-mail address in the recipient:
field to get an e-mail instead of a text.
You’ll need the smtp server information for your “from” account. The example below works for my GMail accounts.
- platform: smtp
name: user1_sms
server: smtp.gmail.com
port: 587
sender: [email protected]
encryption: starttls
username: [email protected]
password: frompassword
recipient: [email protected]
Obviously fromaccount and frompassword need to be changed to your actual values.
Thank you for this option… I rather considered via HA automation. I.e. when my router IP is changed, then notification to my iPhone is sent.
Not sure how I can check and confirm in HA when IP was changed.
If you can integrate your router into ha you can create a template sensor for the ip
As soon this sensor changes you can trigger a notification
For example
The sensor has an Attribut external_ip and this you can check if it changes
Looks like ’Fritz!Box’ is well supported… I use Linksys MR9600, pretty new device on the market.
Not so much support…
You will want to get your external IP into a sensor that can be monitored.
This works well:
Then create an automation to send you a notification when that sensors state changes. You will need to change your sensor name and the notification service to match your actual setup. Also the condition is optional and may need to be tweaked based on what the sensor can put out. If the sensor cannot pull information or has some other error you don’t want to get a notification. If you get a notification in error, put the state from that notification in the ‘None’ spot of the condition to prevent it happening again.
- alias: "Send notification upon IP change"
initial_state: true
trigger:
- platform: state
entity_id: sensor.external_ip
condition:
- condition: template
value_template: "{{ trigger.to_state.state != 'None' }}"
action:
- service: notify.home_assistant
data_template:
title: 'Your External IP address has changed'
message: 'Your new IP address is {{ states.sensor.external_ip.state }}'
So simple… I’m getting older. It is even example when the REST platform is explained…
I created automation and when tested it works. Must be checked yet when really changed…
alias: Send notification when external IP changed
description: Automation to send notification when external IP changed
trigger:
- platform: state
entity_id: sensor.external_ip
condition:
- condition: template
value_template: '"{{ trigger.to_state.state != ''None'' }}"'
action:
- service: notify.mobile_app_dpiphone8
data:
title: Your External IP address has changed
message: 'Your new IP address is {{ states.sensor.external_ip.state }}'
mode: single
@ silvrr - thank you for help…!
I also wanted to set-up this option (notification via gmail).
But the service ‘notify.gmail’ is not appearing in Home Assistant.
What is wrong?
In ‘google’ I have ‘2-step Verification’, but then it is possible to use option ‘App password’. So I have generated this 16-digit password and entered it in ‘configuration.yaml’.
But as I said - this is not working, no such service…
Is that any ‘bug’ in Home Assistant? Or some additional settings are needed…???
Anyone tried to configure ‘gmail’ for notifications?
# SMTP notification
notify:
- name: gmail
platform: smtp
server: smtp.gmail.com
port: 587
timeout: 30
sender: [email protected]
encryption: starttls
username: [email protected]
password: atkbnarycvqegdck
recipient:
- [email protected]
# - [email protected]
sender_name: Home Assistant
Did you restart? Anything in the logs?
Also, I have my password pasted in with the spaces (e.g. atkb nary cvqe gdck)
Still nothing… With spaces you say. I’ll check morning… Maybe this is problem…
O.K. No space in password - this was the problem. After correction it is O.K.
Should be:
password: atkb nary cvqe gdck
NOT
password: atkbnarycvqegdck
Thank you for the hint!
The ‘gmail’ notify is showing and working.
I also wanted to try -> THIS INSTRUCTION <-, but this is not working for me.
What I’m doing wrong?
alias: Send iPhone notification when external IP changed
description: Automation to send notification to iPhone when external IP changed
trigger:
- platform: state
entity_id: sensor.external_ip
condition:
- condition: template
value_template: >-
{% if trigger.from_state.state and trigger.to_state.state %} true {% else %} false {%
endif %}
- condition: template
value_template: >-
{% if trigger.from_state.state == 'unknown' %} false {% else %} true {%
endif %}
- condition: template
value_template: >-
{% if trigger.to_state.state == 'unknown' %} false {% else %} true {%
endif %}
- condition: template
value_template: '{{ trigger.from_state.state != trigger.to_state.state }}'
action:
- service: notify.mobile_app_dpiphone8
data:
title: Your External IP address has changed
message: >-
Your External IP changed from {{ 'trigger.from_state.state' }} to {{
'trigger.to_state.state' }}
mode: single
The result of the message is strange:
I’m no YAML expert, but wouldn’t you leave out the single quotes (') in the message: line?
No, it does the same…
As per CaptTom, remove the quotes; this works for me:
Your External IP changed from {{ trigger.from_state.state }} to {{ trigger.to_state.state }}
O.K. Corrected that, but still nothing. Getting following ‘log’ errors…
Why it says that 'trigger is ‘undefined’ ???
Logger: homeassistant.components.automation.send_notification_when_external_ip_changed
Source: helpers/service.py:146
Integration: Automation (documentation, issues)
First occurred: 25 November 2020, 8:54:40 (230 occurrences)
Last logged: 7:29:33
Send iPhone notification when external IP changed: Error executing script. Unexpected error for call_service at pos 1: Error rendering data template: UndefinedError: 'trigger' is undefined
While executing automation automation.send_notification_when_external_ip_changed
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 351, in async_render
render_result = compiled.render(kwargs)
File "/usr/local/lib/python3.8/site-packages/jinja2/environment.py", line 1090, in render
self.environment.handle_exception()
File "/usr/local/lib/python3.8/site-packages/jinja2/environment.py", line 832, in handle_exception
reraise(*rewrite_traceback_stack(source=source))
File "/usr/local/lib/python3.8/site-packages/jinja2/_compat.py", line 28, in reraise
raise value.with_traceback(tb)
File "<template>", line 1, in top-level template code
File "/usr/local/lib/python3.8/site-packages/jinja2/sandbox.py", line 407, in getattr
value = getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'trigger' is undefined
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 144, in async_prepare_call_from_config
service_data.update(template.render_complex(config[conf], variables))
File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 91, in render_complex
return {
File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 92, in <dictcomp>
render_complex(key, variables): render_complex(item, variables)
File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 96, in render_complex
return value.async_render(variables)
File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 353, in async_render
raise TemplateError(err) from err
homeassistant.exceptions.TemplateError: UndefinedError: 'trigger' is undefined
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 253, in _async_step
await getattr(
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 432, in _async_call_service_step
domain, service, service_data = async_prepare_call_from_config(
File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 146, in async_prepare_call_from_config
raise HomeAssistantError(f"Error rendering data template: {ex}") from ex
homeassistant.exceptions.HomeAssistantError: Error rendering data template: UndefinedError: 'trigger' is undefined
Even though the issue has been solved already, I want to point at the dnsip integration which is made specifically to get the current IP address efficiently (using lightweight DNS requests), regardless of which router is being used (similar to the REST solutions suggested earlier)
Strange… My IP changed in the night, but I have not received any ‘notification’…
Taking about ‘dnsip’ I have following settings - see below.
Still something missed?
When executed manually - the automation works…
#Check external IP (via opendns.com)
- platform: dnsip
name: dnsip
scan_interval: 900
And automation:
alias: Send iPhone notification when external IP changed (dnsip)
description: ''
trigger:
- platform: state
entity_id: sensor.dnsip
condition:
- condition: template
value_template: '{{ trigger.to_state.state != 'None' }}'
action:
- service: notify.mobile_app_dpiphone8
data:
title: Linksys MR9600 IP address has changed
message: 'New external IP address is: {{ states(''sensor.dnsip'') }}'
mode: single