public YConfig <RaspPiGpioNodeConfig> InitConfig() { var absoluteCfgFile = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "/" + this.cfgFile; var yconfig = new YConfig <RaspPiGpioNodeConfig>(absoluteCfgFile); try { if (yconfig.Retrieve()) { Console.WriteLine("Config file found: {0}", absoluteCfgFile); return(yconfig); } Console.WriteLine("Config retrieval failed; falling back to defaults"); } catch { Console.WriteLine("Loading default configuration"); } //create default conf RaspPiGpioNodeConfig cfg = new RaspPiGpioNodeConfig(); cfg.FrontendServer = "https://tcyan.yodiwo.com"; cfg.ApiServer = "api.yodiwo.com"; cfg.LocalWebServer = "http://localhost:3339"; cfg.Uuid = "RaspPiGpioNode"; cfg.YpchannelPort = Constants.YPChannelPort; cfg.YpchannelSecure = true; //add new active conf and save to disk yconfig.AddActiveConf("default", cfg); yconfig.Save(); return(yconfig); }
public void Start() { #region Configurations this.YConfig = this.InitConfig(); this.ActiveCfg = this.YConfig.GetActiveConf(); NodeConfig conf = new NodeConfig() { uuid = ActiveCfg.Uuid, Name = "RaspPiGpioNode", YpServer = ActiveCfg.ApiServer, YpchannelPort = ActiveCfg.YpchannelPort, SecureYpc = ActiveCfg.YpchannelSecure, FrontendServer = ActiveCfg.FrontendServer, CanSolveGraphs = false, Pairing_NoUUIDAuthentication = true }; if (String.IsNullOrWhiteSpace(ActiveCfg.NodeKey)) { _IsFirstConnectionAfterPairing = true; } #endregion #region Node construction //create node Node = new Yodiwo.NodeLibrary.Node(conf, new Yodiwo.NodeLibrary.Pairing.NancyPairing.NancyPairing(), DataLoad: null, DataSave: null, nodeType: eNodeType.EndpointSingle ); #endregion #region Register callbacks Node.OnNodePaired += Node_OnPairedCb; Node.OnNodeUnpaired += Node_OnNodeUnpairedCb; Node.OnTransportConnected += Node_OnTransportConnectedCb; Node.OnTransportDisconnected += Node_OnTransportDisconnectedCb; Node.OnTransportError += Node_OnTransportErrorCb; #endregion #region Do Pairing/Connection if (String.IsNullOrWhiteSpace(ActiveCfg.NodeKey)) { //if nodekey null, start pairing DebugEx.TraceLog("Starting pairing procedure."); var task = Node.StartPairing(ActiveCfg.FrontendServer, null, ActiveCfg.LocalWebServer); task.Wait(); } #endregion //already paired, connect Node.SetupNodeKeys(ActiveCfg.NodeKey, ActiveCfg.NodeSecret.ToSecureString()); DebugEx.TraceLog($"Node already paired: NodeKey={ActiveCfg.NodeKey}, NodeSecret={ActiveCfg.NodeSecret.Substring(0, 8)}..."); _SetupThings(); foreach (var thing in ThingIdToThing.Values) { Node.PortEventHandlers[thing.Ports[0]] = (data, isEvent) => { Console.WriteLine("PorteventMsg Rx (isEvent={2}) for thingUID {0} with data {1}", thing.ThingKey.Split('-').Last(), data, isEvent); if (isEvent) { var gpiopin = ThingIdToPin.TryGetOrDefault(thing.ThingKey.Split('-').Last(), GpioPin.Unknown); if (gpiopin != GpioPin.Unknown) { Console.WriteLine("Setting pin {0} to {1}", gpiopin, data); gpioPinsConnection[GpioToPin.TryGetOrDefault(gpiopin)] = data.ParseToBool(); } } }; } //connect Node.Connect(); }
public YConfig<RaspPiGpioNodeConfig> InitConfig() { var absoluteCfgFile = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "/" + this.cfgFile; var yconfig = new YConfig<RaspPiGpioNodeConfig>(absoluteCfgFile); try { if (yconfig.Retrieve()) { Console.WriteLine("Config file found: {0}", absoluteCfgFile); return yconfig; } Console.WriteLine("Config retrieval failed; falling back to defaults"); } catch { Console.WriteLine("Loading default configuration"); } //create default conf RaspPiGpioNodeConfig cfg = new RaspPiGpioNodeConfig(); cfg.FrontendServer = "https://tcyan.yodiwo.com"; cfg.ApiServer = "api.yodiwo.com"; cfg.LocalWebServer = "http://localhost:3339"; cfg.Uuid = "RaspPiGpioNode"; cfg.YpchannelPort = Constants.YPChannelPort; cfg.YpchannelSecure = true; //add new active conf and save to disk yconfig.AddActiveConf("default", cfg); yconfig.Save(); return yconfig; }