@@ -13,9 +13,7 @@ script:
1313 - id : update_leds
1414 then :
1515 - lambda : |-
16- auto ams_index = id(ams_number).active_index();
17- auto slot_index = id(slot_number).active_index();
18- for (int i = 0; i < ams_index.value() * slot_index.value(); i++) {
16+ for (int i = 0; i < id(ams_units).state * 4; i++) {
1917 if (i == id(selected_slot)) {
2018 id(set_led_blue).execute(i);
2119 } else {
@@ -43,9 +41,9 @@ script:
4341 uint16_t ams_id = 255; // Default to external AMS
4442 uint16_t tray_id = 254; // Default to external tray
4543
46- if (id(ams_number).active_index().value() > 0) {
47- ams_id = id(ams_number).active_index().value() ;
48- tray_id = id(slot_number).active_index().value() ;
44+ if (id(ams_number).state > 0) {
45+ ams_id = id(ams_number).state - 1 ;
46+ tray_id = id(slot_number).state - 1 ;
4947 }
5048
5149 return bambulabs::generate_mqtt_payload(payload_data, ams_id, tray_id);
@@ -69,66 +67,32 @@ sensor:
6967 on_clockwise :
7068 then :
7169 - lambda : |-
72- if(id(ams_number).state == "0" ) {
73- id(ams_number).publish_state("1" );
74- } else if (id(slot_number).state == "4" ) {
70+ if(id(ams_number).state == 0 ) {
71+ id(ams_number).publish_state(1 );
72+ } else if (id(slot_number).state == 4 ) {
7573 if (id(ams_number).state == id(ams_units).state) {
76- id(ams_number).publish_state("0" );
74+ id(ams_number).publish_state(0 );
7775 } else {
78- auto cur_index = id(ams_number).active_index().value();
79- auto option = id(ams_number).at(cur_index + 1).value();
80- id(ams_number).publish_state(option.c_str());
76+ id(ams_number).publish_state(id(ams_number).state + 1);
8177 }
82- id(slot_number).publish_state("1" );
78+ id(slot_number).publish_state(1 );
8379 } else {
84- // Increment the slot directly using the current state value
85- int current_slot = std::stoi(id(slot_number).state);
86- int next_slot = current_slot + 1;
87- // Make sure it stays in valid range
88- if (next_slot > 4) next_slot = 4;
89- id(slot_number).publish_state(std::to_string(next_slot).c_str());
90-
91- // Debugging output
92- ESP_LOGD("Encoder", "Incrementing slot from %d to %d", current_slot, next_slot);
93- }
94- // Force state and UI update
95- if (id(slot_number).state == "3" || id(slot_number).state == "4") {
96- // This bypasses normal mechanisms to force the UI update
97- id(slot_number).state = id(slot_number).state;
98- id(slot_number).publish_state(id(slot_number).state);
80+ id(slot_number).publish_state(id(slot_number).state + 1);
9981 }
10082 - script.execute : update_leds
10183 on_anticlockwise :
10284 then :
10385 - lambda : |-
104- if (id(ams_number).state == "0") {
105- // If at AMS 0, go to max AMS and max slot
106- id(ams_number).publish_state(id(ams_units).state.c_str());
107- id(slot_number).publish_state("4");
108- } else if (id(slot_number).state == "1") {
109- // If at slot 1, go to previous AMS and max slot
110- auto cur_ams = id(ams_number).state;
111- if (cur_ams == "1") {
112- // If at AMS 1, go to AMS 0
113- id(ams_number).publish_state("0");
114- id(slot_number).publish_state("1");
115- } else {
116- // Otherwise, go to previous AMS and max slot
117- int prev_ams = std::stoi(cur_ams) - 1;
118- id(ams_number).publish_state(std::to_string(prev_ams).c_str());
119- id(slot_number).publish_state("4");
120- }
86+ if(id(ams_number).state == 0) {
87+ id(ams_number).publish_state(id(ams_units).state);
88+ id(slot_number).publish_state(4);
89+ } else if (id(slot_number).state == 1) {
90+ id(ams_number).publish_state(id(ams_number).state - 1);
91+ id(slot_number).publish_state(4);
12192 } else {
122- // Just decrement the slot - but do it directly using the current state value
123- int current_slot = std::stoi(id(slot_number).state);
124- int prev_slot = current_slot - 1;
125- // Make sure it stays in valid range
126- if (prev_slot < 1) prev_slot = 1;
127- id(slot_number).publish_state(std::to_string(prev_slot).c_str());
128-
129- // Debugging output
130- ESP_LOGD("Encoder", "Decrementing slot from %d to %d", current_slot, prev_slot);
93+ id(slot_number).publish_state(id(slot_number).state - 1);
13194 }
95+
13296 - script.execute : update_leds
13397
13498binary_sensor :
0 commit comments