62 lines
1.9 KiB
C#
62 lines
1.9 KiB
C#
|
using System.Reactive.Linq;
|
||
|
using InnovEnergy.Lib.Protocols.DBus;
|
||
|
using InnovEnergy.Lib.Protocols.DBus.Protocol.DataTypes;
|
||
|
using InnovEnergy.Lib.Victron.VeDBus;
|
||
|
|
||
|
|
||
|
// dotnet publish EmuMeter.csproj -c Release -r linux-arm -p:PublishSingleFile=true --self-contained true && \
|
||
|
// rsync -av bin/Release/net6.0/linux-arm/publish/ root@10.2.1.6:/home/root/emu && clear && \
|
||
|
// ssh root@10.2.1.6 /home/root/emu/EmuMeter
|
||
|
|
||
|
|
||
|
Console.WriteLine("Starting CsController ");
|
||
|
|
||
|
//Enable out InnovEnergy GUI Page through DBusService.DBUS_SERVICE_UNSUPPORTED
|
||
|
// var service = new DBusService("com.victronenergy.unsupported");
|
||
|
var veProperties = new VeProperties();
|
||
|
veProperties.Set("/CustomName", "InnovEnergy");
|
||
|
veProperties.Set("/ProductName", "InnovEnergySW");
|
||
|
|
||
|
|
||
|
var dbus = new DBusConnection(Bus.System);
|
||
|
// var ep = new UnixDomainSocketEndPoint("/home/kim/graber_dbus.sock");
|
||
|
// var auth = AuthenticationMethod.ExternalAsRoot();
|
||
|
// var dbusAddress = new Bus(ep, auth);
|
||
|
// var dbus = new DBusConnection(dbusAddress);
|
||
|
|
||
|
|
||
|
await veProperties.PublishOnDBus(Bus.System, "com.victronenergy.unsupported");
|
||
|
|
||
|
var battery = "com.victronenergy.battery.ttyUSB0";
|
||
|
var soc = 21.0;
|
||
|
|
||
|
//TODO change ttyUSB0 for generic Battery on dbus
|
||
|
var names = await dbus.ListNames();
|
||
|
foreach (var name in names)
|
||
|
{
|
||
|
if(name.Contains("com.victronenergy.battery."))
|
||
|
{
|
||
|
battery = name;
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
var mustCharge = dbus
|
||
|
.ObserveSignalMessages(sender: battery, objectPath: "/Soc")
|
||
|
.Select(m => m.Payload)!
|
||
|
.OfType<IDictionary<String, Variant>>()
|
||
|
.Where(d => d.ContainsKey("Value"))
|
||
|
.Select(d => d["Value"].Value)
|
||
|
.OfType<Double>()
|
||
|
.Do(s => Console.WriteLine($"soc = {s}"))
|
||
|
.Select(d => d < 67)
|
||
|
.DistinctUntilChanged();
|
||
|
|
||
|
|
||
|
mustCharge.Subscribe(b =>
|
||
|
{
|
||
|
dbus.SetValue("com.victronenergy.settings", "/Settings/CGwacs/BatteryLife/State", b ? 9 : 10); // 9 = charge battery, 10 = optimized (no batterylife)
|
||
|
});
|
||
|
|
||
|
|
||
|
// Console.ReadLine();
|