private void setPropertyValue(OSAEObject o, string p, string v) { if (OSAEObjectPropertyManager.ObjectPropertyExists(o.Name, p)) o.SetProperty(p, v, Name); else { switch (p) { case propModel: case propDeviceaddr: case propProtocol: case propDevChgEvent: case propDevType: // These properties are not mandatory, they can be removed, and plugin will work without them logD("setPropertyValue", o.Name, "Property " + p + " does not exist, NOT updated.", o); break; case propMinHum: case propMaxHum: case propMinTemp: case propMaxTemp: case propAvgHum: case propAvgTemp: logW("setPropertyValue", o.Name, "Property " + p + " does not exist, property will be recreated."); OSAEObjectTypeManager.ObjectTypePropertyAdd(o.Type, p, "Float", "", "0", true); o.SetProperty(p, v, Name); break; case propDevId: case propLevel: logW("setPropertyValue", o.Name, "Property " + p + " does not exist, property will be recreated."); OSAEObjectTypeManager.ObjectTypePropertyAdd(o.Type, p, "Integer", "", "", true); o.SetProperty(p, v, Name); break; case propMethods: case propLastCmd: logW("setPropertyValue", o.Name, "Property " + p + " does not exist, property will be recreated."); OSAEObjectTypeManager.ObjectTypePropertyAdd(o.Type, p, "String", "", "", true); o.SetProperty(p, v, Name); break; case sensDTTemp: logW("setPropertyValue", o.Name, "Property " + p + " does not exist, property will be recreated."); OSAEObjectTypeManager.ObjectTypePropertyAdd(o.Type, propTemp, "Float", "", "0", true); o.SetProperty(p, v, Name); break; case sensDTHum: logW("setPropertyValue", o.Name, "Property " + p + " does not exist, property will be recreated."); OSAEObjectTypeManager.ObjectTypePropertyAdd(o.Type, propHum, "Float", "", "0", true); o.SetProperty(p, v, Name); break; } } }