I am also interested in this topic. I have a VistaCam 1203 doorbell cam.
Using the API Tool I listed all its “Items” for the device ID of the main device type -
"deviceTypeId": "foscam_vistacam1203",
{
"api": "1.0",
"error": null,
"id": "1677589749826",
"method": "hub.items.list",
"result": {
"items": [
{
"_id": "61f20e9d123e431219fbc8d2",
"deviceId": "61f20e90123e431219fbc8a1",
"enum": [
"closed",
"opened"
],
"hasGetter": true,
"hasSetter": false,
"name": "audio_stream",
"show": true,
"value": "closed",
"valueFormatted": "closed",
"valueType": "token"
},
{
"_id": "61f20e9d123e431219fbc8d3",
"deviceId": "61f20e90123e431219fbc8a1",
"enum": [
"create",
"delete"
],
"hasGetter": false,
"hasSetter": true,
"name": "audio_stream_control",
"show": true,
"value": "",
"valueFormatted": "",
"valueType": "token"
},
{
"_id": "61f20e9d123e431219fbc8d4",
"deviceId": "61f20e90123e431219fbc8a1",
"hasGetter": true,
"hasSetter": false,
"name": "camera_stream",
"show": true,
"value": {
"cloudLiveStreamUrl": "",
"localRtspUrl": "rtsp://192.168.0.101:5554/61f20e9d123e431219fbc8d4"
},
"valueFormatted": "",
"valueType": "cameraStream"
},
{
"_id": "61f20e9d123e431219fbc8d5",
"deviceId": "61f20e90123e431219fbc8a1",
"enum": [
"idle",
"ring"
],
"hasGetter": true,
"hasSetter": false,
"name": "doorbell_state",
"show": true,
"value": "idle",
"valueFormatted": "idle",
"valueType": "token"
},
{
"_id": "61f20e9d123e431219fbc8d6",
"deviceId": "61f20e90123e431219fbc8a1",
"hasGetter": false,
"hasSetter": true,
"name": "format_sd_card",
"show": true,
"value": 0,
"valueFormatted": "0",
"valueType": "int"
},
{
"_id": "61f20e9d123e431219fbc8d7",
"deviceId": "61f20e90123e431219fbc8a1",
"hasGetter": false,
"hasSetter": true,
"maxValue": 60,
"minValue": 15,
"name": "make_recording",
"show": true,
"value": 0,
"valueFormatted": "0",
"valueType": "int"
},
{
"_id": "61f20e9d123e431219fbc8d8",
"deviceId": "61f20e90123e431219fbc8a1",
"hasGetter": false,
"hasSetter": true,
"name": "reset",
"show": true,
"value": 0,
"valueFormatted": "0",
"valueType": "int"
},
{
"_id": "61f20e9d123e431219fbc8d9",
"deviceId": "61f20e90123e431219fbc8a1",
"hasGetter": true,
"hasSetter": false,
"name": "sd_card_capacity",
"show": true,
"value": 14902,
"valueFormatted": "14902",
"valueType": "int"
},
{
"_id": "61f20e9d123e431219fbc8da",
"deviceId": "61f20e90123e431219fbc8a1",
"hasGetter": true,
"hasSetter": false,
"name": "sd_card_free_space",
"show": true,
"value": 262,
"valueFormatted": "262",
"valueType": "int"
},
{
"_id": "61f20e9e123e431219fbc8db",
"deviceId": "61f20e90123e431219fbc8a1",
"enum": [
"not_present",
"unformatted",
"formatting",
"ok",
"read_only"
],
"hasGetter": true,
"hasSetter": false,
"name": "sd_card_status",
"show": true,
"value": "ok",
"valueFormatted": "ok",
"valueType": "token"
},
{
"_id": "61f20e9e123e431219fbc8dc",
"deviceId": "61f20e90123e431219fbc8a1",
"hasGetter": false,
"hasSetter": true,
"name": "stop_recording",
"show": true,
"value": 0,
"valueFormatted": "0",
"valueType": "int"
},
{
"_id": "61f20e9e123e431219fbc8dd",
"deviceId": "61f20e90123e431219fbc8a1",
"hasGetter": false,
"hasSetter": true,
"name": "take_snapshot",
"show": true,
"value": 0,
"valueFormatted": "0",
"valueType": "int"
},
{
"_id": "61f913d3123e431861dde865",
"deviceId": "61f20e90123e431219fbc8a1",
"elementType": "array.string",
"elementsMaxNumber": 2,
"hasGetter": true,
"hasSetter": false,
"name": "camera_diagnostic",
"show": true,
"value": {
"61f20e9d123e431219fbc8d4": [
"cloud_tunnel_established",
"cloud_tunnel_rejected",
"camera_accumulated_delay"
]
},
"valueFormatted": "",
"valueType": "dictionary"
}
]
},
"sender": {
"conn_id": "002026ef-aa69-4add-8e22-625d1df2c7be",
"type": "ui"
}
}
Items of interest seen in the above list are “Camera Stream” this is the RTSP stream. Note its IP proxied is via the Ezlo Plus controller, not the VistaCam’s own direct IP address.
“make_recording” presumably if you change its value from 0 to 1 it would make a recording?
"_id": "61f20e9d123e431219fbc8d7",
"deviceId": "61f20e90123e431219fbc8a1",
"hasGetter": false,
"hasSetter": true,
"maxValue": 60,
"minValue": 15,
"name": "make_recording",
"show": true,
"value": 0,
"valueFormatted": "0",
"valueType": "int"
“stop_recording”
"_id": "61f20e9e123e431219fbc8dc",
"deviceId": "61f20e90123e431219fbc8a1",
"hasGetter": false,
"hasSetter": true,
"name": "stop_recording",
"show": true,
"value": 0,
"valueFormatted": "0",
"valueType": "int"
“take_snapshot”
"_id": "61f20e9e123e431219fbc8dd",
"deviceId": "61f20e90123e431219fbc8a1",
"hasGetter": false,
"hasSetter": true,
"name": "take_snapshot",
"show": true,
"value": 0,
"valueFormatted": "0",
"valueType": "int"
The motion sensor portion of the camera device is presumably a child device with a different device ID and device type.
"deviceTypeId": "foscam_vistacam1203_sensor.motion",
Listing this devices items I got this, showing the motion sensors trip state the value being true or false etc.
{
"api": "1.0",
"error": null,
"id": "1677590471009",
"method": "hub.items.list",
"result": {
"items": [
{
"_id": "61f20e91123e431219fbc8a3",
"deviceId": "61f20e91123e431219fbc8a2",
"hasGetter": true,
"hasSetter": false,
"name": "motion",
"show": true,
"value": false,
"valueFormatted": "false",
"valueType": "bool"
}
]
},
"sender": {
"conn_id": "002026ef-aa69-4add-8e22-625d1df2c7be",
"type": "ui"
}
}
As for the cameras settings I got these settings listed from the API
"name": "reboot"
"name": "contrast"
"name": "flip_image"
"name": "time_format"
"name": "chime_type"
"name": "hue"
"name": "wifi_signal"
"name": "ir_led"
"name": "voice_enable_state"
"name": "power_type"
"name": "ringtone"
"name": "speaker_volume"
"name": "speaker_volume"
"name": "network_auto_adaptability"
"name": "date_format"
"name": "reset_image_settings"
"name": "privacy_mask"
"name": "saturation"
"name": "high_dynamic_range"
"name": "mirror_image"
"name": "chime_ring_time"
"name": "sharpness"
"name": "status_led"
"name": "brightness"