@@ -737,8 +737,8 @@ static const char CONFIG_GENERATOR_HTML[] PROGMEM = R"HTML(
737737 <div class="collapsible-section alarm-section">
738738 <h4 style="margin: 16px 0 8px; font-size: 0.95rem; border-top: 1px solid var(--card-border); padding-top: 12px;">Alarm Thresholds <button type="button" class="remove-btn" onclick="removeAlarmSection(${id})" style="float: right;">Remove Alarm</button></h4>
739739 <div class="form-grid">
740- <label class="field"><span>High Alarm</span><input type="number" class="high-alarm" value="100"></label>
741- <label class="field"><span>Low Alarm</span><input type="number" class="low-alarm" value="20"></label>
740+ <label class="field"><span><label style="display: flex; align-items: center; gap: 6px;"><input type="checkbox" class="high-alarm-enabled" checked> High Alarm</label> </span><input type="number" class="high-alarm" value="100"></label>
741+ <label class="field"><span><label style="display: flex; align-items: center; gap: 6px;"><input type="checkbox" class="low-alarm-enabled" checked> Low Alarm</label> </span><input type="number" class="low-alarm" value="20"></label>
742742 </div>
743743 </div>
744744
@@ -805,6 +805,8 @@ static const char CONFIG_GENERATOR_HTML[] PROGMEM = R"HTML(
805805 // Reset alarm values to defaults
806806 card.querySelector('.high-alarm').value = '100';
807807 card.querySelector('.low-alarm').value = '20';
808+ card.querySelector('.high-alarm-enabled').checked = true;
809+ card.querySelector('.low-alarm-enabled').checked = true;
808810 };
809811
810812 window.toggleRelaySection = function(id) {
@@ -946,6 +948,8 @@ static const char CONFIG_GENERATOR_HTML[] PROGMEM = R"HTML(
946948
947949 // Check if alarm section is enabled
948950 const alarmSectionVisible = card.querySelector('.alarm-section').classList.contains('visible');
951+ const highAlarmEnabled = card.querySelector('.high-alarm-enabled').checked;
952+ const lowAlarmEnabled = card.querySelector('.low-alarm-enabled').checked;
949953 const highAlarmValue = card.querySelector('.high-alarm').value;
950954 const lowAlarmValue = card.querySelector('.low-alarm').value;
951955
@@ -964,10 +968,14 @@ static const char CONFIG_GENERATOR_HTML[] PROGMEM = R"HTML(
964968 upload: true
965969 };
966970
967- // Only include alarm values if alarm section is visible and values are set
968- if (alarmSectionVisible && (highAlarmValue || lowAlarmValue)) {
969- tank.highAlarm = parseFloat(highAlarmValue) || 100;
970- tank.lowAlarm = parseFloat(lowAlarmValue) || 20;
971+ // Only include alarm values if alarm section is visible and individual alarms are enabled
972+ if (alarmSectionVisible && (highAlarmEnabled || lowAlarmEnabled)) {
973+ if (highAlarmEnabled && highAlarmValue) {
974+ tank.highAlarm = parseFloat(highAlarmValue) || 100;
975+ }
976+ if (lowAlarmEnabled && lowAlarmValue) {
977+ tank.lowAlarm = parseFloat(lowAlarmValue) || 20;
978+ }
971979 tank.alarmSms = true;
972980 } else {
973981 // No alarm configured - disable SMS alerts
0 commit comments