Added OpenHAB config files generation and command line command to use that. Also added transforms for OpenHAB integration.
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using System.Text;
|
||||
using System.Text.Json;
|
||||
using System.Threading;
|
||||
|
||||
@@ -11,15 +12,16 @@ namespace Barsik
|
||||
class SensorsMonitoringUnit : BaseMonitoringUnit
|
||||
{
|
||||
const string CORE_STR = "Core{0} Temp:";
|
||||
const float MULTIPLIER = 100;
|
||||
int cores;
|
||||
|
||||
public SensorsMonitoringUnit(JsonElement config, RegistersContainer registers) : base(config, registers)
|
||||
{
|
||||
cores = config.GetProperty("Cores").GetInt32();
|
||||
}
|
||||
|
||||
public override void Run()
|
||||
{
|
||||
int cores = config.GetProperty("Cores").GetInt32();
|
||||
var multiplier = config.GetProperty("Multiplier").GetDouble();
|
||||
while (true)
|
||||
{
|
||||
System.Diagnostics.ProcessStartInfo procStartInfo = new System.Diagnostics.ProcessStartInfo("sensors");
|
||||
@@ -60,7 +62,7 @@ namespace Barsik
|
||||
// fill register data starting from baseAddress
|
||||
for (int i = 0; i < cores; i++)
|
||||
{
|
||||
registers[baseAddress + i] = (int)(t[i] * multiplier);
|
||||
registers[baseAddress + i] = (int)(t[i] * MULTIPLIER);
|
||||
}
|
||||
}
|
||||
Thread.Sleep(2000);
|
||||
@@ -84,5 +86,33 @@ namespace Barsik
|
||||
float.TryParse(v.Substring(pos, pos2 - pos), out res);
|
||||
return res;
|
||||
}
|
||||
|
||||
public override void GenerateThingsConfig(StringBuilder config)
|
||||
{
|
||||
config.Append("\tBridge poller ");
|
||||
config.Append(unitName);
|
||||
config.AppendFormat("[start = {0}, length = {1}, type = \"holding\", refresh = 500] {{\n", baseAddress, cores);
|
||||
int currentAddress = baseAddress;
|
||||
for (int i = 0; i < cores; i++)
|
||||
{
|
||||
string name = string.Format("Core{0}Temp", i);
|
||||
config.Append("\t\tThing data ");
|
||||
config.Append(name);
|
||||
config.AppendFormat("[readStart = \"{0}\", readValueType = \"int16\", readTransform=\"JS(divide100.js)\"]\n", currentAddress);
|
||||
currentAddress++;
|
||||
}
|
||||
config.Append("\t}\n");
|
||||
}
|
||||
|
||||
public override void GenerateItemsConfig(string name, StringBuilder config)
|
||||
{
|
||||
for (int i = 0; i < cores; i++)
|
||||
{
|
||||
config.Append(string.Format("Number {0}_Core{1}Temp \"{0} CPU Core{1} [%.1f °C]\" <temperature>", name, i));
|
||||
config.Append(" {channel=\"");
|
||||
config.AppendFormat("modbus:data:{0}:{1}:Core{2}Temp:number", name, unitName, i);
|
||||
config.Append("\"}\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user