20.68.131.221
As of: Jul 19, 2025 10:52am UTC |
Latest
Basic Information
- Forward DNS
- services.mavistech.cloud, anytest.mavistech.cloud, ocr.mavistech.cloud, assistant.mavistech.cloud, face.mavistech.cloud, ...
- Routing
- 20.64.0.0/10 via MICROSOFT-CORP-MSN-AS-BLOCK, US (AS8075)
- OS
- Ubuntu Linux
- Services (9)
- 22/SSH, 80/HTTP, 443/HTTP, 5000/HTTP, 5001/HTTP, 5002/HTTP, 5005/HTTP, 8001/HTTP, 8002/HTTP
- Labels
- Bootstrap Default Landing Page Remote Access
Details
Host Key
- Algorithm
- ecdsa-sha2-nistp256
- Fingerprint
- bdbd4015cfb8d48b42180bcbac017ca3c0958b14837b78943f23dd331428dbc9
Negotiated
- Key Exchange
- [email protected]
- Symmetric Cipher
- aes128-ctr [] aes128-ctr []
- MAC
- hmac-sha2-256 [] hmac-sha2-256 []
Details
http://20.68.131.221/
- Status
- 200 OK
- Body Hash
-
sha1:c51a3f0e6de4eb802d5630941c3fd9e1d0efae4b
- HTML Title
-
Welcome to nginx!
- Response Body
-
# Welcome to nginx! If you see this page, the nginx web server is successfully installed and working. Further configuration is required. For online documentation and support please refer to [nginx.org](http://nginx.org/). Commercial support is available at [nginx.com](http://nginx.com/). _Thank you for using nginx._
Details
https://20.68.131.221/
- Status
- 502 Bad Gateway
- Body Hash
-
sha1:4227bb1e60f7fd4295b358e51e5fc9a54c37f910
- HTML Title
-
502 Bad Gateway
- Response Body
-
# 502 Bad Gateway * * * nginx/1.24.0 (Ubuntu)
TLS
Handshake
- Version Selected
- TLSv1_3
- Cipher Selected
- TLS_CHACHA20_POLY1305_SHA256
Certificate
- Fingerprint
- 5f01e82c05e8b7117b430bbb6a5ed67677c518d00f8b36bc79b9be4b453683a6
- Subject
- CN=anytest.mavistech.cloud
- Issuer
- C=US, O=Let's Encrypt, CN=E6
- Names
- anytest.mavistech.cloud
Fingerprint
Details
http://20.68.131.221:5000/
- Status
- 200 OK
- Body Hash
-
sha1:4698154328131a2ad6155fc1ec4d30b5cdd7275e
- HTML Title
-
Stateful Navigation API (Split Audio/Data + Integrated Milestones)
- Response Body
-
# Stateful Navigation API (Split Audio/Data + Integrated Milestones) API for audio-driven, turn-by-turn navigation. Uses a **split audio/data flow** for initiation. Navigation steps are provided intelligently based on proximity/time. Nearby user-defined Milestones are announced directly within navigation instructions. ## Core Details * **Base URL:** `http://20.68.131.221:5000` * **Authentication:** Requires `Authentication: YOUR_USER_ID` header for all endpoints. * **Input Audio:** Raw binary to `/upload_audio`. * **Output Audio:** Base64 encoded WAV (16Khz, 16-bit Mono PCM) in JSON responses. * **Data Requests:** Use `application/json` for location/context endpoints. * * * ## Audio Navigation Workflow The main flow involves multiple steps due to separate audio/data submission and the stateful step loop: ### Step 1: Upload Query Audio `POST /upload_audio` Uploads the user's spoken destination query. #### Input * **Header:** `Authentication: YOUR_USER_ID` * **Body:** Raw binary audio data. #### Output (JSON) { "status": "AudioReceived", "upload_id": "up_..." } Save the `upload_id`. ### Step 2: Send Location for Query `POST /process_query_location` Processes the query using the uploaded audio and location. Fetches milestones if navigation starts. #### Input (`application/json`) { "upload_id": "up_...", // From Step 1 "latitude": float, "longitude": float, "heading": float // Optional } #### Output (JSON) - Key Scenarios * Status: "AwaitingSelection" * POI options found. Play `audio_response_b64` or use TTS on `prompt_text`. * Save `state_id` (e.g., `poi_...`) for Step 4. * Status: "NavigationStarted" * Direct navigation begins. * Play `initial_audio_steps_b64` list or use TTS on `initial_steps_text` list (first few steps, may include milestone announcements at the start). * Save `navigation_session_id` (e.g., `nav_...`) for Step 5 onwards. * Status: "Error" (4xx/5xx) * Play `audio_response_b64` or use TTS on `error_message`. * * * **\--- If Status was "AwaitingSelection", proceed to Steps 3 & 4 ---** ### Step 3: Upload Selection Audio `POST /upload_audio` Uploads the user's spoken POI option number. #### Input * **Header:** `Authentication: YOUR_USER_ID` * **Body:** Raw binary audio data. #### Output (JSON) { "status": "AudioReceived", "upload_id": "up_..." } Save the NEW `upload_id`. ### Step 4: Send Selection Context `POST /process_selection_location` Processes the selection, starts navigation, and fetches milestones. #### Input (`application/json`) { "upload_id": "up_...", // From Step 3 "state_id": "poi_..." // From Step 2 } #### Output (JSON) - Key Scenarios * Status: "NavigationStarted" * POI selected. Navigation begins. * Play `initial_audio_steps_b64` list or use TTS on `initial_steps_text` list (first few steps, may include milestone announcements at the start). * Save `navigation_session_id` (e.g., `nav_...`) for Step 5 onwards. * Status: "Error" (4xx/5xx) * Selection failed. Play `audio_response_b64` or use TTS on `error_message`. * May return original `state_id` for retry of Steps 3 & 4. * * * **\--- If Status was "NavigationStarted" (from Step 2 or Step 4), proceed to Step 5 ---** ### Step 5: Get Next Steps (Repeat with Smart Logic + Integrated Milestones) `POST /get_next_steps` Call periodically (e.g., every 5-10s). Server checks proximity to next turn AND nearby milestones, returning relevant instructions only. #### Input: `application/json` { "navigation_session_id": "nav_...", // Session ID from Step 2 or 4 "latitude": CURRENT_LATITUDE, "longitude": CURRENT_LONGITUDE, "heading": CURRENT_HEADING // Optional } #### Output (JSON) - Key Scenarios (200 OK) * Status: "NextSteps" * **Condition:** User near next maneuver OR time threshold met. * **Action:** Play `audio_steps_b64` list or use TTS on `steps_text` list. Nearby milestone announcements (e.g., "Park Gate ahead.") will be included as items at the beginning of these lists if applicable. * Repeat Step 5. * Status: "ApproachingDestination" * **Condition:** Same as "NextSteps", but batch includes arrival step. * **Action:** Play `audio_steps_b64` / use TTS on `steps_text`. Milestone announcements may be prepended. * Repeat Step 5 (optional). * Status: "OnRoute" * **Condition:** No new navigation step needed yet. * **Action:** Play optional `audio_message_b64` or use TTS on `message`. This message will include nearby milestone announcements prepended if applicable (e.g., "Library to your right. Continue. Next turn in 80 meters."). * Repeat Step 5. * Status: "Arrived" * **Condition:** Server determines arrival. * **Action:** Play `audio_message_b64` OR use TTS on `message`. * Stop calling this endpoint. * Status: "Error" (4xx/5xx) * **Condition:** Session invalid, internal error, etc. * **Action:** Use TTS on `error_message`. * Stop calling this endpoint. Milestone announcements are now part of the main audio/text fields, not a separate list. * * * ## Other Endpoints ### Text POI Search `POST /search_poi` (Stateless) Input JSON: {"query", "latitude", "longitude"}. Returns JSON: {"status":"ok", "results": [...]}. ### Start Text Navigation `POST /navigate` (Starts stateful session) Input JSON: {"destination_query", ...}. Returns JSON: {"status":"NavigationStarted", "navigation_session_id", ...}. Use `/get_next_steps` to continue. ### API Documentation `GET /` Returns this HTML documentation.
Details
http://20.68.131.221:5001/
- Status
- 200 OK
- Body Hash
-
sha1:9747567304e9a82322117b5a3500a28bef910591
- HTML Title
-
Voice Assistant API (Binary V3)
- Response Body
-
# Voice Assistant API (Binary Input & Portal Messaging) Processes raw binary audio or text. Handles commands (Call/SMS enriched via Contact & Portal APIs) and general AI queries. **Auth:** `Authentication: ` header required for `/assistant`, `/api/text`. **Logic:** 1\. Hardcoded commands (Call/SMS try contact lookup). 2. AI fallback for Nav/Call/SMS (tries contact lookup). 3. Message to "PORTAL" uses dedicated API. 4. General AI. **Commands always return JSON.** ### POST /assistant Body: Raw PCM audio (e.g., `Content-Type: audio/l16; rate=16000`) Response: Command JSON (`Result:0, X-Response-Type:command`) or AI Text (`Result:0, X-Response-Type:ai_text`) or AI Audio Stream (`Result:1, X-Response-Type:ai_audio` with `X-Response-Text` header). // Example Command Response (Call Mom) { "feature": 7, "parameters": { "who": "Mom", "to": "+123...", "contact_name": "Mom (Mobile)" } } // Example Command Response (Message Portal Success - Handled by Server, User gets Confirmation via AI Text/Audio) // The direct response from /assistant would be the confirmation text/audio. // If you need ESP32 to know portal message was attempted, server would need to send command JSON like: // { "feature": 9, "parameters": { "recipient": "PORTAL", "status": "sent_to_portal", "api_response": { ...portal_api_json_response... } } } // Current logic: if portal send succeeds/fails, it returns (user_message, False) to trigger AI text/audio response. ### POST /api/text Body: JSON `{"text": "user query"}` Response: Command JSON or AI Text JSON `{"response": "...", "is_command": false}`. ### GET /health Service status.
Details
http://20.68.131.221:5002/
- Status
- 200 OK
- Body Hash
-
sha1:641088feefe8fc49ddcff40ad8cff99ceee9d457
- HTML Title
-
Mavis Tech Service Status
- Response Body
-
 Last checked: 2025-07-19 07:54:35 ## APIs __GPS API <https://gps.mavistech.cloud> __Online (200) __OCR API <https://ocr.mavistech.cloud> __Offline (502) __Photo Viewer - OCR <http://20.68.131.221:8001> __Online (200) __Photo Viewer - Scene <http://20.68.131.221:8002> __Online (200) __Scene API <https://scene.mavistech.cloud> __Offline (502) __Voice Assistant API <https://assistant.mavistech.cloud> __Online (200) ## Device Management __ESP32 Management <http://20.117.120.208:8003> __Online (200) ## Websites & Portals __Admin Panel <http://20.117.120.208:8000/admin/> __Online (200) __Customer Portal <https://office.mavistech.uk> __Online (200) __OTA Update Portal <http://20.117.120.208:5002> __Online (200) __PBX Portal <https://pbx.mavistech.cloud/admin/config.php> __Online (200)
