(target-node-environmentstate)=
# EnvironmentState
The `EnvironmentState (Aeon.Environment)` node is a special case of a labelled button, operating similarly to [`ButtonSource`](target-node-buttonsource), but returning an observable sequence of type `Aeon.Environment.EnvironmentStateMetadata`, which details the name of the experimental environment and the current state of the environment.
The visualiser for this node provides a single labelled button that toggles between different "EnvironmentStates".

![EnvironmentStateGUI](../../../images/environment_state.svg){align=center}

In Aeon, this is used to switch between "Maintenance" and "Experiment" states. 
The generated observable sequence generated by button presses, which reflects changes in the environment state, is broadcast through a shared `Subject`. 
This `Subject` is then subscribed to at various points in the experimental workflow to log state changes with the data, modify parameters and logic, and alter hardware behaviour accordingly.