Repository: fronzbot/blinkpy

Issue:
Camera battery_level no longer reflects voltage
**Describe the bug**
Previously, the camera config.signals.battery JSON field appeared to reflect the voltage of the XT* camera's battery, in centivolts (i.e. 167 would mean 1.67v) (Note: the doorbell and the MINI cameras appeared to not report voltage).

However, as of approximately 2023-12, the cameras no longer report their voltage. This appears to be a problem with the BLINK systems, not with blinkpy per se, as I show below. If you agree, then there isn't really any action you can take to fix/revert this functionality. But I open this ticket in hopes that an additional set of eyes will uncover something that I missed.

**To Reproduce**
Steps to reproduce the behavior:

1. Enable logging of DEBUG in blinkpy/sync_module.py (I added a line `logging.basicConfig(level=logging.DEBUG)` after the `_LOGGER = logging.getLogger(__name__)` line, although there may be better ways to do this)
2. Connect to blink as shown in the example blinkapp.py.
3. Store the JSON output generated with DEBUG logging, and observe that for each camera, the config.signal.battery field now shows a single digit integer, either 2 or 3.


**`blinkpy` version: v0.22.5**

**Log Output/Additional Information**
Almost all of my cameras are on USB mains power.
I previously observed that my doorbell, and my mini camera (handling the doorbell chime) never reported a battery voltage. My nightly info cronjob would print out information such as this (from 2023-11-29):
```
Camera Info:
 - CB-Doorbell:    0.00v    0°     ARMED
 - CB-Foyer:       0.00v    0°  DISARMED
 - CB-Sidewalk:    1.43v   18°     ARMED
 - CB-BonusRoom:   1.67v   66°  DISARMED
 - CB-Grill Porch: 1.69v   22°     ARMED
 - CB-Rec Room:    1.69v   61°  DISARMED
 - CB-Garage:      1.70v   55°     ARMED
 - CB-Kitchen:     1.70v   66°  DISARMED
 - CB-Parking:     1.70v   18°     ARMED
 - CB-Pool:        1.70v   20°     ARMED
 - CB-Back Porch:  1.71v   22°     ARMED
 - CB-Data Center: 1.71v   65°  DISARMED
 - CB-Driveway:    1.71v   20°     ARMED
 - CB-Mudroom:     1.71v   64°  DISARMED
 - CB-Workshop:    1.71v   47°     ARMED
 - CB-Family Room: 1.72v   68°  DISARMED
```

The only camera on an actual pair of AA batteries is my CB-Sidewalk camera, and it's pretty low, at 1.43v.

Started around 2023-12-01, ALL of these values became 0.00v. Today I looked into why this might be, adding the DEBUG as described above, and it appears that the BLINK servers no longer report the voltage. Interestingly, the config.signals.battery field shows a value of 3 for every camera except my CB-Sidewalk camera, which has a value of 2. I don't know why that is (although I acknowledge that the voltage of those AA's is probably below the desired level).

