41 lines
7.0 KiB
JSON
41 lines
7.0 KiB
JSON
[
|
|
{
|
|
"id": "'1745383146738'",
|
|
"result": {
|
|
"structured": "TRIGGER: When power demand mw sensor [sensor.power_demand_mw] changes state OR When total power output mw sensor [sensor.total_power_output_mw] changes state. CONDITIONS: power demand mw sensor [sensor.power_demand_mw] is above 0 AND total power output mw sensor [sensor.total_power_output_mw] is above 0. ACTIONS: Set variable 'loop' to the current state of loop input select [input_select.loop]. Set variable 'flow_ratio' to the calculated ratio of secondary to primary coolant flow based on loop-specific sensor states. IF (total power output mw sensor [sensor.total_power_output_mw] is below demand lowerlimit sensor [sensor.demand_lowerlimit] OR total power output mw sensor [sensor.total_power_output_mw] is above demand upperlimit sensor [sensor.demand_upperlimit]) THEN IF (demand delta sensor [sensor.demand_delta] is between -6 and 6 AND ((demand delta sensor [sensor.demand_delta] is positive AND flow_ratio is greater than or equal to 3.0) OR (demand delta sensor [sensor.demand_delta] is negative AND flow_ratio is less than or equal to 4.0))) THEN send a REST command to adjust the primary coolant pump speed by +/- 1% based on the sign of demand delta sensor [sensor.demand_delta], wait for a duration calculated as 3 seconds divided by the value of game sim speed sensor [sensor.game_sim_speed], and create a persistent notification with system status details. OTHERWISE (ELSE) set variable 'target_mscv' to a value between 2 and 40 based on the current Main Steam Control Valve opening and demand delta sensor [sensor.demand_delta], send REST commands to adjust the secondary and primary coolant pump speeds to match the target Main Steam Control Valve flow, IF the current Main Steam Control Valve opening is not equal to 'target_mscv' THEN send a REST command to adjust the Main Steam Control Valve opening by +/- 1%, create a persistent notification with system status details, and wait for a duration calculated as 10 seconds divided by the value of game sim speed sensor [sensor.game_sim_speed]. Finally, wait for 1 second.",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers whenever there is a change in the power demand mw sensor [sensor.power_demand_mw] or the total power output mw sensor [sensor.total_power_output_mw].",
|
|
"conditions": "Both the power demand mw sensor [sensor.power_demand_mw] and the total power output mw sensor [sensor.total_power_output_mw] must have values greater than zero.",
|
|
"action": "First, it determines which cooling loop is active and calculates the current flow ratio between the secondary and primary coolant pumps. If the total power output is outside the defined demand limits, it proceeds to adjust the system. If the power imbalance is small and the flow ratio is within acceptable bounds, it adjusts only the primary pump speed slightly, waits a short, simulation-speed-adjusted period, and sends a detailed status notification. Otherwise, if the imbalance is larger or the flow ratio is out of bounds, it calculates a new target for the main steam control valve, adjusts both the secondary and primary pump speeds to match that target, makes a fine adjustment to the steam valve if needed, sends a different status notification, and waits a longer, simulation-speed-adjusted period. Finally, it always waits one second after the main actions."
|
|
},
|
|
"human_like": "This automation adjusts the nuclear reactor's coolant pumps and steam valve to keep power output within demand limits, choosing different control strategies based on the size of the power imbalance and the current coolant flow ratio.",
|
|
"complexity": "high"
|
|
}
|
|
},
|
|
{
|
|
"id": "'1746027130216'",
|
|
"result": {
|
|
"structured": "TRIGGER: When core state criticality sensor [sensor.core_state_criticality] OR core temp sensor [sensor.core_temp] OR rods pos actual sensor [sensor.rods_pos_actual] changes state and remains stable for 5 seconds. CONDITIONS: core state criticality sensor [sensor.core_state_criticality] is between -5 and 5 (exclusive). ACTIONS: First, set variable tgt_reactivity to the minimum of 2 and a calculated value based on the difference between target core temp input number [input_number.target_core_temp] and core temp sensor [sensor.core_temp]. Then, IF the calculated target rod position (based on rods pos actual sensor [sensor.rods_pos_actual], core state criticality sensor [sensor.core_state_criticality], and tgt_reactivity) is different from the current rods pos actual sensor [sensor.rods_pos_actual] value (rounded to 1 decimal), THEN send a persistent notification with the new target position and call the nucleares webserver set rest command [rest_command.nucleares_webserver_set] to adjust the control rods. Finally, wait for a delay calculated from the absolute difference between core temp sensor [sensor.core_temp] and target core temp input number [input_number.target_core_temp], divided by 10 and the game sim speed sensor [sensor.game_sim_speed], plus 1 second.",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers when any of the following sensors change state and remain stable for 5 seconds: the core state criticality sensor [sensor.core_state_criticality], the core temp sensor [sensor.core_temp], or the rods pos actual sensor [sensor.rods_pos_actual].",
|
|
"conditions": "The core state criticality sensor [sensor.core_state_criticality] must be within a stable range, specifically above -5 and below 5.",
|
|
"action": "First, a variable named tgt_reactivity is calculated based on the difference between the target core temperature and the actual core temperature. Then, if the calculated target rod position differs from the current actual rod position, a notification is sent showing the new target position and a command is sent to the webserver to adjust the control rods. Finally, the automation waits for a dynamically calculated delay before it can run again, where the delay depends on how far the core temperature is from the target and the current simulation speed."
|
|
},
|
|
"human_like": "Automatically adjusts nuclear reactor control rods to maintain the target core temperature, using criticality and temperature feedback, with a dynamic delay between adjustments.",
|
|
"complexity": "high"
|
|
}
|
|
},
|
|
{
|
|
"id": "'1746249037975'",
|
|
"result": {
|
|
"structured": "TRIGGER: When the minute value of time sensor [sensor.time] equals 0 (i.e., at the top of every hour). CONDITIONS: None. ACTIONS: Set timestamp input number [input_number.timestamp] to 10000 AND then set timestamp input number [input_number.timestamp] to 0.",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers at the start of every hour, when the minute value from the time sensor [sensor.time] is exactly 0.",
|
|
"conditions": "There are no conditions that must be met for the action to run.",
|
|
"action": "It sets the timestamp input number [input_number.timestamp] to 10000 and then immediately sets it back to 0."
|
|
},
|
|
"human_like": "Resets a timestamp value at the top of every hour.",
|
|
"complexity": "low"
|
|
}
|
|
}
|
|
] |