Triggers instead of full state events
This commit is contained in:
+15
-9
@@ -57,25 +57,31 @@ runHASS m (a : as) =
|
||||
services :: [(b, [Service])] -> [[Service]]
|
||||
services = map snd
|
||||
|
||||
-- | Build a state-change event payload matching `entityChangeEvent'` / `entityBool'` lenses.
|
||||
-- | Build a state-trigger payload matching `entityChangeEvent'` / `entityBool'`
|
||||
-- lenses. The subscribe_trigger websocket event wraps the trigger datum under
|
||||
-- `event.variables.trigger`, with `entity_id` and `to_state.state` fields.
|
||||
stateEvent :: T.Text -> T.Text -> Value
|
||||
stateEvent entityId state = object
|
||||
[ "event" .= object
|
||||
[ "data" .= object
|
||||
[ "entity_id" .= entityId
|
||||
, "new_state" .= object [ "state" .= state ]
|
||||
[ "variables" .= object
|
||||
[ "trigger" .= object
|
||||
[ "entity_id" .= entityId
|
||||
, "to_state" .= object [ "state" .= state ]
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
|
||||
-- | Build an Ikea button event payload matching `ikeaQuickButton` lenses.
|
||||
-- | Build an Ikea button trigger payload matching `ikeaQuickButton` lenses.
|
||||
buttonEvent :: T.Text -> T.Text -> Value
|
||||
buttonEvent entityId eventType = object
|
||||
[ "event" .= object
|
||||
[ "data" .= object
|
||||
[ "entity_id" .= entityId
|
||||
, "new_state" .= object
|
||||
[ "attributes" .= object [ "event_type" .= eventType ] ]
|
||||
[ "variables" .= object
|
||||
[ "trigger" .= object
|
||||
[ "entity_id" .= entityId
|
||||
, "to_state" .= object
|
||||
[ "attributes" .= object [ "event_type" .= eventType ] ]
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user