+struct psensor *psensor_new_from_json(json_object *o,
+ const char *sensors_url,
+ int values_max_length)
+{
+ json_object *oid, *oname, *otype;
+ struct psensor *s;
+ char *eid, *url;
+
+ json_object_object_get_ex(o, "id", &oid);
+ json_object_object_get_ex(o, "name", &oname);
+ json_object_object_get_ex(o, "type", &otype);
+
+ eid = url_encode(json_object_get_string(oid));
+ url = malloc(strlen(sensors_url) + 1 + strlen(eid) + 1);
+ sprintf(url, "%s/%s", sensors_url, eid);
+
+ s = psensor_create(strdup(url),
+ strdup(json_object_get_string(oname)),
+ NULL,
+ json_object_get_int(otype) | SENSOR_TYPE_REMOTE,
+ values_max_length);
+ s->provider_data = url;
+
+ free(eid);
+
+ return s;
+}
+