{ transitions: [ { key: 'start', descr: "From 'INIT' to 'IDLE' when 'true'", }, { key: 'got_hot', descr: "From 'IDLE,COLD' to 'HOT' when 'is_hot'", }, { key: 'got_hot_too_long', descr: "From 'HOT' to 'ERROR' when 'is_hot_too_long'", }, { key: 'got_cold', descr: "From 'IDLE,HOT' to 'COLD' when 'is_cold'", }, { key: 'button_pressed_init', descr: "From '*' to 'INIT' when 'buttoni'", }, ], states: [ { key: 'INIT', descr: 'Initial State', }, { key: 'IDLE', descr: 'Idle State, not cold nor hot yet', }, { key: 'HOT', descr: 'Hotter state', }, { key: 'COLD', descr: 'Colder state', }, { key: 'ERROR', descr: 'ERROR', }, ], variables: [ { key: 'tick', domain: 'private', }, { key: 'state_tick', domain: 'timers', }, { key: 'event', domain: 'private', }, { key: 'optimal_temp', domain: 'params', descr: 'Optimal External Temperature', }, { key: 'temp_hysteresis', domain: 'params', descr: 'External Temperature Hysteresis', }, { key: 'hot_tick_max', domain: 'params', descr: 'Maximum allowed time hot', }, { key: 'ext_t', domain: 'input', descr: 'External Temperature', }, { key: 'entropy', domain: 'private', descr: 'Internal Entropy', }, { key: 'relay', domain: 'output', descr: 'Relay Control', }, { key: 'hot_tick', domain: 'timers', descr: 'Counts seconds we are hot', }, { key: 'BUTTON__duration', domain: 'private', descr: 'Duration of button pressure', }, { key: 'BUTTON2__duration', domain: 'private', descr: 'Duration of button pressure', }, { key: 'is_hot', domain: 'funcs', }, { key: 'is_cold', domain: 'funcs', }, { key: 'hot_sum', domain: 'funcs', }, { key: 'is_hot_too_long', domain: 'funcs', }, { key: 'buttoni', domain: 'funcs', }, ], events: { '240': { key: 'BUTTON', descr: 'Button is pressed', }, '241': { key: 'BUTTON2', descr: 'Button is pressed', }, }, }