Skip to content

Commit

Permalink
Bump to version 5 and add a bunch more sensors
Browse files Browse the repository at this point in the history
  • Loading branch information
starsoccer committed Jan 27, 2024
1 parent 012a6e8 commit 854bd26
Show file tree
Hide file tree
Showing 5 changed files with 119 additions and 3 deletions.
2 changes: 1 addition & 1 deletion energysmartbridge/config.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: "Energy Smart Bridge"
description: "Energy Smart Bridge"
version: "0.0.4"
version: "0.0.5"
slug: "energy_smart_bridge"
image: "ghcr.io/starsoccer/energysmartbridge/{arch}"
init: false
Expand Down
77 changes: 77 additions & 0 deletions energysmartbridge/src/MQTT/MappingExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -176,5 +176,82 @@ public static BinarySensor ToTankSensorFailConfig(this WaterHeaterInput waterHea
};
return ret;
}

public static BinarySensor ToEcoErrorConfig(this WaterHeaterInput waterHeater)
{
BinarySensor ret = new BinarySensor
{
name = waterHeater.GetDisplayName() + " Eco Error",
state_topic = waterHeater.ToTopic(Topic.tanksensorfail_state),
unique_id = waterHeater.DeviceText + "_eco_error",
};
return ret;
}

public static Sensor ToLeakConfig(this WaterHeaterInput waterHeater)
{
Sensor ret = new Sensor
{
name = waterHeater.GetDisplayName() + " Leak",
state_topic = waterHeater.ToTopic(Topic.leak_state),
unique_id = waterHeater.DeviceText + "_leak",
};
return ret;
}

public static Sensor ToMasterDispFailConfig(this WaterHeaterInput waterHeater)
{
Sensor ret = new Sensor
{
name = waterHeater.GetDisplayName() + " Master Disp Fail",
state_topic = waterHeater.ToTopic(Topic.master_disp_fail_state),
unique_id = waterHeater.DeviceText + "_master_disp_fail",
};
return ret;
}

public static Sensor ToCompSensorFailConfig(this WaterHeaterInput waterHeater)
{
Sensor ret = new Sensor
{
name = waterHeater.GetDisplayName() + " Comp Sensor Fail",
state_topic = waterHeater.ToTopic(Topic.comp_sensor_fail_state),
unique_id = waterHeater.DeviceText + "_comp_sensor_fail",
};
return ret;
}

public static Sensor ToSysSensorFailConfig(this WaterHeaterInput waterHeater)
{
Sensor ret = new Sensor
{
name = waterHeater.GetDisplayName() + " Sys Sensor Fail",
state_topic = waterHeater.ToTopic(Topic.sys_sensor_fail_state),
unique_id = waterHeater.DeviceText + "_sys_sensor_fail",
};
return ret;
}

public static Sensor ToSystemFailConfig(this WaterHeaterInput waterHeater)
{
Sensor ret = new Sensor
{
name = waterHeater.GetDisplayName() + " System Fail",
state_topic = waterHeater.ToTopic(Topic.system_fail_state),
unique_id = waterHeater.DeviceText + "_system_fail",
};
return ret;
}

public static Sensor ToFaultCodesConfig(this WaterHeaterInput waterHeater)
{
Sensor ret = new Sensor
{
name = waterHeater.GetDisplayName() + " Fault Codes",
state_topic = waterHeater.ToTopic(Topic.fault_codes_state),
unique_id = waterHeater.DeviceText + "_fault_codes",
};
return ret;
}
}
}
7 changes: 7 additions & 0 deletions energysmartbridge/src/MQTT/Topic.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,12 @@ public enum Topic
air_filter_status_state,
condense_pump_fail_state,
leak_detect_state,
leak_state,
eco_error_state,
master_disp_fail_state,
comp_sensor_fail_state,
sys_sensor_fail_state,
system_fail_state,
fault_codes_state,
}
}
31 changes: 30 additions & 1 deletion energysmartbridge/src/Modules/MQTTModule.cs
Original file line number Diff line number Diff line change
Expand Up @@ -231,6 +231,9 @@ private void PublishWaterHeater(WaterHeaterInput waterHeater)
PublishAsync($"{Global.mqtt_discovery_prefix}/binary_sensor/{waterHeater.DeviceText}/leakdetect/config",
JsonConvert.SerializeObject(waterHeater.ToLeakDetectConfig()));

PublishAsync($"{Global.mqtt_discovery_prefix}/binary_sensor/{waterHeater.DeviceText}/ecoerror/config",
JsonConvert.SerializeObject(waterHeater.ToEcoErrorConfig()));

PublishAsync($"{Global.mqtt_discovery_prefix}/sensor/{waterHeater.DeviceText}/rawmode/config",
JsonConvert.SerializeObject(waterHeater.ToRawModeConfig()));

