Witam
Czy jest jakiś sposób na zmianę stanu encji przy pomocy automatyzacji? W narzędziach deweloperskich można to zrobić natomiast w automatyzacjach nie widzę takiej opcji.
Daj więcej info. Jaka encja?
Encja cover. Mam trochę niestandardową konfiguracje rolet. Rolety sterowane radiowo za pomocą Rflink to MQTT. Jeśli steruje nimi z poziomu AIS to stany są ok. Sterowanie za pomocą pilota nie zmienia tego stanu, dlatego potrzebuje automatyzacje (a może coś innego) co po odebraniu komunikatu MQTT zmieni stan na OPEN lub CLOSE
No to zdaje się że to jest dla Ciebie rozwiązanie:
Jakiś trop, ale nie bardzo rozumiem. Nie mam jako tako stanu rolety. Jedynie informację o nienaciśnięciu przycisku na pilocie.
W tej chwili mój konfig tak wygląda:
cover:
- platform: mqtt
name: “roleta salon1”
command_topic: “rflink/cmd”
qos: 0
payload_open: “10;RTS;02FFFF;00;UP”
payload_close: “10;RTS;02FFFF;00;DOWN”
payload_stop: “10;RTS;02FFFF;00;STOP”
optimistic: true
No dobra to może napisz jak to chciałeś rozwiązać.
Jak widzisz można stworzyć switch, który można podpiąć do encji typu cover. Encję switch można w prosty sposób ustawiać z poziomu automatyzacji. Tylko ciekawi mnie logika na jakiej podstawie i kiedy chcesz zmieniać stan encji. Jednak najlepiej się sprawdza czujnik krańcowy, choćby po zigbee, będzie najpewniejszy, a tak to optymistyczne założenia, że np. brama nie trafiła na opór i nie odbiła.
Oczywiście, że najlepsze rozwiązanie to fizyczna krańcówka. Przy bramie garażowej nie ma z tym problemu. Przy rolecie okiennej to już kłopot. Jako że moje rolety mają sterowanie tylko radiowe to stanu mogę się domyślać. W tej chwili stan (teoretyczny) w AIS mam tylko po wysterowaniu przez AIS. Jeśli roletę zamknę lub otworze za pomocą pilota radiowego AIS o tym nie wie i tego stanu nie zmienia. Gdy korzystam z pilota radiowego rflink wysyła ładunek MQTT (np. {“SWITCH”:“01”,“CMD”:“DOWN”,“SWITCH01”:“DOWN”}). I chce to właśnie wykorzystać to zmiany stanu w AIS.
no to zrób automatyzacje, robisz pomocnika, switch STAN ROLETY
jak mqtt {“SWITCH”:“01”,“CMD”:“DOWN”,“SWITCH01”:“DOWN”}) jest to dajesz usluge zmiany switcha na OFF
abo to MQTT Sensor - Home Assistant
powinieneś mieć to tak że jak dajesz pilotem to nie do sterownika rolety tylko do bramki i bramka wysyla do sterownika
Poczytaj → How to manually set state/value of sensor? - #19 by ronschaeffer - Configuration - Home Assistant Community
u mnie to działa.
Zawartość pliku set_state.py
#==================================================================================================
# python_scripts/set_state.py
#==================================================================================================
#--------------------------------------------------------------------------------------------------
# Set the state or other attributes for the entity specified in the Automation Action
#--------------------------------------------------------------------------------------------------
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)
inputState = inputStateObject.state
inputAttributesObject = inputStateObject.attributes.copy()
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 == 'state':
inputState = newAttribute
else:
inputAttributesObject[item] = newAttribute
hass.states.set(inputEntity, inputState, inputAttributesObject)
Przykładowa zmiana stanu w automatyzacji:
action:
- service: python_script.set_state
data:
entity_id: cover.brama
state: closed
To chyba właśnie to o co mi chodziło. Składnie skryptu masz dokładnie taką ja w tym przykładzie?
Cała składnia automatyzacji:
alias: Zamkniecia bramy
description: ''
trigger:
- platform: state
entity_id: binary_sensor.czujnik_bramy
from: 'on'
to: 'off'
condition: []
action:
- service: python_script.set_state
data:
entity_id: cover.brama
state: closed
mode: single
oczywiście wyzwalacz dopasuj do tego co Ty masz
No i gitara. Działa. Dzięki bardzo. Jedyny mankament to to, że nie pamięta stanu po restarcie bramki.
Zrób automatyzację, która przy starcie HA ustawi status bramy na zamknięta i w 99,99% będzie się zgadzało
EDIT
No tak, w tym przypadku się nie sprawdzi - rolety
W przypadku bramy to by się sprawdziło. W moim przypadku chodzi o rolety okienne. Mimo wszystko jestem zadowolony z rezultatu. Kiedyś do tego wrócę. Teraz na widelcu inne integracje, konfiguracje…