A energy guard socket which is by default always on.
A energy guard socket enters a detachable state when its detach logic is enabled and power consuming levels are too high.
A energy guard socket enters an off state when its detach logic is enabled and power consuming levels are too high for too much time.
When power consuming levels lower down it will be on again.
You could have more energy guard sockets. A socket can enable the detach logic of another socket when turning itself off.
This will design a priority level between sockets.
1) When a socket is turned off then it will enable the detach logic of another socket A -> enables -> B -> enables -> C -> enables -> D.
2) When a socket is turned on then it will disable its detach logic by itself.
3) When power consuming levels are high again than will be enabled the detach logic for the lowest priority socket.
enable | consumption | duration | from_state | event | to_state |
---|---|---|---|---|---|
Off | No | Short | socket.energy_guard.state.on | event.enable.Event.On | socket.energy_guard.state.on |
Off | No | Short | socket.energy_guard.state.on | event.enable.Event.Off | socket.energy_guard.state.on |
Off | No | Short | socket.energy_guard.state.on | event.power.consumption.Event.No | socket.energy_guard.state.on |
Off | No | Short | socket.energy_guard.state.on | event.power.consumption.Event.Low | socket.energy_guard.state.on |
Off | No | Short | socket.energy_guard.state.on | event.power.consumption.Event.High | socket.energy_guard.state.on |
Off | No | Short | socket.energy_guard.state.on | event.power.consumption.duration.Event.Short | socket.energy_guard.state.on |
Off | No | Short | socket.energy_guard.state.on | event.power.consumption.duration.Event.Long | socket.energy_guard.state.on |
Off | Low | Short | socket.energy_guard.state.on | event.enable.Event.On | socket.energy_guard.state.on |
Off | Low | Short | socket.energy_guard.state.on | event.enable.Event.Off | socket.energy_guard.state.on |
Off | Low | Short | socket.energy_guard.state.on | event.power.consumption.Event.No | socket.energy_guard.state.on |
Off | Low | Short | socket.energy_guard.state.on | event.power.consumption.Event.Low | socket.energy_guard.state.on |
Off | Low | Short | socket.energy_guard.state.on | event.power.consumption.Event.High | socket.energy_guard.state.on |
Off | Low | Short | socket.energy_guard.state.on | event.power.consumption.duration.Event.Short | socket.energy_guard.state.on |
Off | Low | Short | socket.energy_guard.state.on | event.power.consumption.duration.Event.Long | socket.energy_guard.state.on |
Off | High | Short | socket.energy_guard.state.on | event.enable.Event.On | socket.energy_guard.state.detachable |
Off | High | Short | socket.energy_guard.state.on | event.enable.Event.Off | socket.energy_guard.state.on |
Off | High | Short | socket.energy_guard.state.on | event.power.consumption.Event.No | socket.energy_guard.state.on |
Off | High | Short | socket.energy_guard.state.on | event.power.consumption.Event.Low | socket.energy_guard.state.on |
Off | High | Short | socket.energy_guard.state.on | event.power.consumption.Event.High | socket.energy_guard.state.on |
Off | High | Short | socket.energy_guard.state.on | event.power.consumption.duration.Event.Short | socket.energy_guard.state.on |
Off | High | Short | socket.energy_guard.state.on | event.power.consumption.duration.Event.Long | socket.energy_guard.state.on |
On | No | Short | socket.energy_guard.state.on | event.enable.Event.On | socket.energy_guard.state.on |
On | No | Short | socket.energy_guard.state.on | event.enable.Event.Off | socket.energy_guard.state.on |
On | No | Short | socket.energy_guard.state.on | event.power.consumption.Event.No | socket.energy_guard.state.on |
On | No | Short | socket.energy_guard.state.on | event.power.consumption.Event.Low | socket.energy_guard.state.on |
On | No | Short | socket.energy_guard.state.on | event.power.consumption.Event.High | socket.energy_guard.state.detachable |
On | No | Short | socket.energy_guard.state.on | event.power.consumption.duration.Event.Short | socket.energy_guard.state.on |
On | No | Short | socket.energy_guard.state.on | event.power.consumption.duration.Event.Long | socket.energy_guard.state.on |
On | Low | Short | socket.energy_guard.state.on | event.enable.Event.On | socket.energy_guard.state.on |
On | Low | Short | socket.energy_guard.state.on | event.enable.Event.Off | socket.energy_guard.state.on |
On | Low | Short | socket.energy_guard.state.on | event.power.consumption.Event.No | socket.energy_guard.state.on |
On | Low | Short | socket.energy_guard.state.on | event.power.consumption.Event.Low | socket.energy_guard.state.on |
On | Low | Short | socket.energy_guard.state.on | event.power.consumption.Event.High | socket.energy_guard.state.detachable |
On | Low | Short | socket.energy_guard.state.on | event.power.consumption.duration.Event.Short | socket.energy_guard.state.on |
On | Low | Short | socket.energy_guard.state.on | event.power.consumption.duration.Event.Long | socket.energy_guard.state.on |
On | High | Short | socket.energy_guard.state.detachable | event.enable.Event.On | socket.energy_guard.state.detachable |
On | High | Short | socket.energy_guard.state.detachable | event.enable.Event.Off | socket.energy_guard.state.on |
On | High | Short | socket.energy_guard.state.detachable | event.power.consumption.Event.No | socket.energy_guard.state.on |
On | High | Short | socket.energy_guard.state.detachable | event.power.consumption.Event.Low | socket.energy_guard.state.on |
On | High | Short | socket.energy_guard.state.detachable | event.power.consumption.Event.High | socket.energy_guard.state.detachable |
On | High | Short | socket.energy_guard.state.detachable | event.power.consumption.duration.Event.Short | socket.energy_guard.state.detachable |
On | High | Short | socket.energy_guard.state.detachable | event.power.consumption.duration.Event.Long | socket.energy_guard.state.off |
Off | No | Long | socket.energy_guard.state.on | event.enable.Event.On | socket.energy_guard.state.on |
Off | No | Long | socket.energy_guard.state.on | event.enable.Event.Off | socket.energy_guard.state.on |
Off | No | Long | socket.energy_guard.state.on | event.power.consumption.Event.No | socket.energy_guard.state.on |
Off | No | Long | socket.energy_guard.state.on | event.power.consumption.Event.Low | socket.energy_guard.state.on |
Off | No | Long | socket.energy_guard.state.on | event.power.consumption.Event.High | socket.energy_guard.state.on |
Off | No | Long | socket.energy_guard.state.on | event.power.consumption.duration.Event.Short | socket.energy_guard.state.on |
Off | No | Long | socket.energy_guard.state.on | event.power.consumption.duration.Event.Long | socket.energy_guard.state.on |
Off | Low | Long | socket.energy_guard.state.on | event.enable.Event.On | socket.energy_guard.state.on |
Off | Low | Long | socket.energy_guard.state.on | event.enable.Event.Off | socket.energy_guard.state.on |
Off | Low | Long | socket.energy_guard.state.on | event.power.consumption.Event.No | socket.energy_guard.state.on |
Off | Low | Long | socket.energy_guard.state.on | event.power.consumption.Event.Low | socket.energy_guard.state.on |
Off | Low | Long | socket.energy_guard.state.on | event.power.consumption.Event.High | socket.energy_guard.state.on |
Off | Low | Long | socket.energy_guard.state.on | event.power.consumption.duration.Event.Short | socket.energy_guard.state.on |
Off | Low | Long | socket.energy_guard.state.on | event.power.consumption.duration.Event.Long | socket.energy_guard.state.on |
Off | High | Long | socket.energy_guard.state.on | event.enable.Event.On | socket.energy_guard.state.detachable |
Off | High | Long | socket.energy_guard.state.on | event.enable.Event.Off | socket.energy_guard.state.on |
Off | High | Long | socket.energy_guard.state.on | event.power.consumption.Event.No | socket.energy_guard.state.on |
Off | High | Long | socket.energy_guard.state.on | event.power.consumption.Event.Low | socket.energy_guard.state.on |
Off | High | Long | socket.energy_guard.state.on | event.power.consumption.Event.High | socket.energy_guard.state.on |
Off | High | Long | socket.energy_guard.state.on | event.power.consumption.duration.Event.Short | socket.energy_guard.state.on |
Off | High | Long | socket.energy_guard.state.on | event.power.consumption.duration.Event.Long | socket.energy_guard.state.on |
On | No | Long | socket.energy_guard.state.on | event.enable.Event.On | socket.energy_guard.state.on |
On | No | Long | socket.energy_guard.state.on | event.enable.Event.Off | socket.energy_guard.state.on |
On | No | Long | socket.energy_guard.state.on | event.power.consumption.Event.No | socket.energy_guard.state.on |
On | No | Long | socket.energy_guard.state.on | event.power.consumption.Event.Low | socket.energy_guard.state.on |
On | No | Long | socket.energy_guard.state.on | event.power.consumption.Event.High | socket.energy_guard.state.detachable |
On | No | Long | socket.energy_guard.state.on | event.power.consumption.duration.Event.Short | socket.energy_guard.state.on |
On | No | Long | socket.energy_guard.state.on | event.power.consumption.duration.Event.Long | socket.energy_guard.state.on |
On | Low | Long | socket.energy_guard.state.on | event.enable.Event.On | socket.energy_guard.state.on |
On | Low | Long | socket.energy_guard.state.on | event.enable.Event.Off | socket.energy_guard.state.on |
On | Low | Long | socket.energy_guard.state.on | event.power.consumption.Event.No | socket.energy_guard.state.on |
On | Low | Long | socket.energy_guard.state.on | event.power.consumption.Event.Low | socket.energy_guard.state.on |
On | Low | Long | socket.energy_guard.state.on | event.power.consumption.Event.High | socket.energy_guard.state.detachable |
On | Low | Long | socket.energy_guard.state.on | event.power.consumption.duration.Event.Short | socket.energy_guard.state.on |
On | Low | Long | socket.energy_guard.state.on | event.power.consumption.duration.Event.Long | socket.energy_guard.state.on |
On | High | Long | socket.energy_guard.state.off | event.enable.Event.On | socket.energy_guard.state.off |
On | High | Long | socket.energy_guard.state.off | event.enable.Event.Off | socket.energy_guard.state.off |
On | High | Long | socket.energy_guard.state.off | event.power.consumption.Event.No | socket.energy_guard.state.on |
On | High | Long | socket.energy_guard.state.off | event.power.consumption.Event.Low | socket.energy_guard.state.on |
On | High | Long | socket.energy_guard.state.off | event.power.consumption.Event.High | socket.energy_guard.state.off |
On | High | Long | socket.energy_guard.state.off | event.power.consumption.duration.Event.Short | socket.energy_guard.state.off |
On | High | Long | socket.energy_guard.state.off | event.power.consumption.duration.Event.Long | socket.energy_guard.state.off |
enable | consumption | duration | from_state | event | to_state |
---|---|---|---|---|---|
Off | No | Short | socket.energy_guard.state.on | appliance.socket.event.forced.Event.Off | socket.energy_guard.state.forced.off |
Off | No | Short | socket.energy_guard.state.on | appliance.socket.event.forced.Event.On | socket.energy_guard.state.on |
On | High | Short | socket.energy_guard.state.detachable | appliance.socket.event.forced.Event.Off | socket.energy_guard.state.forced.off |
On | High | Short | socket.energy_guard.state.detachable | appliance.socket.event.forced.Event.On | socket.energy_guard.state.forced.on |
On | High | Long | socket.energy_guard.state.off | appliance.socket.event.forced.Event.Off | socket.energy_guard.state.off |
On | High | Long | socket.energy_guard.state.off | appliance.socket.event.forced.Event.On | socket.energy_guard.state.forced.on |
enable | consumption | duration | from_state | event | to_state |
---|---|---|---|---|---|
Off | No | Short | socket.energy_guard.state.on | appliance.socket.event.forced.Event.Off | socket.energy_guard.state.forced.off |
Off | No | Short | socket.energy_guard.state.on | appliance.socket.event.forced.Event.On | socket.energy_guard.state.on |
On | High | Short | socket.energy_guard.state.forced.on | appliance.socket.event.forced.Event.Off | socket.energy_guard.state.detachable |
On | High | Short | socket.energy_guard.state.forced.on | appliance.socket.event.forced.Event.On | socket.energy_guard.state.forced.on |
On | High | Long | socket.energy_guard.state.forced.on | appliance.socket.event.forced.Event.Off | socket.energy_guard.state.off |
On | High | Long | socket.energy_guard.state.forced.on | appliance.socket.event.forced.Event.On | socket.energy_guard.state.forced.on |
enable | consumption | duration | from_state | event | to_state |
---|---|---|---|---|---|
Off | No | Short | socket.energy_guard.state.forced.off | appliance.socket.event.forced.Event.Off | socket.energy_guard.state.forced.off |
Off | No | Short | socket.energy_guard.state.forced.off | appliance.socket.event.forced.Event.On | socket.energy_guard.state.on |
On | High | Short | socket.energy_guard.state.forced.off | appliance.socket.event.forced.Event.Off | socket.energy_guard.state.forced.off |
On | High | Short | socket.energy_guard.state.forced.off | appliance.socket.event.forced.Event.On | socket.energy_guard.state.detachable |
On | High | Long | socket.energy_guard.state.off | appliance.socket.event.forced.Event.Off | socket.energy_guard.state.off |
On | High | Long | socket.energy_guard.state.off | appliance.socket.event.forced.Event.On | socket.energy_guard.state.forced.on |
Scenario Outline: The Socket could be automatically un-forced from a forced off state by enable events and not by power.consumption events
enable | consumption | duration | from_state | event | to_state |
---|---|---|---|---|---|
Off | High | Long | socket.energy_guard.state.forced.off | event.enable.Event.On | socket.energy_guard.state.off |
On | Low | Long | socket.energy_guard.state.forced.off | event.power.consumption.Event.High | socket.energy_guard.state.forced.off |
On | High | Short | socket.energy_guard.state.forced.off | event.power.consumption.duration.Event.Long | socket.energy_guard.state.forced.off |
Scenario Outline: The Socket could be automatically un-forced from a forced on state by enable events and not by power.consumption events
enable | consumption | duration | from_state | event | to_state |
---|---|---|---|---|---|
On | High | Long | socket.energy_guard.state.forced.on | event.enable.Event.Off | socket.energy_guard.state.on |
On | High | Long | socket.energy_guard.state.forced.on | event.power.consumption.Event.High | socket.energy_guard.state.forced.on |
On | High | Long | socket.energy_guard.state.forced.on | event.power.consumption.duration.Event.Long | socket.energy_guard.state.forced.on |
enable | consumption | duration | forced | state | response |
---|---|---|---|---|---|
Off | No | Short | Not | socket.energy_guard.state.on | True |
Off | No | Short | Off | socket.energy_guard.state.forced.off | False |
On | High | Short | Not | socket.energy_guard.state.detachable | True |
On | High | Long | Not | socket.energy_guard.state.off | False |
On | High | Long | On | socket.energy_guard.state.forced.on | True |
enable | consumption | duration | forced | state | response |
---|---|---|---|---|---|
Off | No | Short | Not | socket.energy_guard.state.on | False |
Off | No | Short | Off | socket.energy_guard.state.forced.off | False |
On | High | Short | Not | socket.energy_guard.state.detachable | True |
On | High | Long | Not | socket.energy_guard.state.off | False |
On | High | Long | On | socket.energy_guard.state.forced.on | False |