diff --git a/components/genvexv2/optima250.yaml b/components/genvexv2/optima250.yaml index fb9b4514..6a3a96ba 100644 --- a/components/genvexv2/optima250.yaml +++ b/components/genvexv2/optima250.yaml @@ -191,146 +191,15 @@ text_sensor: - platform: modbus_controller modbus_controller_id: genvex_modbus_controller - name: "Genvex Alarm" - id: genvex_alarm + name: "Genvex Alarm Bitfield" + id: genvex_alarm_bitfield + # device_class: None register_type: read address: 101 - lambda: !lambda |- + lambda: |- uint16_t int_mode = (data[item->offset] << 8) + data[item->offset+1]; ESP_LOGD("main","Parsed operation mode int : %d", int_mode); - std::string mode_str; - switch (int_mode) { - case 0: mode_str = "Off"; break; - case 1: mode_str = "External Stop"; break; - case 2: mode_str = "Main Filter"; break; - case 3: mode_str = "External Stop & Main Filter"; break; - case 4: mode_str = "High Pressure"; break; - case 5: mode_str = "High Pressure & External Stop"; break; - case 6: mode_str = "High Pressure & Main Filter"; break; - case 7: mode_str = "High Pressure & External Stop & Main Filter"; break; - case 8: mode_str = "Frost"; break; - case 9: mode_str = "Frost & External Stop"; break; - case 10: mode_str = "Frost & Main Filter"; break; - case 11: mode_str = "Frost & External Stop & Main Filter"; break; - case 12: mode_str = "Frost & High Pressure"; break; - case 13: mode_str = "Frost & High Pressure & External Stop"; break; - case 14: mode_str = "Frost & High Pressure & Main Filter"; break; - case 15: mode_str = "Frost & High Pressure & Main Filter & External Stop"; break; - case 16: mode_str = "CommError Panel->Controller"; break; - case 17: mode_str = "CommError Panel->Controller & External Stop"; break; - case 18: mode_str = "CommError Panel->Controller & Main Filter"; break; - case 19: mode_str = "CommError Panel->Controller & External Stop & Main Filter"; break; - case 20: mode_str = "CommError Panel->Controller & High Pressure"; break; - case 21: mode_str = "CommError Panel->Controller & High Pressure & External Stop"; break; - case 22: mode_str = "CommError Panel->Controller & High Pressure & Main Filter"; break; - case 23: mode_str = "CommError Panel->Controller & High Pressure & External Stop & Main Filter"; break; - case 24: mode_str = "CommError Panel->Controller & Frost"; break; - case 25: mode_str = "CommError Panel->Controller & Frost & External Stop"; break; - case 26: mode_str = "CommError Panel->Controller & Frost & Main Filter"; break; - case 27: mode_str = "CommError Panel->Controller & Frost & External Stop & Main Filter"; break; - case 28: mode_str = "CommError Panel->Controller & Frost & High Pressure"; break; - case 29: mode_str = "CommError Panel->Controller & Frost & High Pressure & External Stop"; break; - case 30: mode_str = "CommError Panel->Controller & Frost & High Pressure & Main Filter"; break; - case 31: mode_str = "CommError Panel->Controller & Frost & High Pressure & External Stop & Main Filter"; break; - case 32: mode_str = "External Filter"; break; - case 33: mode_str = "External Filter & External Stop"; break; - case 34: mode_str = "External Filter & Main Filter"; break; - case 35: mode_str = "External Filter & External Stop & Main Filter"; break; - case 36: mode_str = "External Filter & High Pressure"; break; - case 37: mode_str = "External Filter & High Pressure & External Stop"; break; - case 38: mode_str = "External Filter & High Pressure & Main Filter"; break; - case 39: mode_str = "External Filter & High Pressure & External Stop & Main Filter"; break; - case 40: mode_str = "External Filter & Frost"; break; - case 41: mode_str = "External Filter & Frost & External Stop"; break; - case 42: mode_str = "External Filter & Frost & Main Filter"; break; - case 43: mode_str = "External Filter & Frost & External Stop & Main Filter"; break; - case 44: mode_str = "External Filter & Frost & High Pressure"; break; - case 45: mode_str = "External Filter & Frost & High Pressure & External Stop"; break; - case 46: mode_str = "External Filter & Frost & High Pressure & Main Filter"; break; - case 47: mode_str = "External Filter & Frost & High Pressure & External Stop & Main Filter"; break; - case 48: mode_str = "External Filter & CommError Panel->Controller"; break; - case 49: mode_str = "External Filter & CommError Panel->Controller & External Stop"; break; - case 50: mode_str = "External Filter & CommError Panel->Controller & Main Filter"; break; - case 51: mode_str = "External Filter & CommError Panel->Controller & External Stop & Main Filter"; break; - case 52: mode_str = "External Filter & CommError Panel->Controller & High Pressure"; break; - case 53: mode_str = "External Filter & CommError Panel->Controller & High Pressure & External Stop"; break; - case 54: mode_str = "External Filter & CommError Panel->Controller & High Pressure & Main Filter"; break; - case 55: mode_str = "External Filter & CommError Panel->Controller & High Pressure & External Stop & Main Filter"; break; - case 56: mode_str = "External Filter & CommError Panel->Controller & Frost"; break; - case 57: mode_str = "External Filter & CommError Panel->Controller & Frost & External Stop"; break; - case 58: mode_str = "External Filter & CommError Panel->Controller & Frost & Main Filter"; break; - case 59: mode_str = "External Filter & CommError Panel->Controller & Frost & External Stop & Main Filter"; break; - case 60: mode_str = "External Filter & CommError Panel->Controller & Frost & High Pressure"; break; - case 61: mode_str = "External Filter & CommError Panel->Controller & Frost & High Pressure & External Stop"; break; - case 62: mode_str = "External Filter & CommError Panel->Controller & Frost & High Pressure & Main Filter"; break; - case 63: mode_str = "External Filter & CommError Panel->Controller & Frost & High Pressure & External Stop & Main Filter"; break; - case 64: mode_str = "Fan Speed"; break; - case 65: mode_str = "Fan Speed & External Stop"; break; - case 66: mode_str = "Fan Speed & Main Filter"; break; - case 67: mode_str = "Fan Speed & External Stop & Main Filter"; break; - case 68: mode_str = "Fan Speed & High Pressure"; break; - case 69: mode_str = "Fan Speed & High Pressure & External Stop"; break; - case 70: mode_str = "Fan Speed & High Pressure & Main Filter"; break; - case 71: mode_str = "Fan Speed & High Pressure & External Stop & Main Filter"; break; - case 72: mode_str = "Fan Speed & Frost"; break; - case 73: mode_str = "Fan Speed & Frost & External Stop"; break; - case 74: mode_str = "Fan Speed & Frost & Main Filter"; break; - case 75: mode_str = "Fan Speed & Frost & External Stop & Main Filter"; break; - case 76: mode_str = "Fan Speed & Frost & High Pressure"; break; - case 77: mode_str = "Fan Speed & Frost & High Pressure & External Stop"; break; - case 78: mode_str = "Fan Speed & Frost & High Pressure & Main Filter"; break; - case 79: mode_str = "Fan Speed & Frost & High Pressure & External Stop & Main Filter"; break; - case 80: mode_str = "Fan Speed & CommError Panel->Controller"; break; - case 81: mode_str = "Fan Speed & CommError Panel->Controller & External Stop"; break; - case 82: mode_str = "Fan Speed & CommError Panel->Controller & Main Filter"; break; - case 83: mode_str = "Fan Speed & CommError Panel->Controller & External Stop & Main Filter"; break; - case 84: mode_str = "Fan Speed & CommError Panel->Controller & High Pressure"; break; - case 85: mode_str = "Fan Speed & CommError Panel->Controller & High Pressure & External Stop"; break; - case 86: mode_str = "Fan Speed & CommError Panel->Controller & High Pressure & Main Filter"; break; - case 87: mode_str = "Fan Speed & CommError Panel->Controller & High Pressure & External Stop & Main Filter"; break; - case 88: mode_str = "Fan Speed & CommError Panel->Controller & Frost"; break; - case 89: mode_str = "Fan Speed & CommError Panel->Controller & Frost & External Stop"; break; - case 90: mode_str = "Fan Speed & CommError Panel->Controller & Frost & Main Filter"; break; - case 91: mode_str = "Fan Speed & CommError Panel->Controller & Frost & External Stop & Main Filter"; break; - case 92: mode_str = "Fan Speed & CommError Panel->Controller & Frost & High Pressure"; break; - case 93: mode_str = "Fan Speed & CommError Panel->Controller & Frost & High Pressure & External Stop"; break; - case 94: mode_str = "Fan Speed & CommError Panel->Controller & Frost & High Pressure & Main Filter"; break; - case 95: mode_str = "Fan Speed & CommError Panel->Controller & Frost & High Pressure & External Stop & Main Filter"; break; - case 96: mode_str = "Fan Speed & External Filter"; break; - case 97: mode_str = "Fan Speed & External Filter & External Stop"; break; - case 98: mode_str = "Fan Speed & External Filter & Main Filter"; break; - case 99: mode_str = "Fan Speed & External Filter & External Stop & Main Filter"; break; - case 100: mode_str = "Fan Speed & External Filter & High Pressure"; break; - case 101: mode_str = "Fan Speed & External Filter & High Pressure & External Stop"; break; - case 102: mode_str = "Fan Speed & External Filter & High Pressure & Main Filter"; break; - case 103: mode_str = "Fan Speed & External Filter & High Pressure & External Stop & Main Filter"; break; - case 104: mode_str = "Fan Speed & External Filter & Frost"; break; - case 105: mode_str = "Fan Speed & External Filter & Frost & External Stop"; break; - case 106: mode_str = "Fan Speed & External Filter & Frost & Main Filter"; break; - case 107: mode_str = "Fan Speed & External Filter & Frost & External Stop & Main Filter"; break; - case 108: mode_str = "Fan Speed & External Filter & Frost & High Pressure"; break; - case 109: mode_str = "Fan Speed & External Filter & Frost & High Pressure & External Stop"; break; - case 110: mode_str = "Fan Speed & External Filter & Frost & High Pressure & Main Filter"; break; - case 111: mode_str = "Fan Speed & External Filter & Frost & High Pressure & External Stop & Main Filter"; break; - case 112: mode_str = "Fan Speed & External Filter & CommError Panel->Controller"; break; - case 113: mode_str = "Fan Speed & External Filter & CommError Panel->Controller & External Stop"; break; - case 114: mode_str = "Fan Speed & External Filter & CommError Panel->Controller & Main Filter"; break; - case 115: mode_str = "Fan Speed & External Filter & CommError Panel->Controller & External Stop & Main Filter"; break; - case 116: mode_str = "Fan Speed & External Filter & CommError Panel->Controller & High Pressure"; break; - case 117: mode_str = "Fan Speed & External Filter & CommError Panel->Controller & High Pressure & External Stop"; break; - case 118: mode_str = "Fan Speed & External Filter & CommError Panel->Controller & High Pressure & Main Filter"; break; - case 119: mode_str = "Fan Speed & External Filter & CommError Panel->Controller & High Pressure & External Stop & Main Filter"; break; - case 120: mode_str = "Fan Speed & External Filter & CommError Panel->Controller & Frost"; break; - case 121: mode_str = "Fan Speed & External Filter & CommError Panel->Controller & Frost & External Stop"; break; - case 122: mode_str = "Fan Speed & External Filter & CommError Panel->Controller & Frost & Main Filter"; break; - case 123: mode_str = "Fan Speed & External Filter & CommError Panel->Controller & Frost & External Stop & Main Filter"; break; - case 124: mode_str = "Fan Speed & External Filter & CommError Panel->Controller & Frost & High Pressure"; break; - case 125: mode_str = "Fan Speed & External Filter & CommError Panel->Controller & Frost & High Pressure & External Stop"; break; - case 126: mode_str = "Fan Speed & External Filter & CommError Panel->Controller & Frost & High Pressure & Main Filter"; break; - case 127: mode_str = "Fan Speed & External Filter & CommError Panel->Controller & Frost & High Pressure & External Stop & Main Filter"; break; - default: mode_str = "Unknown"; break; - } - return mode_str; + return std::to_string(int_mode); number: - platform: modbus_controller @@ -371,6 +240,48 @@ binary_sensor: register_type: holding address: 1 + - platform: template + name: "Water Freeze Error" + lambda: |- + uint16_t alarmcode = strtoul(id(genvex_alarm_bitfield).state.c_str(), nullptr, 10); + bool bActive = alarmcode & 0x0010; + return bActive; + + - platform: template + name: "Hygrostat" + lambda: |- + uint16_t alarmcode = strtoul(id(genvex_alarm_bitfield).state.c_str(), nullptr, 10); + bool bActive = alarmcode & 0x0040; + return bActive; + + - platform: template + name: "Reset Filter" + lambda: |- + uint16_t alarmcode = strtoul(id(genvex_alarm_bitfield).state.c_str(), nullptr, 10); + bool bActive = alarmcode & 0x0080; + return bActive; + + - platform: template + name: "Operation" + lambda: |- + uint16_t alarmcode = strtoul(id(genvex_alarm_bitfield).state.c_str(), nullptr, 10); + bool bActive = alarmcode & 0x1000; + return bActive; + + - platform: template + name: "Electric post-heating" + lambda: |- + uint16_t alarmcode = strtoul(id(genvex_alarm_bitfield).state.c_str(), nullptr, 10); + bool bActive = alarmcode & 0x2000; + return bActive; + + - platform: template + name: "Extra cooling" + lambda: |- + uint16_t alarmcode = strtoul(id(genvex_alarm_bitfield).state.c_str(), nullptr, 10); + bool bActive = alarmcode & 0x4000; + return bActive; + - platform: status name: "Genvex Controller Status"