41 lines
1.8 KiB
Python
41 lines
1.8 KiB
Python
|
"""Set the state or other attributes for the specified entity."""
|
||
|
|
||
|
# ========================================================================================
|
||
|
# python_scripts/set_state.py
|
||
|
# modified from -
|
||
|
# https://community.home-assistant.io/t/how-to-manually-set-state-value-of-sensor/43975/37
|
||
|
# ========================================================================================
|
||
|
|
||
|
# ----------------------------------------------------------------------------------------
|
||
|
# Set the state or other attributes for the specified entity.
|
||
|
# Updates from @xannor so that a new entity can be created if it does not exist.
|
||
|
# ----------------------------------------------------------------------------------------
|
||
|
|
||
|
inputEntity = data.get("entity_id")
|
||
|
if inputEntity is None:
|
||
|
logger.warning("===== entity_id is required if you want to set something.")
|
||
|
else:
|
||
|
inputStateObject = hass.states.get(inputEntity)
|
||
|
if inputStateObject is None and not data.get("allow_create"):
|
||
|
logger.warning("===== unknown entity_id: %s", inputEntity)
|
||
|
else:
|
||
|
if not inputStateObject is None:
|
||
|
inputState = inputStateObject.state
|
||
|
inputAttributesObject = inputStateObject.attributes.copy()
|
||
|
else:
|
||
|
inputAttributesObject = {}
|
||
|
|
||
|
for item in data:
|
||
|
newAttribute = data.get(item)
|
||
|
logger.debug("===== item = {0}; value = {1}".format(item, newAttribute))
|
||
|
if item == "entity_id":
|
||
|
continue # already handled
|
||
|
elif item == "allow_create":
|
||
|
continue # already handled
|
||
|
elif item == "state":
|
||
|
inputState = newAttribute
|
||
|
else:
|
||
|
inputAttributesObject[item] = newAttribute
|
||
|
|
||
|
hass.states.set(inputEntity, inputState, inputAttributesObject)
|