Here is some output during the blinkpy login and metadata fetch, showing what I am getting:
```
Executing docker image: dashrblink-test
DEBUG:blinkpy.sync_module:logging after setLevel()
INFO:blinkpy.sync_module:logging before setLevel()
DEBUG:asyncio:Using selector: EpollSelector
DEBUG:blinkpy.helpers.util:Setting base url to https://rest-u008.immedia-semi.com.
DEBUG:blinkpy.api:Making GET request to https://rest-u008.immedia-semi.com/api/v3/accounts/REDACTED/homescreen
DEBUG:blinkpy.blinkpy:homescreen = {
  "account": {
    "id": REDACTED,
    "email_verified": true,
    "email_verification_required": true,
    "amazon_account_linked": false
  },
  "networks": [
    {
      "id": 6635,
      "created_at": "2019-06-22T15:01:07+00:00",
      "updated_at": "2023-08-01T22:37:22+00:00",
      "name": "West",
      "time_zone": "America/New_York",
      "dst": true,
      "armed": true,
      "lv_save": false
    },
    {
      "id": 11166,
      "created_at": "2019-06-29T01:20:21+00:00",
      "updated_at": "2023-10-16T16:30:48+00:00",
      "name": "East",
      "time_zone": "America/New_York",
      "dst": true,
      "armed": true,
      "lv_save": false
    },
    {
      "id": 157629,
      "created_at": "2020-03-13T19:18:07+00:00",
      "updated_at": "2023-07-21T23:46:05+00:00",
      "name": "Wkshp",
      "time_zone": "America/New_York",
      "dst": true,
      "armed": true,
      "lv_save": false
    },
    {
      "id": 580601,
      "created_at": "2023-10-16T22:09:41+00:00",
      "updated_at": "2023-11-23T05:01:23+00:00",
      "name": "Out",
      "time_zone": "America/New_York",
      "dst": true,
      "armed": true,
      "lv_save": false
    }
  ],
  "sync_modules": [
    {
      "id": 11096,
      "created_at": "2019-06-22T15:05:21+00:00",
      "updated_at": "2024-01-20T08:24:24+00:00",
      "onboarded": true,
      "status": "online",
      "name": "My Blink Sync Module",
      "serial": "224536819",
      "fw_version": "4.5.17",
      "type": "sm1",
      "subtype": "none",
      "last_hb": "2024-01-21T23:11:29+00:00",
      "wifi_strength": 5,
      "network_id": 6635,
      "enable_temp_alerts": true,
      "local_storage_enabled": false,
      "local_storage_compatible": false,
      "local_storage_status": "unavailable",
      "revision": null
    },
    {
      "id": 19142,
      "created_at": "2019-06-29T01:20:31+00:00",
      "updated_at": "2024-01-20T08:24:23+00:00",
      "onboarded": true,
      "status": "online",
      "name": "My Blink Sync Module",
      "serial": "274030833",
      "fw_version": "4.5.17",
      "type": "sm1",
      "subtype": "none",
      "last_hb": "2024-01-21T23:11:58+00:00",
      "wifi_strength": 5,
      "network_id": 11166,
      "enable_temp_alerts": true,
      "local_storage_enabled": false,
      "local_storage_compatible": false,
      "local_storage_status": "unavailable",
      "revision": null
    },
    {
      "id": 288984,
      "created_at": "2020-03-13T19:18:25+00:00",
      "updated_at": "2024-01-20T08:24:24+00:00",
      "onboarded": true,
      "status": "online",
      "name": "My Blink Sync Module",
      "serial": "295121217",
      "fw_version": "4.5.17",
      "type": "sm1",
      "subtype": "none",
      "last_hb": "2024-01-21T23:11:51+00:00",
      "wifi_strength": 5,
      "network_id": 157629,
      "enable_temp_alerts": true,
      "local_storage_enabled": false,
      "local_storage_compatible": false,
      "local_storage_status": "unavailable",
      "revision": null
    },
    {
      "id": 861098,
      "created_at": "2023-10-16T22:09:46+00:00",
      "updated_at": "2024-01-20T08:24:35+00:00",
      "onboarded": true,
      "status": "online",
      "name": "My Blink Sync Module",
      "serial": "G8T1V70122151PCQ",
      "fw_version": "16.0.8",
      "type": "sm2",
      "subtype": "billy",
      "last_hb": "2024-01-21T23:11:40+00:00",
      "wifi_strength": 5,
      "network_id": 580601,
      "enable_temp_alerts": true,
      "local_storage_enabled": false,
      "local_storage_compatible": true,
      "local_storage_status": "unavailable",
      "revision": "01"
    }
  ],
  "cameras": [
    {
      "id": 14421,
      "created_at": "2019-06-22T20:33:04+00:00",
      "updated_at": "2024-01-21T22:46:25+00:00",
      "name": "CB-BonusRoom",
      "serial": "604900975",
      "fw_version": "2.151",
      "type": "xt",
      "enabled": false,
      "thumbnail": "/api/v3/media/accounts/REDACTED/networks/6635/xt/14421/thumbnail/thumbnail.jpg?ts=1683234329&ext=",
      "status": "done",
      "battery": "ok",
      "usage_rate": false,
      "network_id": 6635,
      "issues": [],
      "signals": {
        "lfr": 4,
        "wifi": 5,
        "temp": 69,
        "battery": 3
      },
      "local_storage_enabled": false,
      "local_storage_compatible": false,
      "snooze": false,
      "snooze_time_remaining": null,
      "revision": null,
      "color": "black"
    },
    {
      "id": 1150081,
      "created_at": "2023-05-04T20:53:21+00:00",
      "updated_at": "2024-01-21T22:43:26+00:00",
      "name": "CB-Family Room",
      "serial": "658241428",
      "fw_version": "2.151",
      "type": "xt",
      "enabled": false,
      "thumbnail": "/api/v3/media/accounts/REDACTED/networks/6635/xt/1150081/thumbnail/thumbnail.jpg?ts=1683239853&ext=",
      "status": "done",
      "battery": "ok",
      "usage_rate": false,
      "network_id": 6635,
      "issues": [],
      "signals": {
        "lfr": 3,
        "wifi": 5,
        "temp": 75,
        "battery": 3
      },
      "local_storage_enabled": false,
      "local_storage_compatible": false,
      "snooze": false,
      "snooze_time_remaining": null,
      "revision": null,
      "color": "black"
    },
    {
      "id": 1150093,
      "created_at": "2023-05-04T21:04:13+00:00",
      "updated_at": "2024-01-21T22:28:26+00:00",
      "name": "CB-Garage",
      "serial": "194198099",
      "fw_version": "2.151",
      "type": "white",
      "enabled": true,
      "thumbnail": "/api/v3/media/accounts/REDACTED/networks/6635/white/1150093/thumbnail/thumbnail.jpg?ts=1685806299&ext=",
      "status": "done",
      "battery": "ok",
      "usage_rate": false,
      "network_id": 6635,
      "issues": [],
      "signals": {
        "lfr": 4,
        "wifi": 5,
        "temp": 52,
        "battery": 3
      },
      "local_storage_enabled": false,
      "local_storage_compatible": false,
      "snooze": false,
      "snooze_time_remaining": null,
      "revision": null,
      "color": "black"
    },
    {
      "id": 1153434,
      "created_at": "2023-05-11T00:16:05+00:00",
      "updated_at": "2024-01-21T22:58:26+00:00",
      "name": "CB-Driveway",
      "serial": "664900979",
      "fw_version": "2.151",
      "type": "xt",
      "enabled": true,
      "thumbnail": "/api/v3/media/accounts/REDACTED/networks/6635/xt/1153434/thumbnail/thumbnail.jpg?ts=1690721042&ext=",
      "status": "done",
      "battery": "ok",
      "usage_rate": false,
      "network_id": 6635,
      "issues": [],
      "signals": {
        "lfr": 3,
        "wifi": 5,
        "temp": 31,
        "battery": 3
      },
      "local_storage_enabled": false,
      "local_storage_compatible": false,
      "snooze": false,
      "snooze_time_remaining": null,
      "revision": null,
      "color": "black"
    },
    {
      "id": 1164247,
      "created_at": "2023-06-03T20:20:30+00:00",
      "updated_at": "2024-01-21T22:58:26+00:00",
      "name": "CB-Grill Porch",
      "serial": "886639280",
      "fw_version": "7.102",
      "type": "xt2",
      "enabled": true,
      "thumbnail": "/api/v3/media/accounts/REDACTED/networks/6635/xt2/1164247/thumbnail/thumbnail.jpg?ts=1685838344&ext=",
      "status": "done",
      "battery": "ok",
      "usage_rate": false,
      "network_id": 6635,
      "issues": [],
      "signals": {
        "lfr": 5,
        "wifi": 5,
        "temp": 41,
        "battery": 3
      },
      "local_storage_enabled": false,
      "local_storage_compatible": false,
      "snooze": false,
      "snooze_time_remaining": null,
      "revision": null,
      "color": "black"
    },
    {
      "id": 1164398,
      "created_at": "2023-06-04T00:52:52+00:00",
      "updated_at": "2024-01-21T22:48:25+00:00",
      "name": "CB-Back Porch",
      "serial": "856639274",
      "fw_version": "7.102",
      "type": "xt2",
      "enabled": true,
      "thumbnail": "/api/v3/media/accounts/REDACTED/networks/11166/xt2/1164398/thumbnail/thumbnail.jpg?ts=1686079755&ext=",
      "status": "done",
      "battery": "ok",
      "usage_rate": false,
      "network_id": 11166,
      "issues": [],
      "signals": {
        "lfr": 5,
        "wifi": 5,
        "temp": 37,
        "battery": 3
      },
      "local_storage_enabled": false,
      "local_storage_compatible": false,
      "snooze": false,
      "snooze_time_remaining": null,
      "revision": null,
      "color": "black"
    },
    {
      "id": 1189058,
      "created_at": "2023-07-15T23:06:04+00:00",
      "updated_at": "2024-01-21T23:03:25+00:00",
      "name": "CB-Kitchen",
      "serial": "638241420",
      "fw_version": "2.151",
      "type": "xt",
      "enabled": false,
      "thumbnail": "/api/v3/media/accounts/REDACTED/networks/11166/xt/1189058/thumbnail/thumbnail.jpg?ts=1689462625&ext=",
      "status": "done",
      "battery": "ok",
      "usage_rate": false,
      "network_id": 11166,
      "issues": [],
      "signals": {
        "lfr": 5,
        "wifi": 5,
        "temp": 75,
        "battery": 3
      },
      "local_storage_enabled": false,
      "local_storage_compatible": false,
      "snooze": false,
      "snooze_time_remaining": null,
      "revision": null,
      "color": "black"
    },
    {
      "id": 1189122,
      "created_at": "2023-07-15T23:55:55+00:00",
      "updated_at": "2024-01-21T22:46:25+00:00",
      "name": "CB-Mudroom",
      "serial": "644901079",
      "fw_version": "2.151",
      "type": "xt",
      "enabled": false,
      "thumbnail": "/api/v3/media/accounts/REDACTED/networks/6635/xt/1189122/thumbnail/thumbnail.jpg?ts=1705856529&ext=",
      "status": "done",
      "battery": "ok",
      "usage_rate": false,
      "network_id": 6635,
      "issues": [],
      "signals": {
        "lfr": 5,
        "wifi": 5,
        "temp": 69,
        "battery": 3
      },
      "local_storage_enabled": false,
      "local_storage_compatible": false,
      "snooze": false,
      "snooze_time_remaining": null,
      "revision": null,
      "color": "black"
    },
    {
      "id": 1189217,
      "created_at": "2023-07-16T02:22:50+00:00",
      "updated_at": "2024-01-21T21:48:25+00:00",
      "name": "CB-Rec Room",
      "serial": "886639370",
      "fw_version": "7.102",
      "type": "xt2",
      "enabled": false,
      "thumbnail": "/api/v3/media/accounts/REDACTED/networks/11166/xt2/1189217/thumbnail/thumbnail.jpg?ts=1689474491&ext=",
      "status": "done",
      "battery": "ok",
      "usage_rate": false,
      "network_id": 11166,
      "issues": [],
      "signals": {
        "lfr": 5,
        "wifi": 5,
        "temp": 69,
        "battery": 3
      },
      "local_storage_enabled": false,
      "local_storage_compatible": false,
      "snooze": false,
      "snooze_time_remaining": null,
      "revision": null,
      "color": "black"
    },
    {
      "id": 1189218,
      "created_at": "2023-07-16T02:42:56+00:00",
      "updated_at": "2024-01-21T21:43:26+00:00",
      "name": "CB-Data Center",
      "serial": "836639267",
      "fw_version": "7.102",
      "type": "xt2",
      "enabled": false,
      "thumbnail": "/api/v3/media/accounts/REDACTED/networks/6635/xt2/1189218/thumbnail/thumbnail.jpg?ts=1689475460&ext=",
      "status": "done",
      "battery": "ok",
      "usage_rate": false,
      "network_id": 6635,
      "issues": [],
      "signals": {
        "lfr": 5,
        "wifi": 5,
        "temp": 73,
        "battery": 3
      },
      "local_storage_enabled": false,
      "local_storage_compatible": false,
      "snooze": false,
      "snooze_time_remaining": null,
      "revision": null,
      "color": "black"
    },
    {
      "id": 1193164,
      "created_at": "2023-07-21T03:15:07+00:00",
      "updated_at": "2024-01-21T20:47:19+00:00",
      "name": "CB-Workshop",
      "serial": "120873405",
      "fw_version": "2.151",
      "type": "white",
      "enabled": true,
      "thumbnail": "/api/v3/media/accounts/REDACTED/networks/157629/white/1193164/thumbnail/thumbnail.jpg?ts=1705786681&ext=",
      "status": "done",
      "battery": "ok",
      "usage_rate": false,
      "network_id": 157629,
      "issues": [],
      "signals": {
        "lfr": 5,
        "wifi": 5,
        "temp": 45,
        "battery": 3
      },
      "local_storage_enabled": false,
      "local_storage_compatible": false,
      "snooze": false,
      "snooze_time_remaining": null,
      "revision": null,
      "color": "black"
    },
    {
      "id": 1193596,
      "created_at": "2023-07-21T21:20:33+00:00",
      "updated_at": "2024-01-21T22:32:19+00:00",
      "name": "CB-Parking",
      "serial": "856639265",
      "fw_version": "7.102",
      "type": "xt2",
      "enabled": true,
      "thumbnail": "/api/v3/media/accounts/REDACTED/networks/157629/xt2/1193596/thumbnail/thumbnail.jpg?ts=1689983181&ext=",
      "status": "done",
      "battery": "ok",
      "usage_rate": false,
      "network_id": 157629,
      "issues": [],
      "signals": {
        "lfr": 5,
        "wifi": 5,
        "temp": 35,
        "battery": 3
      },
      "local_storage_enabled": false,
      "local_storage_compatible": false,
      "snooze": false,
      "snooze_time_remaining": null,
      "revision": null,
      "color": "black"
    },
    {
      "id": 1201261,
      "created_at": "2023-08-01T21:12:25+00:00",
      "updated_at": "2024-01-21T22:48:25+00:00",
      "name": "CB-Sidewalk",
      "serial": "G8T1GH0121732K27",
      "fw_version": "10.64",
      "type": "catalina",
      "enabled": true,
      "thumbnail": "/api/v3/media/accounts/REDACTED/networks/11166/catalina/1201261/thumbnail/thumbnail.jpg?ts=1690925927&ext=",
      "status": "done",
      "battery": "ok",
      "usage_rate": false,
      "network_id": 11166,
      "issues": [],
      "signals": {
        "lfr": 4,
        "wifi": 4,
        "temp": 30,
        "battery": 2
      },
      "local_storage_enabled": false,
      "local_storage_compatible": true,
      "snooze": false,
      "snooze_time_remaining": null,
      "revision": "01",
      "color": "black"
    },
    {
      "id": 1201330,
      "created_at": "2023-08-01T22:30:30+00:00",
      "updated_at": "2024-01-21T22:58:26+00:00",
      "name": "CB-Pool",
      "serial": "G8T1GH0121732SS8",
      "fw_version": "10.64",
      "type": "catalina",
      "enabled": true,
      "thumbnail": "/api/v3/media/accounts/REDACTED/networks/6635/catalina/1201330/thumbnail/thumbnail.jpg?ts=1692657758&ext=",
      "status": "done",
      "battery": "ok",
      "usage_rate": false,
      "network_id": 6635,
      "issues": [],
      "signals": {
        "lfr": 1,
        "wifi": 5,
        "temp": 35,
        "battery": 3
      },
      "local_storage_enabled": false,
      "local_storage_compatible": true,
      "snooze": false,
      "snooze_time_remaining": null,
      "revision": "01",
      "color": "black"
    }
  ],
  "sirens": [],
  "chimes": [],
  "video_stats": {
    "storage": 100,
    "auto_delete_days": 60,
    "auto_delete_day_options": [
      3,
      7,
      14,
      30,
      60
    ]
  },
  "doorbell_buttons": [],
  "owls": [
    {
      "id": 594477,
      "created_at": "2023-10-16T22:27:28+00:00",
      "updated_at": "2024-01-21T19:01:18+00:00",
      "name": "CB-Foyer",
      "type": "owl",
      "onboarded": true,
      "serial": "G8V190013113CRS9",
      "fw_version": "9.90",
      "enabled": false,
      "thumbnail": "/api/v3/media/accounts/REDACTED/networks/580601/owl/594477/thumbnail/thumbnail.jpg?ts=1697495404&ext=",
      "status": "online",
      "network_id": 580601,
      "local_storage_enabled": false,
      "local_storage_compatible": true,
      "snooze": false,
      "snooze_time_remaining": null,
      "revision": "01",
      "color": "white"
    }
  ],
  "doorbells": [
    {
      "id": 256160,
      "created_at": "2023-11-23T01:13:44+00:00",
      "updated_at": "2024-01-21T20:50:47+00:00",
      "name": "CB-Doorbell",
      "type": "lotus",
      "onboarded": true,
      "serial": "G8T1TW0222662N40",
      "fw_version": "12.66",
      "enabled": true,
      "thumbnail": "/api/v3/media/accounts/REDACTED/networks/580601/lotus/256160/thumbnail/thumbnail.jpg?ts=1704648318&ext=",
      "status": "done",
      "network_id": 580601,
      "battery": "ok",
      "doorbell_mode": "lfr",
      "changing_mode": false,
      "signals": {
        "lfr": 4,
        "wifi": 3,
        "battery": 3
      },
      "issues": [],
      "local_storage_enabled": false,
      "local_storage_compatible": false,
      "config_out_of_sync": false,
      "snooze": false,
      "snooze_time_remaining": null,
      "revision": "02",
      "color": "black"
    }
  ],
  "app_updates": {
    "message": "An app update is required",
    "code": 105,
    "update_available": true,
    "update_required": true
  },
  "device_limits": {
    "camera": 10,
    "chime": 5,
    "doorbell": 10,
    "doorbell_button": 2,
    "owl": 10,
    "siren": 5,
    "total_devices": 20
  },
  "whats_new": {
    "updated_at": 20210204,
    "url": "https://updates.blinkforhome.com/"
  },
  "subscriptions": {
    "updated_at": "2023-11-23T01:14:04+00:00"
  },
  "entitlements": {
    "updated_at": "2023-11-23T01:14:04+00:00"
  },
  "tiv_lock_enable": true,
  "tiv_lock_status": {
    "locked": true
  },
  "accessories": {
    "storm": [],
    "rosie": []
  }
}
DEBUG:blinkpy.blinkpy:Initialized last_refresh to 1705878689 == 2024-01-21 23:11:29
DEBUG:blinkpy.api:Making GET request to https://rest-u008.immedia-semi.com/networks
DEBUG:blinkpy.api:Making GET request to https://rest-u008.immedia-semi.com/api/v1/camera/usage


```