Expand All @@ -251,6 +254,24 @@ private void PublishWaterHeater(WaterHeaterInput waterHeater)

PublishAsync($"{Global.mqtt_discovery_prefix}/sensor/{waterHeater.DeviceText}/tanksensorfail/config",
JsonConvert.SerializeObject(waterHeater.ToTankSensorFailConfig()));

PublishAsync($"{Global.mqtt_discovery_prefix}/sensor/{waterHeater.DeviceText}/leak/config",
JsonConvert.SerializeObject(waterHeater.ToLeakConfig()));

PublishAsync($"{Global.mqtt_discovery_prefix}/sensor/{waterHeater.DeviceText}/masterdispfail/config",
JsonConvert.SerializeObject(waterHeater.ToMasterDispFailConfig()));

PublishAsync($"{Global.mqtt_discovery_prefix}/sensor/{waterHeater.DeviceText}/compsensorfail/config",
JsonConvert.SerializeObject(waterHeater.ToCompSensorFailConfig()));

PublishAsync($"{Global.mqtt_discovery_prefix}/sensor/{waterHeater.DeviceText}/syssensorfail/config",
JsonConvert.SerializeObject(waterHeater.ToSysSensorFailConfig()));

PublishAsync($"{Global.mqtt_discovery_prefix}/sensor/{waterHeater.DeviceText}/systemfail/config",
JsonConvert.SerializeObject(waterHeater.ToSystemFailConfig()));

PublishAsync($"{Global.mqtt_discovery_prefix}/sensor/{waterHeater.DeviceText}/faultcodes/config",
JsonConvert.SerializeObject(waterHeater.ToFaultCodesConfig()));
}

private void PublishWaterHeaterState(WaterHeaterInput waterHeater)
Expand Down Expand Up @@ -295,8 +316,16 @@ private void PublishWaterHeaterState(WaterHeaterInput waterHeater)

PublishAsync(waterHeater.ToTopic(Topic.grid_state), waterHeater.Grid == "Disabled" ? "OFF" : "ON");
PublishAsync(waterHeater.ToTopic(Topic.air_filter_status_state), waterHeater.AirFilterStatus == "OK" ? "ON" : "OFF");
PublishAsync(waterHeater.ToTopic(Topic.condense_pump_fail_state), waterHeater.CondensePumpFail == "False" ? "OFF" : "ON");
PublishAsync(waterHeater.ToTopic(Topic.condense_pump_fail_state), waterHeater.CondensePumpFail ? "ON" : "OFF");
PublishAsync(waterHeater.ToTopic(Topic.leak_detect_state), waterHeater.LeakDetect == "NotDetected" ? "OFF" : "ON");
PublishAsync(waterHeater.ToTopic(Topic.eco_error_state), waterHeater.EcoError ? "ON" : "OFF" );

PublishAsync(waterHeater.ToTopic(Topic.leak_state), waterHeater.Leak.ToString());
PublishAsync(waterHeater.ToTopic(Topic.master_disp_fail_state), waterHeater.MasterDispFail.ToString());
PublishAsync(waterHeater.ToTopic(Topic.comp_sensor_fail_state), waterHeater.CompSensorFail.ToString());
PublishAsync(waterHeater.ToTopic(Topic.sys_sensor_fail_state), waterHeater.SysSensorFail.ToString());
PublishAsync(waterHeater.ToTopic(Topic.system_fail_state), waterHeater.SystemFail.ToString());
PublishAsync(waterHeater.ToTopic(Topic.fault_codes_state), waterHeater.FaultCodes.ToString());
}

private Task PublishAsync(string topic, string payload)
Expand Down
5 changes: 4 additions & 1 deletion energysmartbridge/src/WebService/WaterHeaterInput.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public class WaterHeaterInput
public int MaxSetPoint { get; set; } // 120
public string Grid { get; set; } // Enabled
public string AirFilterStatus { get; set; } // OK
public string CondensePumpFail { get; set; } // False
public bool CondensePumpFail { get; set; } // False
public string AvailableModes { get; set; } // Standard,Vacation,EnergySmart
public bool SystemInHeating { get; set; } // False
public string HotWaterVol { get; set; } // High
Expand All @@ -28,6 +28,9 @@ public class WaterHeaterInput
public string TankSensorFail { get; set; } // None
public bool EcoError { get; set; } // False
public string MasterDispFail { get; set; } // None
public string CompSensorFail { get; set; } // None
public string SysSensorFail { get; set; } // None
public string SystemFail { get; set; } // None
public int UpperTemp { get; set; } // 122
public int LowerTemp { get; set; } // 104
public string FaultCodes { get; set; } // 0
Expand Down

0 comments on commit 854bd26

Please sign in to comment.