O problema vem do "&" e "|", você pode ver a lista completa de expressões suportadas para o 3.2 aqui: link
Esse é o meu gatilho de amostra para histerese de temperatura:
({TRIGGER.VALUE}=0 and {Template Sensor:temp.T1.last(5m)}>{$MAX_TEMP_T1}) or
({TRIGGER.VALUE}=1 and {Template Sensor:temp.T1.last(5m)}>{$MAX_TEMP_T1_HYST})
Com estas macros de modelo:
{$MAX_TEMP_T1} = 28
{$MAX_TEMP_T1_HYST} = 25
Além disso, a partir de 3.2 você pode usar o recurso "Expressão de recuperação": link