Discussion:

Patch:
diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst
index 8cb6df4..cadcef8 100644
--- a/CONTRIBUTING.rst
+++ b/CONTRIBUTING.rst
@@ -85,7 +85,7 @@ You can then run all of the tests with the following command:
 
 **Tips**
 
-If you only want to see if you can pass the local tests, you can run ``tox -e py37`` (or whatever python version you have installed.  Only ``py36``, ``py37``, and ``py38`` will be accepted).  If you just want to check for style violations, you can run ``tox -e lint``.  Regardless, when you submit a pull request, your code MUST pass both the unit tests, and the linters.
+If you only want to see if you can pass the local tests, you can run ``tox -e py39`` (or whatever python version you have installed.  Only ``py39`` through ``py312`` will be accepted).  If you just want to check for style violations, you can run ``tox -e lint``.  Regardless, when you submit a pull request, your code MUST pass both the unit tests, and the linters.
 
 If you need to change anything in ``requirements.txt`` for any reason, you'll want to regenerate the virtual envrionments used by ``tox`` by running with the ``-r`` flag: ``tox -r``
 
@@ -104,7 +104,7 @@ If your code is taking a while to develop, you may be behind the ``dev`` branch,
 
 If rebase detects conflicts, repeat the following process until all changes have been resolved:
 
