Compare commits
10 Commits
99b6663a27
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| ba4787a5d2 | |||
|
|
319ef1d598 | ||
|
|
2bde52ed7f | ||
|
|
d467824b71 | ||
|
|
3cb7e0cac1 | ||
|
|
6f0b60f56b | ||
|
|
a2057255d4 | ||
|
|
fc6bdab674 | ||
|
|
32a5f7102f | ||
|
|
742da36a10 |
@@ -2,6 +2,12 @@ using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
var builder = WebApplication.CreateBuilder(args);
|
||||
|
||||
// Add JSON serialization services
|
||||
builder.Services.ConfigureHttpJsonOptions(options =>
|
||||
{
|
||||
options.SerializerOptions.PropertyNameCaseInsensitive = true;
|
||||
});
|
||||
|
||||
var app = builder.Build();
|
||||
|
||||
app.MapPost(
|
||||
@@ -9,10 +15,51 @@ app.MapPost(
|
||||
async (AlertBody body) =>
|
||||
{
|
||||
Console.WriteLine("high power alert was received.");
|
||||
Console.WriteLine(System.Text.Json.JsonSerializer.Serialize(body));
|
||||
|
||||
using var client = new HttpClient();
|
||||
await client.GetAsync("http://192.168.1.121/control?cmd=heatpump&set_power_mode=off");
|
||||
using var client = new HttpClient();
|
||||
var heatPumpState = await client.GetFromJsonAsync<HeatPumpStatus>("http://192.168.1.121/control");
|
||||
var message = "";
|
||||
Console.WriteLine(heatPumpState.heatpump.power);
|
||||
switch (body.Status)
|
||||
{
|
||||
case "firing":
|
||||
Console.WriteLine("Peak too high. Shutting down heat pump.");
|
||||
message = "@everyone peak is too high. Disabling heat pump. 🥶";
|
||||
if (heatPumpState.heatpump.power == "on")
|
||||
{
|
||||
await client.GetAsync(
|
||||
"http://192.168.1.121/control?cmd=heatpump&set_power_mode=off"
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
message = "@everyone high power alert, but heat pump could not be disabled because state was not 'ON'";
|
||||
}
|
||||
await client.PostAsJsonAsync<DiscordMessage>(
|
||||
"https://discord.com/api/webhooks/1455072237207158981/C9qvSIGMZVc60VwpZizxqKigyzvA182RDSdt9k8qtWTq-fBgzlJHh53wAYIqYkGNkBM3",
|
||||
new DiscordMessage(message, "willemBot")
|
||||
);
|
||||
break;
|
||||
case "resolved":
|
||||
Console.WriteLine("Peak acceptable. Re enabling heat pump. 🌶️");
|
||||
message = "Re enabled heat pump.";
|
||||
if (heatPumpState.heatpump.power == "off")
|
||||
{
|
||||
await client.GetAsync(
|
||||
"http://192.168.1.121/control?cmd=heatpump&set_power_mode=on"
|
||||
);
|
||||
}
|
||||
else {
|
||||
message = "@everyone Heat pump could not be re enabled because state was not 'ON'";
|
||||
}
|
||||
await client.PostAsJsonAsync<DiscordMessage>(
|
||||
"https://discord.com/api/webhooks/1455072237207158981/C9qvSIGMZVc60VwpZizxqKigyzvA182RDSdt9k8qtWTq-fBgzlJHh53wAYIqYkGNkBM3",
|
||||
new DiscordMessage(message, "willemBot")
|
||||
);
|
||||
break;
|
||||
default:
|
||||
Console.WriteLine("Unknown body type");
|
||||
break;
|
||||
}
|
||||
return new OkResult();
|
||||
}
|
||||
)
|
||||
@@ -30,7 +77,10 @@ app.MapPost(
|
||||
|
||||
app.Run();
|
||||
|
||||
record AlertBody
|
||||
{
|
||||
string status;
|
||||
}
|
||||
record AlertBody(string Status);
|
||||
|
||||
record DiscordMessage(string content, string userName);
|
||||
|
||||
record HeatPumpStatus(HeatPumpStatusBody heatpump);
|
||||
|
||||
record HeatPumpStatusBody(string power);
|
||||
|
||||
140
microservices/power_control/example_heat_pump_status.json
Normal file
140
microservices/power_control/example_heat_pump_status.json
Normal file
@@ -0,0 +1,140 @@
|
||||
{
|
||||
"fw": {
|
||||
"curr": "3.1.7",
|
||||
"last": "3.1.7",
|
||||
"model": "ME_CN105_ATW_WIFI",
|
||||
"upd": true
|
||||
},
|
||||
"heatpump": {
|
||||
"boiler_flow_temperature": 25.0,
|
||||
"boiler_return_temperature": 25.0,
|
||||
"booster_active": false,
|
||||
"compressor_frequency": 0,
|
||||
"compressor_on": false,
|
||||
"controller_datetime": "2025-12-29 07:02:35",
|
||||
"controller_version": 3,
|
||||
"defrost_active": false,
|
||||
"dhw": {
|
||||
"flow_target_temperature": 50.0,
|
||||
"flow_temperature_drop": 10.0,
|
||||
"forced_active": "off",
|
||||
"legionella_prevention_target_temp": 60.0,
|
||||
"mode": "off",
|
||||
"temperature": 51.5,
|
||||
"temperature_secondary": 25.0
|
||||
},
|
||||
"dipswitch": {
|
||||
"sw1": "10110110",
|
||||
"sw2": "10101000",
|
||||
"sw3": "00010000",
|
||||
"sw4": "00000000",
|
||||
"sw5": "00111110",
|
||||
"sw6": "00000000"
|
||||
},
|
||||
"energy": {
|
||||
"consumed_cooling": 0.0,
|
||||
"consumed_dhw": 3.6,
|
||||
"consumed_heating": 72.2,
|
||||
"delivered_cooling": 0.0,
|
||||
"delivered_dhw": 8.6,
|
||||
"delivered_heating": 204.1
|
||||
},
|
||||
"energy_consumed_increasing": 128.1,
|
||||
"fault_code": "No error",
|
||||
"feed_temperature": 38.5,
|
||||
"flowrate": 26,
|
||||
"heat_source": 0,
|
||||
"holiday_mode": "off",
|
||||
"immersion_active": false,
|
||||
"in1_thermostat_request": false,
|
||||
"in5_thermostat_request": false,
|
||||
"in6_thermostat_request": false,
|
||||
"indicative_output_power": 0.0,
|
||||
"max_flow_temperature": 40.0,
|
||||
"min_flow_temperature": 25.0,
|
||||
"mixing_tank_temperature": 25.0,
|
||||
"mixing_valve_status": 4,
|
||||
"mixing_valve_step": 0,
|
||||
"mrc_flag": 7,
|
||||
"multizone_status": 0,
|
||||
"operation": "heat_on",
|
||||
"output_power": 5,
|
||||
"outside_temperature": 0.0,
|
||||
"power": "on",
|
||||
"prohibit": {
|
||||
"cooling_zone1": "off",
|
||||
"cooling_zone2": "off",
|
||||
"dhw": "off",
|
||||
"heating_zone1": "off",
|
||||
"heating_zone2": "off",
|
||||
"server_control": "on"
|
||||
},
|
||||
"rcdischargeTemp": 0.0,
|
||||
"rcdischargesuperheattemp": 0.0,
|
||||
"rcoucompressorsurfacetemp": 0.0,
|
||||
"rcouheatsinktemp": 0.0,
|
||||
"rcouliquidpipetemp": 0.0,
|
||||
"rcousuctionpipetemp": 0.0,
|
||||
"rcoutwoPhasepipetemp": 0.0,
|
||||
"rcsubcooltemp": 0.0,
|
||||
"refrigerant_condensing_temperature": 40.6,
|
||||
"refrigerant_liquid_temperature": 29.5,
|
||||
"return_temperature": 35.5,
|
||||
"runtime": 8847.0,
|
||||
"threeway_valve2_active": true,
|
||||
"threeway_valve_active": false,
|
||||
"waterpump2_active": true,
|
||||
"waterpump3_active": false,
|
||||
"waterpump_active": true,
|
||||
"zone1": {
|
||||
"feed_temperature": 36.0,
|
||||
"flow_target_temperature": 46.5,
|
||||
"mode": "HEAT_COMPENSATION_CURVE",
|
||||
"return_temperature": 32.0,
|
||||
"room_target_temperature": 18.0,
|
||||
"room_temperature": 18.0
|
||||
},
|
||||
"zone2": {
|
||||
"feed_temperature": 25.0,
|
||||
"flow_target_temperature": 35.0,
|
||||
"mode": "HEAT_FLOW_TEMP",
|
||||
"return_temperature": 25.0,
|
||||
"room_target_temperature": 635.4,
|
||||
"room_temperature": 0.0
|
||||
}
|
||||
},
|
||||
"http": {
|
||||
"host": "heatpump"
|
||||
},
|
||||
"mqtt": {
|
||||
"broker": "mqtt://192.168.1.81",
|
||||
"con": true,
|
||||
"ena": true,
|
||||
"ha_auto_disc": true,
|
||||
"port": 1883,
|
||||
"pub_sys_data": true,
|
||||
"sts": "OK",
|
||||
"user": "admin"
|
||||
},
|
||||
"sys": {
|
||||
"bl": "V0.5",
|
||||
"conext": true,
|
||||
"conhp": true,
|
||||
"dbg": false,
|
||||
"frname": "Living room",
|
||||
"hw": "ME_V4.1",
|
||||
"id": "273526330095088",
|
||||
"lang": "ENG",
|
||||
"name": "HVAC_4FC5F8",
|
||||
"scale": "C",
|
||||
"sts": 3,
|
||||
"stsled": true,
|
||||
"up": 1799393
|
||||
},
|
||||
"wifi": {
|
||||
"ip": "192.168.1.121",
|
||||
"mac": "F0:F5:BD:4F:C5:F8",
|
||||
"rssi": -33,
|
||||
"ssid": "Pladijs124"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user