// using System;
// using System.Linq;
// using System.Net.Sockets;
// using System.Reactive.Linq;
// using System.Threading.Tasks;
// using InnovEnergy.DBus;
// using InnovEnergy.DBus.Transport;
//
// namespace VeDBus;
//
// /*
//     dotnet publish VeDBus/VeDBus.csproj -c Release -r linux-arm &&  \
//     rsync -av VeDBus/bin/Release/net5.0/linux-arm/publish/ root@10.2.1.6:/data/ve_dbus && \
//     ssh root@10.2.1.6 "killall VeDBus; /data/ve_dbus/VeDBus"
// */
//
// class Program
// {
//     static async Task Main(String[] args)
//     {
//         var ep   = new UnixDomainSocketEndPoint("/home/eef/graber_dbus.sock");
//         var auth = AuthenticationMethod.ExternalAsRoot();
//         var bus  = new Bus(ep, auth);
//
//         var dbus = new DBusConnection(bus);
//
//         //var match = dbus.AddMatch(new MatchRule { Type = MessageType.MethodCall, Eavesdrop = true , Member = "GetNameOwner"});
//
//         //dbus.IncomingMessages.Subscribe(m => Console.WriteLine(m.Member));
//
//
//         dbus.ObserveAllPropertiesOfService(s => s.StartsWith("com.victronenergy.vebus."))
//             .Buffer(2, 1)
//             .SelectMany(b => b[1].Keys.Where(k => !b[0].ContainsKey(k)))
//             .Subscribe(
//                 Console.WriteLine,
//                 e => Console.WriteLine(e.Message));
//
//         // dbus.ObservePropertiesChanged("com.victronenergy.battery.ttyUSB1")
//         //      .Subscribe(
//         //          v =>
//         //          {
//         //              Console.WriteLine(v.ToString());
//         //          },
//         //          e =>
//         //          {
//         //              var x = e;
//         //              throw e;
//         //          });;
//
//         Console.WriteLine("Delay");
//
//         await Task.Delay(Int32.MaxValue);
//     }
// }