-1. ``git status`` shows you the filw with a conflict.  You will need to edit that file and resolve the lines between ``<<<< | >>>>``.
+1. ``git status`` shows you the file with a conflict.  You will need to edit that file and resolve the lines between ``<<<< | >>>>``.
 2. Add the modified file: ``git add <file>`` or ``git add .``.
 3. Continue rebase: ``git rebase --continue``.
 4. Repeat until all conflicts resolved.
diff --git a/blinkpy/camera.py b/blinkpy/camera.py
index e028343..95e8c35 100644
--- a/blinkpy/camera.py
+++ b/blinkpy/camera.py
@@ -30,6 +30,7 @@ class BlinkCamera:
         self._version = None
         self.motion_enabled = None
         self.battery_level = None
+        self._battery_voltage = None
         self.clip = None
         # A clip remains in the recent clips list until is has
         # been downloaded or has been expired.
@@ -59,6 +60,7 @@ class BlinkCamera:
             "temperature_calibrated": self.temperature_calibrated,
             "battery": self.battery,
             "battery_level": self.battery_level,
+            "battery_voltage": self._battery_voltage,
             "thumbnail": self.thumbnail,
             "video": self.clip,
             "recent_clips": self.recent_clips,
@@ -78,6 +80,11 @@ class BlinkCamera:
         """Return battery as string."""
         return self.battery_state
 
