i have a sensor [
SONOFF SNZB-03 ZigBee Motion Sensor
the cool down of the sensor is to long so i want to use this code, for example the sensor detect motion and after 5 seconds it will reset to no motion.
i have a sensor [
the cool down of the sensor is to long so i want to use this code, for example the sensor detect motion and after 5 seconds it will reset to no motion.
Create a trigger-based template binary sensor with a state trigger looking for your motion sensor going on
and an auto_off
of 5 seconds.
Changing that doesnāt mean the sensor will produce more motion events. In all likeliness, youāll have the same number of motion events but your sensor now turns off after 5 seconds. You should adjust the settings in the hardware, not use a ill-though-out band aide.
Hi,
I have red a lot of posts, but probably not the right oneā¦
I want to use a value from a sensor to be written via set_state.py to the other entity, like:
in the automation i wrote:
state: {{ states(āsensor.power_pv_totalā)}}
entity_id: sensor.ccu3_webui_sv_current_plant_power
But I am struggeling with the syntax to do it right.
Can someone help out here.
Regards
Gerhard
Why do you want to go this (wrong) way, rather than just setting up a template sensor?
template:
- sensor:
- name: "Copy of other sensor"
state: "{{ states('sensor.power_pv_total') }}"
What are you actually really trying to do? See sections 8 and 11 of this guide:
Got it, thanks.
Thanks, works like a charm!
service: python_script.set_state
data:
entity_id: sensor.ccu3_webui_sv_current_plant_power
state: "{{ states('sensor.power_pv_total') }}"
and/or to change attribute(s):
data:
entity_id: sensor.ccu3_webui_sv_current_plant_power
state: "{{ states('sensor.power_pv_total') }}" # optional if attribute(s) are listed
name_of_attribute: "some_value"
brightness: "{{ state_attr('switch.adaptive_lighting_bathroom_light','brightness_pct') }}"
current_tilt_position: "{{ state_attr(trigger.entity_id, 'current_position') }}"
nighmode: "on"
message: "Some string message"
image: "/path/image_name"
timer: etc...
Note though that the state|attributes written by the script does not survive a system restart nor does it survive any state updates which occur through the integration which created sensor.ccu3_webui_sv_current_plant_power
.
This works perfectly thank you! My android TV only has a state of off or on. This script allows me to set a status of playing or paused, to better control the TV!
Hi,
Thanks so much for this, It took me a ages to finally work out my problem.
Basically I have a Switchbot Bot in toggle mode. So when I turn it on the bot then presses the button and then turns back, and this is not reflected in Home Assistant.
So with this I was able to create an automation that would reset the bot switch back to āoffā so when the user looks at it the status in Home assistant or as I have it exported to homekit, HomeKit.
alias: Office - Revert bot state to OFF
description: ""
trigger:
- platform: state
entity_id:
- switch.switchbot_bot
to: "on"
condition: []
action:
- service: python_script.set_state
data:
entity_id: switch.switchbot_bot
state: "off"
mode: single
When I initially tried this, I just called the swithc service and that would cause the bot to press twice when it reset the switch to the proper mod, with this I just get a single press.
Thanks again.
Once the original issue came back (intensively the last days) I tried that, unfortunately after adjusting the sensor definition and reloading template entities, the template sensor rendered unknown
. Any idea why?
Hereās my full definition:
template:
- trigger:
- platform: state
entity_id: binary_sensor.vibration_xyz
id: "sensor"
- platform: state
entity_id: binary_sensor.cover_xyz
to: "on"
for: "00:30:00"
id: "stuck"
binary_sensor:
- name: "Cover XYZ"
# entity_id: binary_sensor.cover_xyz
unique_id: bliblablub
device_class: opening
delay_off:
seconds: 1
state: >
{% if trigger.id == "sensor" %}
{% if (state_attr('binary_sensor.vibration_xyz', 'orientation') [2]) | int(0) > -70 %}
{{ 'on' }}
{% else %}
{{ 'off' }}
{% endif %}
{% else %}
{{ 'off' }}
{% endif %}
availability: "{{ is_state('binary_sensor.vibration_xyz', 'on') or is_state('binary_sensor.vibration_xyz', 'off') }}"
auto_off:
minutes: 30
Update: once a state change happened, the sensor switches state (e. g. to on
). So I need some kind of proper default initialization as after every template sensor reload/HA restart the state is unknown
until the first input sensor state change happens (which could take hours). How to achieve that?
If that could be solved and the āstuckā trigger (currently monitoring it) is working too, Iād consider this a proper/smart solution. Thanks @Troon and @petro.
template entities restore state, so it will only be unknown when you build it the first time. Restarting will cause it to restore a state. Reloading it will flop back to unknown.
FYI, simplified.
template:
- trigger:
- platform: state
entity_id: binary_sensor.vibration_xyz
id: "sensor"
- platform: state
entity_id: binary_sensor.cover_xyz
to: "on"
for: "00:30:00"
id: "stuck"
binary_sensor:
- name: "Cover XYZ"
# entity_id: binary_sensor.cover_xyz
unique_id: bliblablub
device_class: opening
delay_off:
seconds: 1
state: >
{{ trigger.id == "sensor" and state_attr('binary_sensor.vibration_xyz', 'orientation')[2] > -70 }}
availability: "{{ 'binary_sensor.vibration_xyz' | has_value }}"
auto_off:
minutes: 30
First: thanks for optimizing things, much easier to read now
Ahm thatās definitely a new behaviour.
unknown
.trigger
part was added.Old definition (only state
part):
# state: >
# {% if (state_attr('binary_sensor.vibration_xyz', 'orientation') [2]) | int(0) > -70 %}
# {{ 'on' }}
# {% else %}
# {{ 'off' }}
# {% endif %}
Any recommendations?
Either thatās a bug with trigger based template entities or I need to somehow work around that (which leads back to the original question: āhow to manually set state/value of sensor?ā as I have a monitoring system reporting unknown
and unavailable
entities. Simply suppressing the warning for this template sensor is just the last resort. I think I really want to set the state correctly when reloading/initializing the template sensor. Like it always did.
No itās not. This behavior has always existed for trigger based template entities.
Thatās what Iām talking about. In plain text: this is the first time I use trigger based template entities.
ā¦and I really donāt like that unknown
state behaviour. Why? It has all information to render the actual state. I guess it simply waits for one of the triggers to actuallyā¦well, trigger - in this two trigger case for a state change of the input sensor. Somehow logical.
So how can I motivate the sensor to leave its unknown
state? Thinking bout a fix-automation like āwhen sensor switches to unknown, do ā.
If I could set an entities state, Iād read the input sensorās state and simply set the same once again, hoping this will trigger the trigger based template sensor to render fine. Aaaaaaah well everything getās so complicated under the hood, doesnāt it.
Well, at least the āstuckā trigger is working, tested after 30 minutes now. So I swapped one deficiency (stuck sensor) with a new issue (unknown sensor).
Forget it. After reloading the sensor two more times (after applying the state and availability template optimizations of petro), thereās now unknown
state anymore. Seems to work, hopefully
It does not, because you arenāt providing triggers for it.
Trigger based template entities only update when a trigger occurs. You donāt have a trigger for when it reloads, you donāt have a trigger for when you restart. So it gets assigned an unknown state when either of those things occur.
(FYI: I updated my previous post)
Just to learn another thing: what does a trigger for
look like?
- trigger:
- platform: homeassistant
event: start
- ...
Iām only aware of automation reload event. Template entities reload event?
Hello,
i added the Attribute ālast_roomā to my person.ben
how can i set the room/area with states('sensor.ben_iphone_ble_area')
to my person.ben ?
configuration.yaml:
homeassistant:
customize_domain:
person:
last_room: ""
I Hope someone can help meā¦ thx
now i can set the attribute ālast_roomā to person.ben but after some seconds the attribute ālast_roomā get deleted. Is there any way to store the attribute permanent ?
action: python_script.exec
data:
file: python_scripts/set_state.py
entity_id: person.ben
last_room: "TEST"