Zway-Bot/Zway-Bot/Program.cs

55 lines
2.1 KiB
C#

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using BlubbFish.IoT.Zway;
using BlubbFish.Utils;
using BlubbFish.Utils.IoT.Bots;
namespace BlubbFish.IoT.Bots.ZwayBot {
class Program : Bot<ZwayController> {
static void Main(String[] args) => new Program(args);
public Program(String[] _) {
Console.WriteLine("BlubbFish.IoT.Bots.ZwayBot.Program.Constructor()");
InIReader.SetSearchPath(new List<String>() { "/etc/zwaybot", Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\zwaybot" });
Dictionary<String, ReadOnlyDictionary<String, String>> names = new Dictionary<String, ReadOnlyDictionary<String, String>>();
if(InIReader.ConfigExist("names")) {
foreach(String item in InIReader.GetInstance("names").GetSections(false)) {
names.Add(item, new ReadOnlyDictionary<String, String>( InIReader.GetInstance("names").GetSection(item)));
}
}
if(!InIReader.ConfigExist("settings")) {
Helper.WriteError("No settings.ini found. Abord!");
return;
}
this.logger.SetPath(InIReader.GetInstance("settings").GetValue("logging", "path"));
ZwayController zw = new ZwayController(InIReader.GetInstance("settings").GetSection("zway"), names, false);
zw.Recieved += this.ZwayDataUpate;
this.ModulLoader("BlubbFish.IoT.Bots.ZwayBot.Moduls", zw);
this.ModulInterconnect();
this.ModulEvents();
this.WaitForShutdown();
this.Deconstructor(zw);
Console.WriteLine("Bye!");
}
private void Deconstructor(ZwayController zw) {
Console.WriteLine("BlubbFish.IoT.Bots.ZwayBot.Program.Deconstructor(): Deconstruct ZwayBot.");
this.ModulDispose();
Console.WriteLine("BlubbFish.IoT.Bots.ZwayBot.Program.Deconstructor(): ModuleDisposed.");
zw.Dispose();
Console.WriteLine("BlubbFish.IoT.Bots.ZwayBot.Program.Deconstructor(): Zway lib Disposed.");
}
private void ZwayDataUpate(Object sender, Zway.Events.DeviceUpdateEvent e) => Console.WriteLine("-> ZW [" + e.UpdateTime + "]: " + e.Parent.ToString());
}
}