+    @property
+    def battery_voltage(self):
+        """Return battery voltage as a number in 100ths of volts, so 165 = 1.65v."""
+        return self._battery_voltage
+
     @property
     def temperature_c(self):
         """Return temperature in celsius."""
@@ -246,14 +253,14 @@ class BlinkCamera:
         self.serial = config.get("serial")
         self._version = config.get("fw_version")
         self.motion_enabled = config.get("enabled", "unknown")
+        self._battery_voltage = config.get("battery_voltage", None)
         self.battery_state = config.get("battery_state") or config.get("battery")
+        self.wifi_strength = config.get("wifi_strength")
         if signals := config.get("signals"):
-            self.wifi_strength = signals.get("wifi")
             self.battery_level = signals.get("battery")
             self.sync_signal_strength = signals.get("lfr")
             self.temperature = signals.get("temp")
         else:
-            self.wifi_strength = config.get("wifi_strength")
             self.temperature = config.get("temperature")
         self.product_type = config.get("type")
 
diff --git a/blinkpy/sync_module.py b/blinkpy/sync_module.py
index 860b79d..8ebbaaa 100644
--- a/blinkpy/sync_module.py
+++ b/blinkpy/sync_module.py
@@ -49,10 +49,11 @@ class BlinkSyncModule:
         self.last_records = {}
         self.camera_list = camera_list
         self.available = False
