private void rock_Load(object sender, EventArgs e) { // create brick object and connect it to robot brick = new Brick <Sensor, Sensor, Sensor, Sensor>(Connect.Globalvariable.sComPort); //brick.Connection.Open(); // Create touch sensor and connect it to port 2 sensorTouch = new TouchSensor(); brick.Sensor2 = sensorTouch; // update form with brick details lblConnnection.Text = "Connected to EV3 Robot"; // Create an IR sensor and connect it to port 4 sensorDistance = new IRSensor(); brick.Sensor4 = sensorDistance; // Create a colour sensor and connect it to port 3 sensorColour = new ColorSensor(); brick.Sensor3 = sensorColour; // Set ports for synchronised motor vehicle brick.Vehicle.LeftPort = MotorPort.OutB; brick.Vehicle.RightPort = MotorPort.OutC; }
public Form1() { try { Nuitrack.Init(""); } catch (System.Exception exception) { Console.WriteLine("Cannot initialize Nuitrack."); throw exception; } try { // Create and setup all required modules _depthSensor = DepthSensor.Create(); _colorSensor = ColorSensor.Create(); _userTracker = UserTracker.Create(); _skeletonTracker = SkeletonTracker.Create(); } catch (System.Exception exception) { Console.WriteLine("Cannot create Nuitrack module."); throw exception; } _depthSensor.SetMirror(false); // Add event handlers for all modules _depthSensor.OnUpdateEvent += onDepthSensorUpdate; _colorSensor.OnUpdateEvent += onColorSensorUpdate; _userTracker.OnUpdateEvent += onUserTrackerUpdate; _skeletonTracker.OnSkeletonUpdateEvent += onSkeletonUpdate; Nuitrack.onIssueUpdateEvent += onIssueDataUpdate; mode = _depthSensor.GetOutputMode(); colorMode = _colorSensor.GetOutputMode(); if (mode.XRes < colorMode.XRes) { mode.XRes = colorMode.XRes; } if (mode.YRes < colorMode.YRes) { mode.YRes = colorMode.YRes; } _bitmap = new DirectBitmap(mode.XRes, mode.YRes); for (int y = 0; y < mode.YRes; ++y) { for (int x = 0; x < mode.XRes; ++x) { _bitmap.SetPixel(x, y, Color.FromKnownColor(KnownColor.Aqua)); } } InitializeComponent(); }
public Robot(Brick brick, ILogger <Robot> logger) { Brick = brick; Logger = logger; ColorSensor colorSensor = brick.FindDevice <ColorSensor>("colorSensor"); colorSensor.InputChanged += ColorSensor_InputChanged; }
/// <summary> /// returns the current colorId of the EV3ColorSensor /// </summary> /// <returns> /// int: the current colorId seen by the EV3ColorSensor /// </returns> public static RGBColor GetRGBColor() { if (ColorSensor != null) { return(ColorSensor.ReadRGB()); } else { Robot.Print("color sensor not initialized!"); return(null); } }
public static void Main(string[] args) { const string to = "*****@*****.**"; const string from = "*****@*****.**"; const string password = "******"; ManualResetEvent terminateProgram = new ManualResetEvent(false); var colorSensor = new ColorSensor(SensorPort.In1); ButtonEvents buts = new ButtonEvents(); SmtpClient smptpClient = new SmtpClient("smtp.gmail.com", 587); smptpClient.EnableSsl = true; smptpClient.UseDefaultCredentials = false; smptpClient.Credentials = new NetworkCredential(from, password); smptpClient.DeliveryMethod = SmtpDeliveryMethod.Network; ServicePointManager.ServerCertificateValidationCallback = delegate(object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return(true); }; MailMessage message = new MailMessage(); message.To.Add(to); message.From = new MailAddress(from); message.Subject = "Color mail from my EV3"; LcdConsole.Clear(); LcdConsole.WriteLine("Use color on port1"); LcdConsole.WriteLine("Enter send mail"); LcdConsole.WriteLine("Esc. terminate"); buts.EscapePressed += () => { terminateProgram.Set(); }; buts.EnterPressed += () => { LcdConsole.WriteLine("Sending email"); try{ message.Body = "EV3 read color: " + colorSensor.ReadColor(); smptpClient.Send(message); LcdConsole.WriteLine("Done sending email"); } catch (Exception e) { LcdConsole.WriteLine("Failed to send email"); Console.WriteLine(e.StackTrace); } }; terminateProgram.WaitOne(); message = null; }
/* Initialize the Nuitrack Environment */ private void Initialize() { try { Nuitrack.Init(""); } catch (nuitrack.Exception exception) { Console.WriteLine("Cannot initialize Nuitrack."); throw exception; } // Select the device _device = SelectDevice(); // Select video configurations _configVideo = SelectVideoMode(); // Activate the license ActivateDevice(); Nuitrack.SetDevice(_device); // Add modules Sensors _depthSensor = DepthSensor.Create(); _colorSensor = ColorSensor.Create(); _userTracker = UserTracker.Create(); _skeletonTracker = SkeletonTracker.Create(); // Add modules Events Handlers _depthSensor.OnUpdateEvent += onDepthSensorUpdate; _colorSensor.OnUpdateEvent += onColorSensorUpdate; _userTracker.OnUpdateEvent += onUserTrackerUpdate; _userTracker.OnNewUserEvent += onUserTrackerNewUser; _userTracker.OnLostUserEvent += onUserTrackerLostUser; _skeletonTracker.OnSkeletonUpdateEvent += onSkeletonUpdate; // Connect to remote _streamer = SelectStreamer(); // Run Nuitrack Nuitrack.Run(); _running = true; Console.WriteLine("Nuitrack is Running..."); }
public static IObservable <ColorFrameEventArgs> ColorFrameArrived(ColorSensor sensor) { if (sensor is null) { return(Observable.Empty <ColorFrameEventArgs>()); } return(Observable.FromEvent <ColorSensor.OnUpdate, ColorFrameEventArgs>(handler => { ColorSensor.OnUpdate cfaHandler = (x) => { handler(new ColorFrameEventArgs(x)); }; return cfaHandler; }, cfaHandler => sensor.OnUpdateEvent += cfaHandler, cfaHandler => sensor.OnUpdateEvent -= cfaHandler)); }
public static void Main(string[] args) { ManualResetEvent terminateProgram = new ManualResetEvent(false); string fbToken = "CAACpSl1Qm3cBAHAMyZAY...";//This is not valied var fb = new FacebookClient(fbToken); Lcd lcd = new Lcd(); Font f = Font.MediumFont; Point offset = new Point(0, 25); Point p = new Point(10, Lcd.Height - 75); Point boxSize = new Point(100, 24); Rectangle box = new Rectangle(p, p + boxSize); var colorSensor = new ColorSensor(SensorPort.In1); ButtonEvents buts = new ButtonEvents(); LcdConsole.WriteLine("Use color on port1"); LcdConsole.WriteLine("Enter post value"); LcdConsole.WriteLine("Esc. terminate"); buts.EscapePressed += () => { terminateProgram.Set(); }; buts.EnterPressed += () => { Color color = colorSensor.ReadColor(); lcd.Clear(); lcd.WriteTextBox(f, box + offset * 0, "Color: " + color, true); lcd.WriteTextBox(f, box + offset * 1, "Send to Facebook" + color, true); lcd.Update(); colorSensor.ReadColor(); var me = fb.Get("monobrick.dk") as JsonObject; var uid = me["id"]; string url = string.Format("{0}/{1}", uid, "feed"); var argList = new Dictionary <string, object>(); argList["message"] = "A program running MonoBrick Firmware was aked to read the color sensor. Color read: " + colorSensor.ReadColor().ToString(); fb.Post(url, argList); }; terminateProgram.WaitOne(); }
void Start() { /* * __ _______ __ |W3| FRONT |W4| |__| |__| * __| |__ |W1|NXT |W2| |__|_______|__| * */ rb = gameObject.GetComponent <Rigidbody>(); Component[] cmpnts = gameObject.transform.GetComponentsInChildren(typeof(WheelCollider)); LBWheel = (WheelCollider)cmpnts[0]; RBWheel = (WheelCollider)cmpnts[1]; LFWheel = (WheelCollider)cmpnts[2]; RFWheel = (WheelCollider)cmpnts[3]; for (int i = 0; i < gameObject.transform.childCount; ++i) { GameObject gObj = gameObject.transform.GetChild(i).gameObject; if (gObj.name.Contains("cross") || gObj.name.Contains("hole")) { switch (gObj.name[gObj.name.Length - 1]) { case '1': LBWheelTransform = gObj.transform; break; case '2': RBWheelTransform = gObj.transform; break; case '3': LFWheelTransform = gObj.transform; break; case '4': RFWheelTransform = gObj.transform; break; default: break; } } if (gObj.name.Contains("WCollider")) { switch (gObj.name[gObj.name.Length - 1]) { case '1': LBWheel = gObj.GetComponent(typeof(WheelCollider)) as WheelCollider; break; case '2': RBWheel = gObj.GetComponent(typeof(WheelCollider)) as WheelCollider; break; case '3': LFWheel = gObj.GetComponent(typeof(WheelCollider)) as WheelCollider; break; case '4': RFWheel = gObj.GetComponent(typeof(WheelCollider)) as WheelCollider; break; default: break; } } if (gObj.name.Contains("SensorColor")) { GameObject tmp = gObj.transform.Find("Sensor").gameObject; cs = tmp.GetComponent <ColorSensor>(); } } planeObj = GameObject.Find("Plane"); plane = planeObj.GetComponent <MeshRenderer>().material.mainTexture as Texture2D; plane.filterMode = FilterMode.Point; if (plane.width > plane.height) { float ratio = plane.width / plane.height; blockX = (int)(planeObj.transform.localScale.z * 2) * (int)ratio; blockZ = (int)(planeObj.transform.localScale.x * 2); } else { float ratio = plane.height / plane.width; blockX = (int)(planeObj.transform.localScale.z * 2); blockZ = (int)(planeObj.transform.localScale.x * 2) * (int)ratio; } }
/// <summary> /// returns the current colorId of the EV3ColorSensor /// </summary> /// <returns> /// int: the current colorId seen by the EV3ColorSensor /// </returns> private static int GetColorId() { return(ColorSensor.Read()); }
private void ColorSensor_InputChanged(ColorSensor sensor, ColorSensorValue value) { Logger.LogInformation($"{sensor.Id} {value.Value}"); Log.Add(new LogEntry(sensor, value)); }
public LogEntry(ColorSensor sensor, ColorSensorValue value) { ColorSensorId = sensor.Id; Value = value.Value; TimeStamp = DateTime.Now; }
public MainWindow() { InitializeComponent(); try { Nuitrack.Init(); } catch (nuitrack.Exception exception) { Debug.WriteLine("Can not initialize Nuitrack. Exception: ", exception); } try { // Create and setup all required modules _depthSensor = DepthSensor.Create(); _colorSensor = ColorSensor.Create(); _userTracker = UserTracker.Create(); _skeletonTracker = SkeletonTracker.Create(); _handTracker = HandTracker.Create(); _gestureRecognizer = GestureRecognizer.Create(); } catch (nuitrack.Exception exception) { Debug.WriteLine("Cannot create Nuitrack module."); throw exception; } // Add event handlers for all modules _depthSensor.OnUpdateEvent += onDepthSensorUpdate; _colorSensor.OnUpdateEvent += onColorSensorUpdate; _userTracker.OnUpdateEvent += onUserTrackerUpdate; _skeletonTracker.OnSkeletonUpdateEvent += onSkeletonUpdate; _handTracker.OnUpdateEvent += onHandTrackerUpdate; _gestureRecognizer.OnNewGesturesEvent += onNewGestures; // Add an event handler for the IssueUpdate event Nuitrack.onIssueUpdateEvent += onIssueDataUpdate; // Create and configure the Bitmap object according to the depth sensor output mode OutputMode mode = _depthSensor.GetOutputMode(); OutputMode colorMode = _colorSensor.GetOutputMode(); if (mode.XRes < colorMode.XRes) { mode.XRes = colorMode.XRes; } if (mode.YRes < colorMode.YRes) { mode.YRes = colorMode.YRes; } _bitmap = new DirectBitmap(mode.XRes, mode.YRes); for (int y = 0; y < mode.YRes; ++y) { for (int x = 0; x < mode.XRes; ++x) { _bitmap.SetPixel(x, y, System.Drawing.Color.FromKnownColor(KnownColor.Aqua)); } } }
// Update is called once per frame void Update() { updateCounter++; if (updateCounter >= Settings.statusUpdateNumber) { string status = "invalid"; string objectName; string[] nameSubstrings; objectName = gameObject.transform.parent.name; nameSubstrings = objectName.Split('_'); int pos = objectName.IndexOf('_'); string cleanedName = objectName.Substring(pos + 1); Item i = ItemManager.getInstance().getItem(cleanedName); if (i != null) { status = i.state; if (i.type.Equals("Sensor")) { status += " " + ((Sensor)i).unit; if (cleanedName.Contains("idscan")) { status = ((NfcReader)i).getName(); } } updateCounter = 0; this.transform.GetChild(0).GetChild(1).GetComponent <Text>().text = i.shortName; //if(objectName.Contains("dimmer")) // Debug.Log("shortname of " + objectName + " is " + i.shortName + " with status " + status); } if (i is ColorSensor || i is HueDimmer || i is CoffeeMachineActuator) { if (i is ColorSensor || i is HueDimmer) { byte r, g, b; if (i is ColorSensor) { ColorSensor c = (ColorSensor)i; r = Convert.ToByte(c.r); g = Convert.ToByte(c.g); b = Convert.ToByte(c.b); this.transform.GetChild(0).GetChild(1).GetChild(0).GetComponent <Image>().color = new Color32(r, g, b, 255); } else { HueDimmer hd = (HueDimmer)i; HueColor c = hd.hueColor; float hf = (float)c.h / 360; float sf = (float)c.s / 100; float vf = (float)c.v / 100; Color rgbColor = Color.HSVToRGB(hf, sf, vf, false); this.transform.GetChild(0).GetChild(1).GetChild(0).GetComponent <Image>().color = rgbColor; string RGBstring = rgbColor.ToString(); int Ri = (int)(rgbColor.r * 255); int Bi = (int)(rgbColor.b * 255); int Gi = (int)(rgbColor.g * 255); string RGBstr = Ri.ToString() + "," + Gi.ToString() + "," + Bi.ToString(); Debug.Log(RGBstr); this.transform.GetChild(0).GetChild(1).GetChild(1).GetComponent <Text>().text = RGBstr; } this.transform.GetChild(0).GetChild(2).GetComponent <Text>().text = status; } else { CoffeeMachineActuator c = (CoffeeMachineActuator)i; this.transform.GetChild(0).GetChild(3).GetChild(1).GetComponent <Text>().text = c.getWaterLevel(); this.transform.GetChild(0).GetChild(2).GetComponent <Text>().text = status; } } else { this.transform.GetChild(0).GetChild(2).GetComponent <Text>().text = status; } } }
public MainForm() { // Initialize Nuitrack. This should be called before using any Nuitrack module. // By passing the default arguments we specify that Nuitrack must determine // the location automatically. try { Nuitrack.Init(""); } catch (Exception exception) { Console.WriteLine("Cannot initialize Nuitrack."); throw exception; } try { // Create and setup all required modules _depthSensor = DepthSensor.Create(); _colorSensor = ColorSensor.Create(); _userTracker = UserTracker.Create(); _skeletonTracker = SkeletonTracker.Create(); _handTracker = HandTracker.Create(); _gestureRecognizer = GestureRecognizer.Create(); } catch (Exception exception) { Console.WriteLine("Cannot create Nuitrack module."); throw exception; } //_depthSensor.SetMirror(false); // Add event handlers for all modules _depthSensor.OnUpdateEvent += onDepthSensorUpdate; _colorSensor.OnUpdateEvent += onColorSensorUpdate; _userTracker.OnUpdateEvent += onUserTrackerUpdate; _userTracker.OnNewUserEvent += onUserTrackerNewUser; _userTracker.OnLostUserEvent += onUserTrackerLostUser; _skeletonTracker.OnSkeletonUpdateEvent += onSkeletonUpdate; _handTracker.OnUpdateEvent += onHandTrackerUpdate; _gestureRecognizer.OnNewGesturesEvent += onNewGestures; // Add an event handler for the IssueUpdate event Nuitrack.onIssueUpdateEvent += onIssueDataUpdate; // Create and configure the Bitmap object according to the depth sensor output mode OutputMode mode = _depthSensor.GetOutputMode(); OutputMode colorMode = _colorSensor.GetOutputMode(); if (mode.XRes < colorMode.XRes) { mode.XRes = colorMode.XRes; } if (mode.YRes < colorMode.YRes) { mode.YRes = colorMode.YRes; } _bitmap = new DirectBitmap(mode.XRes, mode.YRes); for (int y = 0; y < mode.YRes; ++y) { for (int x = 0; x < mode.XRes; ++x) { _bitmap.SetPixel(x, y, Color.FromKnownColor(KnownColor.Aqua)); } } // Set fixed form size this.MinimumSize = this.MaximumSize = new Size(mode.XRes, mode.YRes); // Disable unnecessary caption bar buttons this.MinimizeBox = this.MaximizeBox = false; // Enable double buffering to prevent flicker this.DoubleBuffered = true; // Run Nuitrack. This starts sensor data processing. try { Nuitrack.Run(); } catch (Exception exception) { Console.WriteLine("Cannot start Nuitrack."); throw exception; } this.Show(); }
void Update() { //if (isSelected || isFocused) //{ // cubeMeshRenderer.material = style.highlightMat; //} //else //{ // cubeMeshRenderer.material = cubeDefaultMat; //} if (this.c != null) { updateCounter++; colorUpdateCounter++; if (updateCounter >= Settings.requestUpdateNumber) { if (c.connState.Equals(Connection.States.Active)) { Item source = ItemManager.getInstance().getItem(SourceName); Item target = ItemManager.getInstance().getItem(TargetName); if (source is Poti && target is DimmerActuator) { Poti sPoti = (Poti)source; DimmerActuator tDimmer = (DimmerActuator)target; int stateDim = int.Parse(tDimmer.state); int statePoti = int.Parse(sPoti.state); if (statePoti == 0) { StartCoroutine(tDimmer.sendOFF()); } else if (statePoti == 100) { StartCoroutine(tDimmer.sendON()); } else if (stateDim <= (statePoti - 10)) { StartCoroutine(tDimmer.sendINCREASE()); } else if (stateDim >= (statePoti + 10)) { StartCoroutine(tDimmer.sendDECREASE()); } } else { if (source is Poti && target is HueDimmer) { Poti sPoti = (Poti)source; HueDimmer hDimmer = (HueDimmer)target; StartCoroutine(hDimmer.sendState(sPoti.state)); } else { if (source is ColorSensor && target is HueDimmer) { if (colorUpdateCounter >= 100) { byte r, g, b; ColorSensor cs = (ColorSensor)source; r = Convert.ToByte(cs.r); g = Convert.ToByte(cs.g); b = Convert.ToByte(cs.b); float h, s, v; Color32 colRgb = new Color32(r, g, b, 255); Color.RGBToHSV(colRgb, out h, out s, out v); HueDimmer hDimmer = (HueDimmer)target; int hr = (int)(h * 360); int sr = (int)(s * 100); int vr = (int)(v * 100); StartCoroutine(hDimmer.sendColor(hr, sr, vr)); colorUpdateCounter = 0; } } } } } updateCounter = 0; } } }
static public void Main() { Console.CancelKeyPress += new ConsoleCancelEventHandler(consoleEventHandler); try { Nuitrack.Init(""); // get devices list List <NuitrackDevice> devices = Nuitrack.GetDeviceList(); if (devices.Count == 0) { throw new nuitrack.Exception("No devices found."); } // print available devices Console.Write("\nAvailable devices:\n"); for (int i = 0; i < devices.Count; i++) { Console.WriteLine(" [{0}] {1} ({2}), License: {3}", i, devices[i].GetInfo(DeviceInfoType.SERIAL_NUMBER), devices[i].GetInfo(DeviceInfoType.DEVICE_NAME), ToString(devices[i].GetActivationStatus())); } // select a device int devIndex = UserInteraction.AskInt("\nSelect the device number: ", 0, devices.Count); NuitrackDevice device = devices[devIndex]; // select video modes selectDeviceVideoMode(device, StreamType.DEPTH); selectDeviceVideoMode(device, StreamType.COLOR); // activate selected device bool isActivated = Convert.ToBoolean(device.GetActivationStatus()); if (isActivated) { isActivated = !UserInteraction.Confirm("The device is already activated. Do you want to reactivate it?"); } if (!isActivated) { string activationKey = UserInteraction.AskString("Enter the activation key: "); device.Activate(activationKey); Console.WriteLine("Activation status: {0}", ToString(device.GetActivationStatus())); } // set device and run Nuitrack if (UserInteraction.Confirm("Do you want to run Nuitrack with the selected device?")) { Nuitrack.SetDevice(device); DepthSensor depthSensor = DepthSensor.Create(); ColorSensor colorSensor = ColorSensor.Create(); depthSensor.OnUpdateEvent += onDepthSensorUpdate; colorSensor.OnUpdateEvent += onColorSensorUpdate; Nuitrack.Run(); _run = true; while (!_finished) { Nuitrack.WaitUpdate(depthSensor); } colorSensor.OnUpdateEvent -= onColorSensorUpdate; depthSensor.OnUpdateEvent -= onDepthSensorUpdate; } Nuitrack.Release(); } catch (nuitrack.Exception exception) { Console.WriteLine("Error: " + exception.ToString()); } }
/// <summary> /// returns the current color name of the EV3ColorSensor /// </summary> /// <returns> /// string: the current color name seen by the EV3ColorSensor /// </returns> private static string GetColorName() { return(ColorSensor.ReadAsString()); }
public ColorHueConnection(string id, ColorSensor source, HueDimmer target) : base(id, source, target) { this.id = id; this.source = source; this.target = target; }
/// <summary> ///3D扫描的构造函数 -byCQZ 2019.6.16 /// /// </summary> private void NuitrackCreate() { try { Nuitrack.Init(""); Console.WriteLine("Initialize succneed."); } catch (nuitrack.Exception exception) { Console.WriteLine("Cannot initialize Nuitrack."); //throw exception; MessageBoxX.Warning("3D摄像头初始化失败,请检查SDK配置和是否进行密钥认证。"); Application.Current.Shutdown(); } try { // Create and setup all required modules _depthSensor = DepthSensor.Create(); _colorSensor = ColorSensor.Create(); _userTracker = UserTracker.Create(); _skeletonTracker = SkeletonTracker.Create(); //_handTracker = HandTracker.Create(); _gestureRecognizer = GestureRecognizer.Create(); } catch (nuitrack.Exception exception) { Console.WriteLine("Cannot create Nuitrack module."); //throw exception; MessageBoxX.Warning("3D摄像头初始化失败,请检查SDK配置和是否进行密钥认证。"); Application.Current.Shutdown(); } _depthSensor.SetMirror(false); // Add event handlers for all modules _depthSensor.OnUpdateEvent += onDepthSensorUpdate; _colorSensor.OnUpdateEvent += onColorSensorUpdate; _userTracker.OnUpdateEvent += onUserTrackerUpdate; _skeletonTracker.OnSkeletonUpdateEvent += onSkeletonUpdate; //_handTracker.OnUpdateEvent += onHandTrackerUpdate; _gestureRecognizer.OnNewGesturesEvent += onNewGestures; // Add an event handler for the IssueUpdate event Nuitrack.onIssueUpdateEvent += onIssueDataUpdate; // Create and configure the Bitmap object according to the depth sensor output mode OutputMode mode = _depthSensor.GetOutputMode(); OutputMode colorMode = _colorSensor.GetOutputMode(); if (mode.XRes < colorMode.XRes) { mode.XRes = colorMode.XRes; } if (mode.YRes < colorMode.YRes) { mode.YRes = colorMode.YRes; } Console.WriteLine(mode.XRes + "=====================" + mode.YRes); _bitmap = new DirectBitmap(mode.XRes, mode.YRes); for (int y = 0; y < mode.YRes; ++y) { for (int x = 0; x < mode.XRes; ++x) { _bitmap.SetPixel(x, y, Color.FromKnownColor(KnownColor.Aqua)); } } try { Nuitrack.Run(); Console.WriteLine("Start Nuitrack."); } catch (nuitrack.Exception exception) { Console.WriteLine("Cannot start Nuitrack."); //throw exception; MessageBoxX.Warning("3D摄像头启动失败,请检查SDK配置和是否进行密钥认证。"); Application.Current.Shutdown(); } }
public IEnumerator performAction() { UnityWebRequest www; www = UnityWebRequest.Get(requestURL); yield return(www.Send()); while (!www.isDone) { Debug.LogError("."); yield return(null); } if (www.isError) { Debug.Log(www.error); } else { string temp = www.downloadHandler.text; #if WINDOWS_UWP DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(List <GETResponse>)); MemoryStream ms = new MemoryStream(); StreamWriter writer = new StreamWriter(ms); writer.Write(temp); writer.Flush(); ms.Position = 0; //get status from json answer getResponses = (List <GETResponse>)ser.ReadObject(ms); #endif foreach (string fullItemName in Settings.Items) { GETResponse singleItemGetResponse = getResponses.Find(x => x.name.Equals(fullItemName)); if (singleItemGetResponse != null) { //gather all info needed to update or create the item in the ItemManager //we need key, name, state, shortName, unit (optionally). We already have key, name, state. //first read in the unit, if existent string unit = ""; if (singleItemGetResponse.stateDescription != null && singleItemGetResponse.stateDescription.pattern != null) { string[] stateDesc = singleItemGetResponse.stateDescription.pattern.Split(' '); if (stateDesc.Length > 1) { unit = stateDesc[1]; if (unit.EndsWith("%")) { unit = unit.Remove(unit.Length - 1); } } } //next, the shortName string shortName; switch (fullItemName) { case Settings.LinearPoti: shortName = Settings.LinearPoti; break; case Settings.NFCReader: shortName = Settings.NFCReader; break; case Settings.CoffeeMachine: shortName = Settings.CoffeeMachine; break; case Settings.myoArmband: shortName = Settings.myoArmband; break; case Settings.hueLamp1dimmer: shortName = "huedimmer_1"; break; case Settings.hueLamp2dimmer: shortName = "huedimmer_2"; break; default: string[] tempName = fullItemName.Split('_'); shortName = tempName[tempName.Length - 2] + "" + tempName[tempName.Length - 1]; break; } //now we have all we need. Update the list! //if the current item is the dimmer, update both sensor and actuator reference if (fullItemName.Contains("homematic_dimmer")) { ItemManager.getInstance().updateItem(fullItemName + "_Sensor", fullItemName, singleItemGetResponse.state, shortName, unit); ItemManager.getInstance().updateItem(fullItemName + "_Actuator", fullItemName, singleItemGetResponse.state, shortName, unit); } else if (fullItemName.Contains("bulb210_color")) { ItemManager.getInstance().updateItem(fullItemName, fullItemName, singleItemGetResponse.state, shortName, unit); HueColor i = (HueColor)ItemManager.getInstance().getItem(fullItemName); string[] colors = singleItemGetResponse.state.Split(','); int.TryParse(colors[0], out i.h); int.TryParse(colors[1], out i.s); int.TryParse(colors[2], out i.v); } else if (fullItemName.Equals(Settings.colorSensor)) { ItemManager.getInstance().updateItem(fullItemName, fullItemName, singleItemGetResponse.state, shortName, unit); ColorSensor c = (ColorSensor)ItemManager.getInstance().getItem(fullItemName); string[] colors = singleItemGetResponse.state.Split(','); int.TryParse(colors[0], out c.r); int.TryParse(colors[1], out c.g); int.TryParse(colors[2], out c.b); } else { ItemManager.getInstance().updateItem(fullItemName, fullItemName, singleItemGetResponse.state, shortName, unit); } } } //default case } }