Details
http://20.68.131.221:5005/
- Status
- 200 OK
- Body Hash
-
sha1:b71827c1109fec21e476b85fac18e42dc777814d
- HTML Title
-
Face Recognition API Documentation (v2.2)
- Response Body
-
# Face Recognition API Documentation (v2.2) For ESP32 and other client integrations. **Base URL:** `http://:` (e.g., `http://20.68.131.221:5005`) **Authentication Required:** All API endpoints (except `/`, `/docs`, and `/ping`) now require an `Authentication` HTTP header. The value of this header must be the valid device/user UID. Authentication: YOUR_DEVICE_UID ## 1\. Recognize Faces in an Image This section describes how to send an image for face recognition. The primary method for ESP32 is sending raw binary image data. An alternative multipart method is also available. * * * ### 1.1 Recognize via Raw Binary Image (Recommended for ESP32) This endpoint takes raw binary image data directly in the request body and attempts to identify known persons previously registered under the UID provided in the `Authentication` header. The response format (text or audio) depends on the user's preference. #### Endpoint Details: * **Method:** `POST` * **URL:** `/recognize_binary` * **Authentication:** Required (UID in `Authentication` header). #### Request Format: The request body **is the raw binary image data** (e.g., JPEG, PNG bytes). #### Required Headers: Header Name | Example Value | Description ---|---|--- `Authentication` | `YOUR_DEVICE_UID` | The unique device/user UID. `Content-Type` | `image/jpeg` | **Crucial.** The MIME type of the image being sent (e.g., `image/jpeg`, `image/png`). #### Example `curl` Request (Binary Body): curl -X POST \ http://:5005/recognize_binary \ -H "Authentication: YOUR_DEVICE_UID" \ -H "Content-Type: image/jpeg" \ --data-binary "@/path/to/scene_with_faces.jpg" \ --output recognized_output --dump-header headers.txt # Note: --data-binary sends the file content as raw binary. # --output and --dump-header are for observing the response. **ESP32 Client Notes (Binary Upload):** * This is generally simpler for ESP32. * Ensure the `Authentication` header is set. * **Must set the `Content-Type` header** correctly (e.g., "image/jpeg" if sending a JPEG from ESP32-CAM). * The HTTP request body should contain only the raw bytes of the image. ### Response Format (Based on User Preference - Applies to both /recognize_binary and /recognize) The server queries an external API to determine the user's preferred response format (Text or Audio) based on the authenticated UID. The HTTP status code (e.g., `200 OK` or `500 Internal Server Error`) remains a primary indicator of overall request success or critical failure. #### A. Text Preference (or Audio Fallback) * **HTTP Status Code:** `200 OK` (for successful processing, even if no faces are found/recognized) or `500 Internal Server Error` (if there was a server-side issue like loading registered faces). * **Headers:** * `Content-Type: text/plain` * `Result: 0` * `X-Response-Type: ai_text` (This type is used for all text responses, whether normal informational messages, successful recognitions, or error descriptions that are presented as text.) * `X-Response-Type: ai_text_fallback` (This type is used if audio was preferred but TTS was unavailable, so a text response is provided instead. The content will be similar to `ai_text`.) * **Body:** Plain text string describing the outcome. Examples: I see Alice Wonderland. I see one person, but I don't recognize them. (Audio unavailable) No faces are registered for your user ID YOUR_DEVICE_UID. Error loading registered faces for your user ID YOUR_DEVICE_UID. Please contact support. I couldn't detect any faces in the image you sent. #### B. Audio Preference * **HTTP Status Code:** `200 OK` or `500 Internal Server Error` (as above). * **Headers:** * `Content-Type: audio/x-raw` (PCM, 16kHz, 16-bit Mono) * `Result: 1` * `X-Response-Type: ai_audio` (This type is used for all audio responses. The spoken content will indicate success, information, or an error.) * `Transfer-Encoding: chunked` (Audio is streamed) * `X-Response-Text: ` (Optional, for client reference/debugging. Newlines removed. This text reflects what is spoken, be it success or an error description.) * **Body:** Streamed raw PCM audio data. The client needs to be able to play this format. The spoken audio will convey the result (e.g., "I see Alice," or "Error: No faces were detected"). **Handling Responses on ESP32:** * First, check the HTTP Status Code for overall success/failure of the API call. * Then, check the `Result` header (`0` for Text, `1` for Audio) and `Content-Type` to determine how to process the body. * If audio (`Result: 1`, `Content-Type: audio/x-raw`), the client should read the body as a stream of raw audio bytes and send it to an appropriate audio output peripheral (e.g., I2S DAC). * The `X-Response-Text` header provides the text version of what was spoken, which can be useful for debugging or displaying if needed. * The content of the text or audio itself will describe the specific outcome of the recognition attempt (e.g., names recognized, no faces found, error messages). ### General Error Responses (for /recognize_binary and /recognize, non- preference specific for critical client errors): **400 Bad Request:** * (for `/recognize_binary`) Missing/invalid `Content-Type` header: {"error": "Missing or invalid 'Content-Type' header..."} * (for `/recognize_binary`) No image data in body: {"error": "No image data found in request body."} * (for `/recognize` multipart) Missing image file: {"error": "No image file provided"} **401 Unauthorized:** (Missing or malformed `Authentication` header) {"error": "Authentication header required (containing UID)"} **403 Forbidden:** (UID in `Authentication` header is invalid/unverified) {"error": "Invalid or unverifiable UID"} **500 Internal Server Error:** (e.g., major database issue before preference check. For other 500s where preference *can* be checked, it tries to use preferred format for the error message itself.) {"error": "An internal error occurred."} * * * ### 1.2 Recognize via Multipart Form Data (Alternative) This endpoint also recognizes faces but expects the image as part of a `multipart/form-data` request. This might be used by clients other than ESP32 or if the ESP32 library handles multipart better for some reason. #### Endpoint Details: * **Method:** `POST` * **URL:** `/recognize` * **Authentication:** Required (UID in `Authentication` header). #### Request Format (Multipart): The request must be a `multipart/form-data` POST request. ##### Required Headers: * `Authentication: YOUR_DEVICE_UID` ##### Form Fields: Field Name | Type | Description | Required ---|---|---|--- `image` | File (image/jpeg, image/png) | The image file captured by the device, containing faces to be recognized. | Yes #### Example `curl` Request (Multipart): curl -X POST \ http://:5005/recognize \ -H "Authentication: YOUR_DEVICE_UID" \ -F "image=@/path/to/scene_with_faces.jpg" \ --output recognized_output --dump-header headers.txt **Response Format:** Same as for `/recognize_binary` (see section 1.1 Response Format above). ## 2\. Register a New Face This endpoint allows you to register one or more images for a specific person. The UID for registration is taken from the `Authentication` header. ### Endpoint Details: * **Method:** `POST` * **URL:** `/register` * **Authentication:** Required (UID in `Authentication` header). ### Request Format: The request must be a `multipart/form-data` POST request. #### Required Headers: * `Authentication: YOUR_DEVICE_UID` #### Form Fields: Field Name | Type | Description | Required ---|---|---|--- `name` | String | The name of the person whose face is being registered. This name will be used in recognition responses. | Yes `image` | File (image/jpeg, image/png) | The image file containing a clear, single face to be registered. | Yes #### Example `curl` Request: curl -X POST \ http://:5005/register \ -H "Authentication: YOUR_DEVICE_UID" \ -F "name=Alice Wonderland" \ -F "image=@/path/to/alice_center.jpg" **ESP32 Client Notes (Register):** * Ensure the `Authentication` header is set with the device UID. * Construct a `multipart/form-data` request. Libraries like `HTTPClient` on ESP32 can help manage this. * Send one image per request for optimal registration. ### Registration Image Guidance: For robust recognition, especially with variable camera quality like ESP32-CAM, we **strongly recommend registering multiple photos per person**. Call the `/register` endpoint multiple times (once for each photo) with the same `Authentication` header UID and the same `name`, but a different image file. Suggested poses/conditions for registration images (clear, well-lit, single face): * **Center (Neutral):** Looking directly at the camera, neutral expression. * **Center (Smiling):** Looking directly at the camera, smiling. * **Look Left (Slightly):** Head turned slightly to their left. * **Look Right (Slightly):** Head turned slightly to their right. * _(Optional)_ Images from the ESP32-CAM itself under typical operating conditions. Aim for **3-5 diverse images per person**. The API registers the first face detected in the submitted image. ### Success Response (201 Created): { "message": "Successfully registered face for Alice Wonderland under authenticated UID YOUR_DEVICE_UID" } ### Error Responses (Register): **400 Bad Request:** (e.g., missing fields, no face in image, name empty) {"error": "No face found in the provided image"} **401 Unauthorized:** (Missing or malformed `Authentication` header) {"error": "Authentication header required (containing UID)"} **403 Forbidden:** (UID in `Authentication` header is invalid/unverified) {"error": "Invalid or unverifiable UID"} **500 Internal Server Error:** (e.g., database issue) {"error": "Database error during registration."} ## 3\. Manage Registered Faces These endpoints allow listing and deleting registered face entries for the authenticated UID. * * * ### 3.1 List Registered Faces Retrieves a list of all face entries (individual image registrations) associated with the authenticated UID. #### Endpoint Details: * **Method:** `GET` * **URL:** `/faces/list` * **Authentication:** Required (UID in `Authentication` header). #### Example `curl` Request: curl -X GET \ http://:5005/faces/list \ -H "Authentication: YOUR_DEVICE_UID" #### Success Response (200 OK): If faces are registered: { "message": "Successfully retrieved registered faces.", "registered_face_entries": [ {"id": 1, "name": "Alice"}, {"id": 2, "name": "Bob"}, {"id": 5, "name": "Alice"} ] } If no faces are registered: { "message": "No faces are currently registered for this UID.", "registered_persons": [] } The `id` in each entry is the unique database identifier for that specific image registration. It is used for deletion. ### Error Responses (List Faces): **401 Unauthorized / 403 Forbidden:** Standard authentication errors. **500 Internal Server Error:** (e.g., database issue) {"error": "A database error occurred while retrieving face list."} * * * ### 3.2 Delete a Specific Face Entry Deletes a single registered face entry using its unique `id`. The entry must belong to the authenticated UID. #### Endpoint Details: * **Method:** `DELETE` * **URL:** `/faces/delete/` (Replace `` with the actual ID from the list, e.g., `/faces/delete/5`) * **Authentication:** Required (UID in `Authentication` header). #### URL Parameters: Parameter | Type | Description ---|---|--- `` | Integer | The unique ID of the face entry to delete (obtained from the `/faces/list` endpoint). #### Example `curl` Request: curl -X DELETE \ http://:5005/faces/delete/5 \ -H "Authentication: YOUR_DEVICE_UID" #### Success Response (200 OK): { "message": "Successfully deleted face entry for 'Alice' (ID: 5)." } ### Error Responses (Delete Face): **401 Unauthorized / 403 Forbidden:** Standard authentication errors. **404 Not Found:** If the `face_id` does not exist, or if it exists but does not belong to the authenticated UID. {"error": "Face entry not found or not authorized for deletion."} **500 Internal Server Error:** (e.g., database issue) {"error": "A database error occurred during face deletion."} ## 4\. Ping (Health Check) A simple endpoint to check if the server is alive and responding. Does not require authentication. ### Endpoint Details: * **Method:** `GET` * **URL:** `/ping` * **Authentication:** Not Required. ### Success Response (200 OK): { "message": "Pong! Face Recognition Server is alive." } **ESP32-CAM Image Quality:** The reliability of face recognition heavily depends on the image quality provided by the ESP32-CAM. Poor lighting, motion blur, low resolution, and incorrect focus will significantly reduce accuracy. Optimize image capture on the ESP32 side as much as possible.
Details
http://20.68.131.221:8001/
- Status
- 200 OK
- Body Hash
-
sha1:779b6221f9da60c9f6a30ecf963b81787ea4142e
- HTML Title
-
Real-time Photo Feed
- Response Body
-
# OCR Photo Feed Connecting... [  ](/photos/text_read_transformed_82.A5.5E.FF.AC.A1_20250717_125756.jpg) text_read_transformed_82.A5.5E.FF.AC.A1_20250717_125756.jpg [ Download ](/photos/text_read_transformed_82.A5.5E.FF.AC.A1_20250717_125756.jpg) [  ](/photos/text_read_transformed_82.A5.5E.FF.AC.A1_20250717_082928.jpg) text_read_transformed_82.A5.5E.FF.AC.A1_20250717_082928.jpg [ Download ](/photos/text_read_transformed_82.A5.5E.FF.AC.A1_20250717_082928.jpg) [  ](/photos/text_read_transformed_82.A5.5E.FF.AC.A1_20250717_072501.jpg) text_read_transformed_82.A5.5E.FF.AC.A1_20250717_072501.jpg [ Download ](/photos/text_read_transformed_82.A5.5E.FF.AC.A1_20250717_072501.jpg) [  ](/photos/text_read_transformed_22.ED.FB.7C.EC.0E_20250716_120235.jpg) text_read_transformed_22.ED.FB.7C.EC.0E_20250716_120235.jpg [ Download ](/photos/text_read_transformed_22.ED.FB.7C.EC.0E_20250716_120235.jpg) [  ](/photos/text_read_transformed_82.A5.5E.FF.AC.A1_20250715_213457.jpg) text_read_transformed_82.A5.5E.FF.AC.A1_20250715_213457.jpg [ Download ](/photos/text_read_transformed_82.A5.5E.FF.AC.A1_20250715_213457.jpg) [  ](/photos/text_read_transformed_82.A5.5E.FF.AC.A1_20250715_202318.jpg) text_read_transformed_82.A5.5E.FF.AC.A1_20250715_202318.jpg [ Download ](/photos/text_read_transformed_82.A5.5E.FF.AC.A1_20250715_202318.jpg) [  ](/photos/text_read_transformed_82.A5.5E.FF.AC.A1_20250715_202307.jpg) text_read_transformed_82.A5.5E.FF.AC.A1_20250715_202307.jpg [ Download ](/photos/text_read_transformed_82.A5.5E.FF.AC.A1_20250715_202307.jpg) [  ](/photos/text_read_transformed_82.A5.5E.FF.AC.A1_20250715_202256.jpg) text_read_transformed_82.A5.5E.FF.AC.A1_20250715_202256.jpg [ Download ](/photos/text_read_transformed_82.A5.5E.FF.AC.A1_20250715_202256.jpg) [  ](/photos/text_read_transformed_82.A5.5E.FF.AC.A1_20250715_202244.jpg) text_read_transformed_82.A5.5E.FF.AC.A1_20250715_202244.jpg [ Download ](/photos/text_read_transformed_82.A5.5E.FF.AC.A1_20250715_202244.jpg) [  ](/photos/text_read_transformed_82.A5.5E.FF.AC.A1_20250715_195618.jpg) text_read_transformed_82.A5.5E.FF.AC.A1_20250715_195618.jpg [ Download ](/photos/text_read_transformed_82.A5.5E.FF.AC.A1_20250715_195618.jpg) [  ](/photos/text_read_transformed_82.A5.5E.FF.AC.A1_20250715_195542.jpg) text_read_transformed_82.A5.5E.FF.AC.A1_20250715_195542.jpg [ Download ](/photos/text_read_transformed_82.A5.5E.FF.AC.A1_20250715_195542.jpg) [  ](/photos/text_read_transformed_82.A5.5E.FF.AC.A1_20250714_190108.jpg) text_read_transformed_82.A5.5E.FF.AC.A1_20250714_190108.jpg [ Download ](/photos/text_read_transformed_82.A5.5E.FF.AC.A1_20250714_190108.jpg) [  ](/photos/text_read_transformed_82.A5.5E.FF.AC.A1_20250714_190016.jpg) text_read_transformed_82.A5.5E.FF.AC.A1_20250714_190016.jpg [ Download ](/photos/text_read_transformed_82.A5.5E.FF.AC.A1_20250714_190016.jpg) [  ](/photos/text_read_transformed_82.A5.5E.FF.AC.A1_20250714_185659.jpg) text_read_transformed_82.A5.5E.FF.AC.A1_20250714_185659.jpg [ Download ](/photos/text_read_transformed_82.A5.5E.FF.AC.A1_20250714_185659.jpg) [  ](/photos/text_read_transformed_82.A5.5E.FF.AC.A1_20250714_184518.jpg) text_read_transformed_82.A5.5E.FF.AC.A1_20250714_184518.jpg [ Download ](/photos/text_read_transformed_82.A5.5E.FF.AC.A1_20250714_184518.jpg) [  ](/photos/text_read_transformed_42.87.04.15.D8.05_20250630_100244.jpg) text_read_transformed_42.87.04.15.D8.05_20250630_100244.jpg [ Download ](/photos/text_read_transformed_42.87.04.15.D8.05_20250630_100244.jpg) [  ](/photos/text_read_transformed_4A.44.78.63.49.44_20250614_081439.jpg) text_read_transformed_4A.44.78.63.49.44_20250614_081439.jpg [ Download ](/photos/text_read_transformed_4A.44.78.63.49.44_20250614_081439.jpg) [  ](/photos/text_read_transformed_63.C1.A4.CD.3F.F4_20250613_143546.jpg) text_read_transformed_63.C1.A4.CD.3F.F4_20250613_143546.jpg [ Download ](/photos/text_read_transformed_63.C1.A4.CD.3F.F4_20250613_143546.jpg) [  ](/photos/text_read_transformed_63.C1.A4.CD.3F.F4_20250613_142604.jpg) text_read_transformed_63.C1.A4.CD.3F.F4_20250613_142604.jpg [ Download ](/photos/text_read_transformed_63.C1.A4.CD.3F.F4_20250613_142604.jpg) [  ](/photos/text_read_transformed_63.C1.A4.CD.3F.F4_20250613_124651.jpg) text_read_transformed_63.C1.A4.CD.3F.F4_20250613_124651.jpg [ Download ](/photos/text_read_transformed_63.C1.A4.CD.3F.F4_20250613_124651.jpg) [  ](/photos/text_read_transformed_63.C1.A4.CD.3F.F4_20250613_124605.jpg) text_read_transformed_63.C1.A4.CD.3F.F4_20250613_124605.jpg [ Download ](/photos/text_read_transformed_63.C1.A4.CD.3F.F4_20250613_124605.jpg) [  ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250612_091615.jpg) text_read_transformed_EB.48.4A.FB.AF.4D_20250612_091615.jpg [ Download ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250612_091615.jpg) [  ](/photos/text_read_transformed_63.C1.A4.CD.3F.F4_20250611_194520.jpg) text_read_transformed_63.C1.A4.CD.3F.F4_20250611_194520.jpg [ Download ](/photos/text_read_transformed_63.C1.A4.CD.3F.F4_20250611_194520.jpg) [  ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250610_143410.jpg) text_read_transformed_EB.48.4A.FB.AF.4D_20250610_143410.jpg [ Download ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250610_143410.jpg) [  ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250610_143313.jpg) text_read_transformed_EB.48.4A.FB.AF.4D_20250610_143313.jpg [ Download ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250610_143313.jpg) [  ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250610_143206.jpg) text_read_transformed_EB.48.4A.FB.AF.4D_20250610_143206.jpg [ Download ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250610_143206.jpg) [  ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250610_142930.jpg) text_read_transformed_EB.48.4A.FB.AF.4D_20250610_142930.jpg [ Download ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250610_142930.jpg) [  ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250610_142910.jpg) text_read_transformed_EB.48.4A.FB.AF.4D_20250610_142910.jpg [ Download ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250610_142910.jpg) [  ](/photos/text_read_transformed_93.08.40.DC.EB.AF_20250610_142801.jpg) text_read_transformed_93.08.40.DC.EB.AF_20250610_142801.jpg [ Download ](/photos/text_read_transformed_93.08.40.DC.EB.AF_20250610_142801.jpg) [  ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250610_142755.jpg) text_read_transformed_EB.48.4A.FB.AF.4D_20250610_142755.jpg [ Download ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250610_142755.jpg) [  ](/photos/text_read_transformed_93.08.40.DC.EB.AF_20250610_142745.jpg) text_read_transformed_93.08.40.DC.EB.AF_20250610_142745.jpg [ Download ](/photos/text_read_transformed_93.08.40.DC.EB.AF_20250610_142745.jpg) [  ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250610_142622.jpg) text_read_transformed_EB.48.4A.FB.AF.4D_20250610_142622.jpg [ Download ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250610_142622.jpg) [  ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250610_142543.jpg) text_read_transformed_EB.48.4A.FB.AF.4D_20250610_142543.jpg [ Download ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250610_142543.jpg) [  ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250610_142500.jpg) text_read_transformed_EB.48.4A.FB.AF.4D_20250610_142500.jpg [ Download ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250610_142500.jpg) [  ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250610_140841.jpg) text_read_transformed_EB.48.4A.FB.AF.4D_20250610_140841.jpg [ Download ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250610_140841.jpg) [  ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250610_140440.jpg) text_read_transformed_EB.48.4A.FB.AF.4D_20250610_140440.jpg [ Download ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250610_140440.jpg) [  ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250610_135914.jpg) text_read_transformed_EB.48.4A.FB.AF.4D_20250610_135914.jpg [ Download ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250610_135914.jpg) [  ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250610_114721.jpg) text_read_transformed_EB.48.4A.FB.AF.4D_20250610_114721.jpg [ Download ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250610_114721.jpg) [  ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250610_114644.jpg) text_read_transformed_EB.48.4A.FB.AF.4D_20250610_114644.jpg [ Download ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250610_114644.jpg) [  ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250610_113712.jpg) text_read_transformed_EB.48.4A.FB.AF.4D_20250610_113712.jpg [ Download ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250610_113712.jpg) [  ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250610_113119.jpg) text_read_transformed_EB.48.4A.FB.AF.4D_20250610_113119.jpg [ Download ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250610_113119.jpg) [  ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250610_112341.jpg) text_read_transformed_EB.48.4A.FB.AF.4D_20250610_112341.jpg [ Download ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250610_112341.jpg) [  ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250610_112320.jpg) text_read_transformed_EB.48.4A.FB.AF.4D_20250610_112320.jpg [ Download ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250610_112320.jpg) [  ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250610_112151.jpg) text_read_transformed_EB.48.4A.FB.AF.4D_20250610_112151.jpg [ Download ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250610_112151.jpg) [  ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250610_111449.jpg) text_read_transformed_EB.48.4A.FB.AF.4D_20250610_111449.jpg [ Download ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250610_111449.jpg) [  ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250610_111048.jpg) text_read_transformed_EB.48.4A.FB.AF.4D_20250610_111048.jpg [ Download ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250610_111048.jpg) [  ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250610_110827.jpg) text_read_transformed_EB.48.4A.FB.AF.4D_20250610_110827.jpg [ Download ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250610_110827.jpg) [  ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250610_105158.jpg) text_read_transformed_EB.48.4A.FB.AF.4D_20250610_105158.jpg [ Download ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250610_105158.jpg) [  ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250610_105125.jpg) text_read_transformed_EB.48.4A.FB.AF.4D_20250610_105125.jpg [ Download ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250610_105125.jpg) [  ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250610_104921.jpg) text_read_transformed_EB.48.4A.FB.AF.4D_20250610_104921.jpg [ Download ](/photos/text_read_transformed_EB.48.4A.FB.AF.4D_20250610_104921.jpg) [  ](/photos/text_read_transformed_4A.44.78.63.49.44_20250608_220724.jpg) text_read_transformed_4A.44.78.63.49.44_20250608_220724.jpg [ Download ](/photos/text_read_transformed_4A.44.78.63.49.44_20250608_220724.jpg) [  ](/photos/text_read_transformed_63.C1.A4.CD.3F.F4_20250608_215911.jpg) text_read_transformed_63.C1.A4.CD.3F.F4_20250608_215911.jpg [ Download ](/photos/text_read_transformed_63.C1.A4.CD.3F.F4_20250608_215911.jpg) [  ](/photos/text_read_transformed_4A.44.78.63.49.44_20250608_215357.jpg) text_read_transformed_4A.44.78.63.49.44_20250608_215357.jpg [ Download ](/photos/text_read_transformed_4A.44.78.63.49.44_20250608_215357.jpg) [  ](/photos/text_read_transformed_63.C1.A4.CD.3F.F4_20250607_085302.jpg) text_read_transformed_63.C1.A4.CD.3F.F4_20250607_085302.jpg [ Download ](/photos/text_read_transformed_63.C1.A4.CD.3F.F4_20250607_085302.jpg) [  ](/photos/text_read_transformed_63.C1.A4.CD.3F.F4_20250606_224901.jpg) text_read_transformed_63.C1.A4.CD.3F.F4_20250606_224901.jpg [ Download ](/photos/text_read_transformed_63.C1.A4.CD.3F.F4_20250606_224901.jpg) [  ](/photos/text_read_transformed_63.C1.A4.CD.3F.F4_20250606_224605.jpg) text_read_transformed_63.C1.A4.CD.3F.F4_20250606_224605.jpg [ Download ](/photos/text_read_transformed_63.C1.A4.CD.3F.F4_20250606_224605.jpg) [  ](/photos/text_read_transformed_63.C1.A4.CD.3F.F4_20250606_223716.jpg) text_read_transformed_63.C1.A4.CD.3F.F4_20250606_223716.jpg [ Download ](/photos/text_read_transformed_63.C1.A4.CD.3F.F4_20250606_223716.jpg) [  ](/photos/text_read_transformed_63.C1.A4.CD.3F.F4_20250606_223636.jpg) text_read_transformed_63.C1.A4.CD.3F.F4_20250606_223636.jpg [ Download ](/photos/text_read_transformed_63.C1.A4.CD.3F.F4_20250606_223636.jpg) [  ](/photos/text_read_transformed_63.C1.A4.CD.3F.F4_20250606_205142.jpg) text_read_transformed_63.C1.A4.CD.3F.F4_20250606_205142.jpg [ Download ](/photos/text_read_transformed_63.C1.A4.CD.3F.F4_20250606_205142.jpg) [  ](/photos/text_read_transformed_63.C1.A4.CD.3F.F4_20250606_200450.jpg) text_read_transformed_63.C1.A4.CD.3F.F4_20250606_200450.jpg [ Download ](/photos/text_read_transformed_63.C1.A4.CD.3F.F4_20250606_200450.jpg) [  ](/photos/text_read_transformed_63.C1.A4.CD.3F.F4_20250606_200418.jpg) text_read_transformed_63.C1.A4.CD.3F.F4_20250606_200418.jpg [ Download ](/photos/text_read_transformed_63.C1.A4.CD.3F.F4_20250606_200418.jpg) [  ](/photos/text_read_transformed_63.C1.A4.CD.3F.F4_20250606_194121.jpg) text_read_transformed_63.C1.A4.CD.3F.F4_20250606_194121.jpg [ Download ](/photos/text_read_transformed_63.C1.A4.CD.3F.F4_20250606_194121.jpg) [  ](/photos/text_read_transformed_63.C1.A4.CD.3F.F4_20250606_191505.jpg) text_read_transformed_63.C1.A4.CD.3F.F4_20250606_191505.jpg [ Download ](/photos/text_read_transformed_63.C1.A4.CD.3F.F4_20250606_191505.jpg) [  ](/photos/text_read_transformed_63.C1.A4.CD.3F.F4_20250606_185635.jpg) text_read_transformed_63.C1.A4.CD.3F.F4_20250606_185635.jpg [ Download ](/photos/text_read_transformed_63.C1.A4.CD.3F.F4_20250606_185635.jpg) [  ](/photos/text_read_transformed_63.C1.A4.CD.3F.F4_20250606_185024.jpg) text_read_transformed_63.C1.A4.CD.3F.F4_20250606_185024.jpg [ Download ](/photos/text_read_transformed_63.C1.A4.CD.3F.F4_20250606_185024.jpg) [  ](/photos/text_read_transformed_63.C1.A4.CD.3F.F4_20250606_184949.jpg) text_read_transformed_63.C1.A4.CD.3F.F4_20250606_184949.jpg [ Download ](/photos/text_read_transformed_63.C1.A4.CD.3F.F4_20250606_184949.jpg) [  ](/photos/text_read_transformed_63.C1.A4.CD.3F.F4_20250606_184853.jpg) text_read_transformed_63.C1.A4.CD.3F.F4_20250606_184853.jpg</di
Details
http://20.68.131.221:8002/
- Status
- 200 OK
- Body Hash
-
sha1:17e4291790001da746f0175e502c3a6478c194fa
- HTML Title
-
Real-time Photo Feed
- Response Body
-
# Scene Desc Photo Feed Connection Status : Good [  ](/photos/OV5640_image_20250717_130146_bat-1_uid82_A5_5E_FF_AC_A1.jpg) OV5640_image_20250717_130146_bat-1_uid82_A5_5E_FF_AC_A1.jpg [ Download ](/photos/OV5640_image_20250717_130146_bat-1_uid82_A5_5E_FF_AC_A1.jpg) [  ](/photos/OV5640_image_20250717_125709_bat-1_uid82_A5_5E_FF_AC_A1.jpg) OV5640_image_20250717_125709_bat-1_uid82_A5_5E_FF_AC_A1.jpg [ Download ](/photos/OV5640_image_20250717_125709_bat-1_uid82_A5_5E_FF_AC_A1.jpg) [  ](/photos/OV5640_image_20250717_111740_bat-1_uid23_F1_42_FF_C2_77.jpg) OV5640_image_20250717_111740_bat-1_uid23_F1_42_FF_C2_77.jpg [ Download ](/photos/OV5640_image_20250717_111740_bat-1_uid23_F1_42_FF_C2_77.jpg) [  ](/photos/OV5640_image_20250717_085132_bat-1_uid23_F1_42_FF_C2_77.jpg) OV5640_image_20250717_085132_bat-1_uid23_F1_42_FF_C2_77.jpg [ Download ](/photos/OV5640_image_20250717_085132_bat-1_uid23_F1_42_FF_C2_77.jpg) [  ](/photos/OV5640_image_20250717_082938_bat-1_uid82_A5_5E_FF_AC_A1.jpg) OV5640_image_20250717_082938_bat-1_uid82_A5_5E_FF_AC_A1.jpg [ Download ](/photos/OV5640_image_20250717_082938_bat-1_uid82_A5_5E_FF_AC_A1.jpg) [  ](/photos/OV5640_image_20250717_082252_bat-1_uid82_A5_5E_FF_AC_A1.jpg) OV5640_image_20250717_082252_bat-1_uid82_A5_5E_FF_AC_A1.jpg [ Download ](/photos/OV5640_image_20250717_082252_bat-1_uid82_A5_5E_FF_AC_A1.jpg) [  ](/photos/OV5640_image_20250717_071800_bat-1_uid82_A5_5E_FF_AC_A1.jpg) OV5640_image_20250717_071800_bat-1_uid82_A5_5E_FF_AC_A1.jpg [ Download ](/photos/OV5640_image_20250717_071800_bat-1_uid82_A5_5E_FF_AC_A1.jpg) [  ](/photos/OV5640_image_20250717_071731_bat-1_uid82_A5_5E_FF_AC_A1.jpg) OV5640_image_20250717_071731_bat-1_uid82_A5_5E_FF_AC_A1.jpg [ Download ](/photos/OV5640_image_20250717_071731_bat-1_uid82_A5_5E_FF_AC_A1.jpg) [  ](/photos/OV5640_image_20250717_071614_bat-1_uid82_A5_5E_FF_AC_A1.jpg) OV5640_image_20250717_071614_bat-1_uid82_A5_5E_FF_AC_A1.jpg [ Download ](/photos/OV5640_image_20250717_071614_bat-1_uid82_A5_5E_FF_AC_A1.jpg) [  ](/photos/OV5640_image_20250717_071540_bat-1_uid82_A5_5E_FF_AC_A1.jpg) OV5640_image_20250717_071540_bat-1_uid82_A5_5E_FF_AC_A1.jpg [ Download ](/photos/OV5640_image_20250717_071540_bat-1_uid82_A5_5E_FF_AC_A1.jpg) [  ](/photos/OV5640_image_20250717_071521_bat-1_uid23_F1_42_FF_C2_77.jpg) OV5640_image_20250717_071521_bat-1_uid23_F1_42_FF_C2_77.jpg [ Download ](/photos/OV5640_image_20250717_071521_bat-1_uid23_F1_42_FF_C2_77.jpg) [  ](/photos/OV5640_image_20250715_230843_bat-1_uid82_A5_5E_FF_AC_A1.jpg) OV5640_image_20250715_230843_bat-1_uid82_A5_5E_FF_AC_A1.jpg [ Download ](/photos/OV5640_image_20250715_230843_bat-1_uid82_A5_5E_FF_AC_A1.jpg) [  ](/photos/OV5640_image_20250715_221729_bat-1_uid82_A5_5E_FF_AC_A1.jpg) OV5640_image_20250715_221729_bat-1_uid82_A5_5E_FF_AC_A1.jpg [ Download ](/photos/OV5640_image_20250715_221729_bat-1_uid82_A5_5E_FF_AC_A1.jpg) [  ](/photos/OV5640_image_20250715_221705_bat-1_uid82_A5_5E_FF_AC_A1.jpg) OV5640_image_20250715_221705_bat-1_uid82_A5_5E_FF_AC_A1.jpg [ Download ](/photos/OV5640_image_20250715_221705_bat-1_uid82_A5_5E_FF_AC_A1.jpg) [  ](/photos/OV5640_image_20250715_195630_bat-1_uid82_A5_5E_FF_AC_A1.jpg) OV5640_image_20250715_195630_bat-1_uid82_A5_5E_FF_AC_A1.jpg [ Download ](/photos/OV5640_image_20250715_195630_bat-1_uid82_A5_5E_FF_AC_A1.jpg) [  ](/photos/OV5640_image_20250715_195518_bat-1_uid82_A5_5E_FF_AC_A1.jpg) OV5640_image_20250715_195518_bat-1_uid82_A5_5E_FF_AC_A1.jpg [ Download ](/photos/OV5640_image_20250715_195518_bat-1_uid82_A5_5E_FF_AC_A1.jpg) [  ](/photos/OV5640_image_20250714_190148_bat-1_uid82_A5_5E_FF_AC_A1.jpg) OV5640_image_20250714_190148_bat-1_uid82_A5_5E_FF_AC_A1.jpg [ Download ](/photos/OV5640_image_20250714_190148_bat-1_uid82_A5_5E_FF_AC_A1.jpg) [  ](/photos/OV5640_image_20250714_190121_bat-1_uid82_A5_5E_FF_AC_A1.jpg) OV5640_image_20250714_190121_bat-1_uid82_A5_5E_FF_AC_A1.jpg [ Download ](/photos/OV5640_image_20250714_190121_bat-1_uid82_A5_5E_FF_AC_A1.jpg) [  ](/photos/OV5640_image_20250714_185633_bat-1_uid82_A5_5E_FF_AC_A1.jpg) OV5640_image_20250714_185633_bat-1_uid82_A5_5E_FF_AC_A1.jpg [ Download ](/photos/OV5640_image_20250714_185633_bat-1_uid82_A5_5E_FF_AC_A1.jpg) [  ](/photos/OV5640_image_20250714_130559_bat-1_uid63_C1_A4_CD_3F_F4.jpg) OV5640_image_20250714_130559_bat-1_uid63_C1_A4_CD_3F_F4.jpg [ Download ](/photos/OV5640_image_20250714_130559_bat-1_uid63_C1_A4_CD_3F_F4.jpg) [  ](/photos/OV5640_image_20250714_101454_bat-1_uidD0_DD_94_FA_A9_47.jpg) OV5640_image_20250714_101454_bat-1_uidD0_DD_94_FA_A9_47.jpg [ Download ](/photos/OV5640_image_20250714_101454_bat-1_uidD0_DD_94_FA_A9_47.jpg) [  ](/photos/OV5640_image_20250714_101413_bat-1_uidD0_DD_94_FA_A9_47.jpg) OV5640_image_20250714_101413_bat-1_uidD0_DD_94_FA_A9_47.jpg [ Download ](/photos/OV5640_image_20250714_101413_bat-1_uidD0_DD_94_FA_A9_47.jpg) [  ](/photos/OV5640_image_20250713_085634_bat-1_uid4D_5D_49_06_33_EF.jpg) OV5640_image_20250713_085634_bat-1_uid4D_5D_49_06_33_EF.jpg [ Download ](/photos/OV5640_image_20250713_085634_bat-1_uid4D_5D_49_06_33_EF.jpg) [  ](/photos/OV5640_image_20250713_085604_bat-1_uid4D_5D_49_06_33_EF.jpg) OV5640_image_20250713_085604_bat-1_uid4D_5D_49_06_33_EF.jpg [ Download ](/photos/OV5640_image_20250713_085604_bat-1_uid4D_5D_49_06_33_EF.jpg) × ![Enlarged photo]()
Geographic Location
- City
- London
- Province
- England
- Country
- United Kingdom (GB)
- Coordinates
- 51.50853, -0.12574
- Timezone
- Europe/London