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;
         }
     }
 }