+        # type_key_map is only for the mini's and the doorbells.
+        # Outdoor cameras have their own URL API which must be queried.
         self.type_key_map = {
             "mini": "owls",
             "doorbell": "doorbells",
-            "outdoor": "cameras",
         }
         self._names_table = {}
         self._local_storage = {


Test patch:
diff --git a/tests/test_camera_functions.py b/tests/test_camera_functions.py
index f2a353e..0ca7569 100644
--- a/tests/test_camera_functions.py
+++ b/tests/test_camera_functions.py
@@ -22,6 +22,8 @@ CONFIG = {
     "serial": "12345678",
     "enabled": False,
     "battery_state": "ok",
+    "battery_voltage": 163,
+    "wifi_strength": -38,
     "signals": {"lfr": 5, "wifi": 4, "battery": 3, "temp": 68},
     "thumbnail": "/thumb",
 }
@@ -68,7 +70,8 @@ class TestBlinkCameraSetup(IsolatedAsyncioTestCase):
         self.assertEqual(self.camera.temperature, 68)
         self.assertEqual(self.camera.temperature_c, 20)
         self.assertEqual(self.camera.temperature_calibrated, 71)
-        self.assertEqual(self.camera.wifi_strength, 4)
+        self.assertEqual(self.camera.battery_voltage, 163)
+        self.assertEqual(self.camera.wifi_strength, -38)
         self.assertEqual(
             self.camera.thumbnail, "https://rest-test.immedia-semi.com/thumb.jpg"
         )
@@ -378,5 +381,4 @@ class TestBlinkCameraSetup(IsolatedAsyncioTestCase):
             mresp.MockResponse({"foobar": 200}, 200, raw_data="foobar"),
         ]
         await self.camera.update(config, expire_clips=False, force=True)
-        self.assertEqual(self.camera.wifi_strength, None)
         self.assertEqual(self.camera.battery_level, None)