75 Commits

Author SHA1 Message Date
Sebastian Muszynski
54964dc3f4 Drop Python 3.10 support 2025-07-16 08:03:19 +02:00
Sebastian Muszynski
79c0236050 Complete dump config (#68)
Some checks failed
CI / yamllint (push) Has been cancelled
CI / Bundle external component and ESPHome (push) Has been cancelled
CI / Create common environment (push) Has been cancelled
CI / Check ruff (push) Has been cancelled
CI / Check flake8 (push) Has been cancelled
CI / Check pylint (push) Has been cancelled
CI / Check pyupgrade (push) Has been cancelled
CI / Run script/ci-custom (push) Has been cancelled
CI / Check clang-format (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 1/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 2/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 3/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 4/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 IDF (push) Has been cancelled
CI / Run script/clang-tidy for ESP8266 (push) Has been cancelled
CI / Validate example configurations (push) Has been cancelled
CI / Build example configurations (push) Has been cancelled
2025-07-09 09:56:33 +02:00
Sebastian Muszynski
f10cae1824 Centralize component schema declarations (#67)
Some checks failed
CI / yamllint (push) Has been cancelled
CI / Bundle external component and ESPHome (push) Has been cancelled
CI / Create common environment (push) Has been cancelled
CI / Check ruff (push) Has been cancelled
CI / Check flake8 (push) Has been cancelled
CI / Check pylint (push) Has been cancelled
CI / Check pyupgrade (push) Has been cancelled
CI / Run script/ci-custom (push) Has been cancelled
CI / Check clang-format (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 1/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 2/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 3/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 4/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 IDF (push) Has been cancelled
CI / Run script/clang-tidy for ESP8266 (push) Has been cancelled
CI / Validate example configurations (push) Has been cancelled
CI / Build example configurations (push) Has been cancelled
2025-07-08 07:19:34 +02:00
Sebastian Muszynski
5b72c21170 Use main per default
Some checks failed
CI / yamllint (push) Has been cancelled
CI / Bundle external component and ESPHome (push) Has been cancelled
CI / Create common environment (push) Has been cancelled
CI / Check ruff (push) Has been cancelled
CI / Check flake8 (push) Has been cancelled
CI / Check pylint (push) Has been cancelled
CI / Check pyupgrade (push) Has been cancelled
CI / Run script/ci-custom (push) Has been cancelled
CI / Check clang-format (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 1/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 2/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 3/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 4/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 IDF (push) Has been cancelled
CI / Run script/clang-tidy for ESP8266 (push) Has been cancelled
CI / Validate example configurations (push) Has been cancelled
CI / Build example configurations (push) Has been cancelled
2025-07-07 13:49:00 +02:00
Sebastian Muszynski
f9d8ff54c0 Bump component version
Some checks failed
CI / yamllint (push) Has been cancelled
CI / Bundle external component and ESPHome (push) Has been cancelled
CI / Create common environment (push) Has been cancelled
CI / Check ruff (push) Has been cancelled
CI / Check flake8 (push) Has been cancelled
CI / Check pylint (push) Has been cancelled
CI / Check pyupgrade (push) Has been cancelled
CI / Run script/ci-custom (push) Has been cancelled
CI / Check clang-format (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 1/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 2/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 3/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 4/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 IDF (push) Has been cancelled
CI / Run script/clang-tidy for ESP8266 (push) Has been cancelled
CI / Validate example configurations (push) Has been cancelled
CI / Build example configurations (push) Has been cancelled
2025-07-05 21:05:40 +02:00
Sebastian Muszynski
57d74094eb Make entity names unique (#65)
Some checks failed
CI / yamllint (push) Has been cancelled
CI / Bundle external component and ESPHome (push) Has been cancelled
CI / Create common environment (push) Has been cancelled
CI / Check ruff (push) Has been cancelled
CI / Check flake8 (push) Has been cancelled
CI / Check pylint (push) Has been cancelled
CI / Check pyupgrade (push) Has been cancelled
CI / Run script/ci-custom (push) Has been cancelled
CI / Check clang-format (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 1/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 2/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 3/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 4/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 IDF (push) Has been cancelled
CI / Run script/clang-tidy for ESP8266 (push) Has been cancelled
CI / Validate example configurations (push) Has been cancelled
CI / Build example configurations (push) Has been cancelled
2025-06-25 23:35:54 +02:00
Sebastian Muszynski
db22f3a54a Make CI build verbose (#66) 2025-06-25 17:29:50 +02:00
Sebastian Muszynski
c6c75a19d0 Use defaults (#64)
Some checks failed
CI / yamllint (push) Has been cancelled
CI / Bundle external component and ESPHome (push) Has been cancelled
CI / Create common environment (push) Has been cancelled
CI / Check ruff (push) Has been cancelled
CI / Check flake8 (push) Has been cancelled
CI / Check pylint (push) Has been cancelled
CI / Check pyupgrade (push) Has been cancelled
CI / Run script/ci-custom (push) Has been cancelled
CI / Check clang-format (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 1/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 2/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 3/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 4/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 IDF (push) Has been cancelled
CI / Run script/clang-tidy for ESP8266 (push) Has been cancelled
CI / Validate example configurations (push) Has been cancelled
CI / Build example configurations (push) Has been cancelled
2025-06-21 22:08:19 +02:00
Sebastian Muszynski
c76f01eb1f Fix *.*_SCHEMA deprecations (#63)
Some checks failed
CI / yamllint (push) Has been cancelled
CI / Bundle external component and ESPHome (push) Has been cancelled
CI / Create common environment (push) Has been cancelled
CI / Check ruff (push) Has been cancelled
CI / Check flake8 (push) Has been cancelled
CI / Check pylint (push) Has been cancelled
CI / Check pyupgrade (push) Has been cancelled
CI / Run script/ci-custom (push) Has been cancelled
CI / Check clang-format (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 1/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 2/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 3/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 4/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 IDF (push) Has been cancelled
CI / Run script/clang-tidy for ESP8266 (push) Has been cancelled
CI / Validate example configurations (push) Has been cancelled
CI / Build example configurations (push) Has been cancelled
2025-05-25 18:38:56 +02:00
Sebastian Muszynski
aad083cd39 Improve triple charger controller support (#59) 2025-05-25 18:24:49 +02:00
Sebastian Muszynski
8bf35a2f6f Update minimum python version to 3.10 (#62)
Some checks failed
CI / yamllint (push) Has been cancelled
CI / Bundle external component and ESPHome (push) Has been cancelled
CI / Create common environment (push) Has been cancelled
CI / Check ruff (push) Has been cancelled
CI / Check flake8 (push) Has been cancelled
CI / Check pylint (push) Has been cancelled
CI / Check pyupgrade (push) Has been cancelled
CI / Run script/ci-custom (push) Has been cancelled
CI / Check clang-format (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 1/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 2/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 3/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 4/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 IDF (push) Has been cancelled
CI / Run script/clang-tidy for ESP8266 (push) Has been cancelled
CI / Validate example configurations (push) Has been cancelled
CI / Build example configurations (push) Has been cancelled
2025-05-22 09:28:56 +02:00
Sebastian Muszynski
5dc30e99fe Adopt structure of the ESPHome CI (#61)
Some checks failed
CI / yamllint (push) Has been cancelled
CI / Bundle external component and ESPHome (push) Has been cancelled
CI / Create common environment (push) Has been cancelled
CI / Check ruff (push) Has been cancelled
CI / Check flake8 (push) Has been cancelled
CI / Check pylint (push) Has been cancelled
CI / Check pyupgrade (push) Has been cancelled
CI / Run script/ci-custom (push) Has been cancelled
CI / Check clang-format (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 1/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 2/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 3/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 4/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 IDF (push) Has been cancelled
CI / Run script/clang-tidy for ESP8266 (push) Has been cancelled
CI / Validate example configurations (push) Has been cancelled
CI / Build example configurations (push) Has been cancelled
2025-05-03 15:57:05 +02:00
Sebastian Muszynski
eeede3e32e Migrate to actions/cache@v4 (#60)
Some checks failed
CI / yamllint (push) Has been cancelled
CI / lint-clang-format (push) Has been cancelled
CI / lint-clang-tidy (push) Has been cancelled
CI / lint-python (push) Has been cancelled
CI / esphome-config (push) Has been cancelled
CI / esphome-compile (push) Has been cancelled
2025-03-03 11:00:53 +01:00
Sebastian Muszynski
1fbbb5a9da Fix controller temperature (#58)
Some checks failed
CI / yamllint (push) Has been cancelled
CI / lint-clang-format (push) Has been cancelled
CI / lint-clang-tidy (push) Has been cancelled
CI / lint-python (push) Has been cancelled
CI / esphome-config (push) Has been cancelled
CI / esphome-compile (push) Has been cancelled
See #43
2025-02-21 21:17:27 +01:00
Sebastian Muszynski
1d705f4271 Use ruff format at the CI (#57) 2025-02-21 14:22:47 +01:00
Sebastian Muszynski
8e3c94a72a Add platform binary_sensor to the auto loader
Some checks failed
CI / yamllint (push) Has been cancelled
CI / lint-clang-format (push) Has been cancelled
CI / lint-clang-tidy (push) Has been cancelled
CI / lint-python (push) Has been cancelled
CI / esphome-config (push) Has been cancelled
CI / esphome-compile (push) Has been cancelled
2025-01-19 21:03:03 +01:00
Sebastian Muszynski
9aa26b3c9d Unregister BLE notifications on disconnect (#56)
Some checks failed
CI / yamllint (push) Has been cancelled
CI / lint-clang-format (push) Has been cancelled
CI / lint-clang-tidy (push) Has been cancelled
CI / lint-python (push) Has been cancelled
CI / esphome-config (push) Has been cancelled
CI / esphome-compile (push) Has been cancelled
2025-01-18 09:42:11 +01:00
Sebastian Muszynski
91a7913e8b Disable active BLE scans to save some power and RF pollution (#54)
Some checks failed
CI / yamllint (push) Has been cancelled
CI / lint-clang-format (push) Has been cancelled
CI / lint-clang-tidy (push) Has been cancelled
CI / lint-python (push) Has been cancelled
CI / esphome-config (push) Has been cancelled
CI / esphome-compile (push) Has been cancelled
2024-10-21 13:57:14 +02:00
Sebastian Muszynski
67d70a72ea Use binary sensor schema (#53) 2024-10-21 13:28:00 +02:00
Sebastian Muszynski
98d0326f68 Improve pre-commit hooks (#50) 2024-10-21 13:21:54 +02:00
Sebastian Muszynski
75f0a1da4b Validate all YAML configurations (#49)
Some checks failed
CI / yamllint (push) Has been cancelled
CI / lint-clang-format (push) Has been cancelled
CI / lint-clang-tidy (push) Has been cancelled
CI / lint-python (push) Has been cancelled
CI / esphome-config (push) Has been cancelled
CI / esphome-compile (push) Has been cancelled
2024-08-01 11:24:35 +02:00
Sebastian Muszynski
788a5855d5 Update pre-commit hooks
Some checks failed
CI / yamllint (push) Has been cancelled
CI / lint-clang-format (push) Has been cancelled
CI / lint-clang-tidy (push) Has been cancelled
CI / lint-python (push) Has been cancelled
CI / esphome-config (push) Has been cancelled
CI / esphome-compile (push) Has been cancelled
2024-07-28 21:51:57 +02:00
Sebastian Muszynski
ac7516f143 Simplify yamllint configuration 2024-07-28 21:47:13 +02:00
Sebastian Muszynski
036ce247e3 Add FUNDING.yml 2024-07-16 10:38:01 +02:00
Sebastian Muszynski
9db23fcf4c Bump python version to 3.12 2024-06-21 08:09:06 +02:00
Sebastian Muszynski
98a0f0bf1e Add minimum required ESPHome version 2024-06-21 06:50:33 +02:00
Sebastian Muszynski
d1a917a1c7 Specify OTA platform 2024-06-20 21:41:59 +02:00
Sebastian Muszynski
0e50d94972 Fix minimum required ESPHome version 2024-05-10 09:49:14 +02:00
Sebastian Muszynski
44f7d5794f Fix lint-clang-format job (#47) 2024-03-06 18:01:33 +01:00
Sebastian Muszynski
8540227e75 Fix lint-clang-tidy job 2024-01-14 08:55:44 +01:00
Sebastian Muszynski
6b6fc54783 Drop pexpect install 2023-11-20 16:56:10 +01:00
Sebastian Muszynski
0d0def1a81 Fix pio init 2023-08-26 14:50:47 +02:00
Sebastian Muszynski
961fcd0bdd Increase rx_timeout 2023-06-25 16:03:29 +02:00
Sebastian Muszynski
afada45065 Improve triple charger support (#44) 2023-06-21 20:17:19 +02:00
Sebastian Muszynski
467af8f150 Fix preamble synchronization (#42) 2023-06-12 18:08:03 +02:00
Sebastian Muszynski
634964be80 Allow large throttle values (#40) 2023-06-03 14:24:48 +02:00
Sebastian Muszynski
cdec1318b6 Drop patched BLE components (#39) 2023-06-03 12:54:19 +02:00
Sebastian Muszynski
d99d9b029b Expose capacity details as sensors (Closes: #36) (#38) 2023-04-21 11:01:01 +02:00
Sebastian Muszynski
c8b4959c63 Rename uart0 to uart_0 (#37) 2023-04-20 11:27:51 +02:00
Sebastian Muszynski
3022e2184c Decode battery type (#35) 2023-04-17 20:41:48 +02:00
Sebastian Muszynski
e85083e85e Add basic smart shunt support (#29) 2023-04-14 10:16:52 +02:00
Sebastian Muszynski
6c3c0ced7c Make log level explicit 2023-04-13 13:12:42 +02:00
Sebastian Muszynski
53ba087d40 Improve CI 2023-04-11 09:15:28 +02:00
Sebastian Muszynski
aa79d7aa49 Check UART settings on dump config (#34) 2023-04-07 09:15:39 +02:00
Sebastian Muszynski
7c582875b7 Fix CI (#33) 2023-04-05 19:26:03 +02:00
Sebastian Muszynski
3211b9a245 Throttle per frame type (Closes: #30) (#31) 2023-03-29 20:33:55 +02:00
Sebastian Muszynski
5b26ecb42c Define dependencies vs. auto load 2023-03-29 09:56:43 +02:00
Sebastian Muszynski
dc148e2566 Add traffic capture of the reset energy today command 2023-03-27 21:37:12 +02:00
Sebastian Muszynski
cfd1285e93 Simplify MAC address discovery 2023-03-27 21:36:27 +02:00
Sebastian Muszynski
ff5d821927 Migrate hard coded fake traffic to the YAML (#26) 2023-03-24 10:03:51 +01:00
Sebastian Muszynski
c4e9aceec0 Use recommended ESP-IDF platform version (#25) 2023-03-17 17:44:56 +01:00
Sebastian Muszynski
086da7f752 Improve spelling 2023-03-14 08:53:35 +01:00
Sebastian Muszynski
0729f98606 Update some icons (#24) 2023-03-03 09:42:05 +01:00
Sebastian Muszynski
39632fe47d Add screenshots (#23) 2023-03-03 09:10:07 +01:00
Sebastian Muszynski
533f24f1c0 Align project and version 2023-02-28 09:18:02 +01:00
Sebastian Muszynski
95f57e6b19 Add schematics (Closes: #20) (#22) 2023-02-23 08:40:00 +01:00
Sebastian Muszynski
d8097e227c Add BLE scanner example 2023-02-21 19:11:17 +01:00
Sebastian Muszynski
a89e66af53 Add additional raw data / PDUs for analysis 2023-02-12 17:29:46 +01:00
Sebastian Muszynski
b5f2664592 Refactor 24bit signed integer 2023-02-12 12:44:05 +01:00
Sebastian Muszynski
7b80c0dacb Expose some bits of the status bitmask as binary sensors (#21)
Additional binary sensors: controller active, AES active, current reduction
2023-02-12 11:13:46 +01:00
Sebastian Muszynski
826884444e Improve verbosity of the debug log 2023-02-11 10:13:24 +01:00
Sebastian Muszynski
3a925985c2 Improve status bitmask decoding (Closes: #6) (#16) 2023-02-10 16:43:42 +01:00
Sebastian Muszynski
b0ff305e6b Remove debug output (#18) 2023-02-10 13:32:10 +01:00
Sebastian Muszynski
209cd332d6 Transpose and label PDUs 2023-02-10 08:11:18 +01:00
Sebastian Muszynski
afa3315b9e Add power sensor (Closes: #12) (#17) 2023-02-09 21:48:29 +01:00
Sebastian Muszynski
f58434084a Streamline example configurations (#15) 2023-02-09 08:28:17 +01:00
Sebastian Muszynski
224fffd0b6 Fix current sensor (Closes: #13) (#14) 2023-02-08 23:20:20 +01:00
Sebastian Muszynski
7f35247eff Update PDUs 2023-02-08 16:18:42 +01:00
Sebastian Muszynski
5dcf1d1cf2 Add votronic display link support (Closes: #9) (#11) 2023-02-08 16:14:23 +01:00
Sebastian Muszynski
5609cae4e4 Add test files to fake display link devices (#10) 2023-02-06 20:00:21 +01:00
Sebastian Muszynski
21cd8195df Add pairing instructions 2023-02-05 19:35:42 +01:00
Sebastian Muszynski
1de53806a1 Add raw value to the text sensors if the meaning is unknown (#8)
See #6.
2023-02-05 19:15:23 +01:00
Sebastian Muszynski
ad1c8f9044 Introduce binary sensors "charging" and "discharging" (Closes: #5) (#7) 2023-02-05 19:05:47 +01:00
Sebastian Muszynski
07929f0509 Decode status bits (#4) 2023-01-29 21:18:21 +01:00
Sebastian Muszynski
148d69d3e5 Fix resolution of the PV current and PV power sensor (#3) 2023-01-29 20:14:16 +01:00
108 changed files with 12888 additions and 4920 deletions

1
.github/FUNDING.yml vendored Normal file
View File

@@ -0,0 +1 @@
buy_me_a_coffee: syssi

View File

@@ -0,0 +1,38 @@
name: Restore Python
inputs:
python-version:
description: Python version to restore
required: true
type: string
cache-key:
description: Cache key to use
required: true
type: string
outputs:
python-version:
description: Python version restored
value: ${{ steps.python.outputs.python-version }}
runs:
using: "composite"
steps:
- name: Set up Python ${{ inputs.python-version }}
id: python
uses: actions/setup-python@v5.6.0
with:
python-version: ${{ inputs.python-version }}
- name: Restore Python virtual environment
id: cache-venv
uses: actions/cache/restore@v4.2.3
with:
path: venv
# yamllint disable-line rule:line-length
key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-venv-${{ inputs.cache-key }}
- name: Create Python virtual environment
shell: bash
run: |
python -m venv venv
source venv/bin/activate
python --version
cd esphome
pip install -r requirements.txt -r requirements_test.txt
pip install -e .

View File

@@ -4,199 +4,465 @@ on: # yamllint disable-line rule:truthy
push:
branches:
- main
pull_request:
schedule:
- cron: 0 12 * * *
permissions:
contents: read
env:
FORCE_COLOR: 1
DEFAULT_PYTHON: "3.11"
PYUPGRADE_TARGET: "--py311-plus"
concurrency:
# yamllint disable-line rule:line-length
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
yamllint:
runs-on: ubuntu-latest
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v1
- name: yaml-lint
uses: ibiqlik/action-yamllint@v3
- uses: actions/checkout@v4
- name: Run yamllint
uses: frenck/action-yamllint@v1
with:
config_file: .yamllint
config: .yamllint
lint-clang-format:
env:
esphome_directory: esphome
runs-on: ubuntu-latest
# cpp lint job runs with esphome-lint docker image so that clang-format-*
# doesn't have to be installed
container: esphome/esphome-lint:latest
bundle:
name: Bundle external component and ESPHome
runs-on: ubuntu-24.04
outputs:
repo-hash: ${{ github.sha }}
steps:
- uses: actions/checkout@v2
# Set up the pio project so that the cpp checks know how files are compiled
# (build flags, libraries etc)
- name: Check out this project
uses: actions/checkout@v4.1.7
- name: 💣 Clone esphome project
run: git clone https://github.com/esphome/esphome.git
- name: 💣 Copy component into the esphome project
- name: Check out code from ESPHome project
uses: actions/checkout@v4.1.7
with:
repository: esphome/esphome
ref: dev
path: esphome
- name: Copy external component into the esphome project
run: |
cd esphome
cp -r ../components/* esphome/components/
git config user.name "ci"
git config user.email "ci@github.com"
git add .
git commit -a -m "Add external component"
working-directory: ${{ env.esphome_directory }}
ln -sf ../venv venv
- name: Set up platformio environment
run: pio init --ide atom
working-directory: ${{ env.esphome_directory }}
- name: Archive prepared repository
uses: pyTooling/upload-artifact@v4
with:
name: bundle
path: .
include-hidden-files: true
retention-days: 1
common:
name: Create common environment
runs-on: ubuntu-24.04
needs: bundle
outputs:
cache-key: ${{ steps.cache-key.outputs.key }}
steps:
- name: Download prepared repository
uses: pyTooling/download-artifact@v4
with:
name: bundle
path: .
- name: Update index to make "git diff-index" happy
run: git update-index -q --really-refresh
- name: Generate cache-key
id: cache-key
run: echo key="${{ hashFiles('esphome/requirements.txt', 'esphome/requirements_test.txt') }}" >> $GITHUB_OUTPUT
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python
uses: actions/setup-python@v5.6.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
- name: Restore Python virtual environment
id: cache-venv
uses: actions/cache@v4.2.3
with:
path: venv
# yamllint disable-line rule:line-length
key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-venv-${{ steps.cache-key.outputs.key }}
- name: Create Python virtual environment
if: steps.cache-venv.outputs.cache-hit != 'true'
run: |
python -m venv venv
. venv/bin/activate
python --version
cd esphome
pip install -r requirements.txt -r requirements_test.txt
pip install -e .
ruff:
name: Check ruff
runs-on: ubuntu-24.04
needs:
- bundle
- common
defaults:
run:
working-directory: esphome
steps:
- name: Download prepared repository
uses: pyTooling/download-artifact@v4
with:
name: bundle
path: .
- name: Update index to make "git diff-index" happy
run: git update-index -q --really-refresh
- name: Restore Python
uses: ./.github/actions/restore-python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
cache-key: ${{ needs.common.outputs.cache-key }}
- name: Run Ruff
run: |
. venv/bin/activate
ruff format esphome tests
- name: Suggested changes
run: script/ci-suggest-changes
if: always()
flake8:
name: Check flake8
runs-on: ubuntu-24.04
needs:
- bundle
- common
defaults:
run:
working-directory: esphome
steps:
- name: Download prepared repository
uses: pyTooling/download-artifact@v4
with:
name: bundle
path: .
- name: Update index to make "git diff-index" happy
run: git update-index -q --really-refresh
- name: Restore Python
uses: ./.github/actions/restore-python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
cache-key: ${{ needs.common.outputs.cache-key }}
- name: Run flake8
run: |
. venv/bin/activate
flake8 esphome
- name: Suggested changes
run: script/ci-suggest-changes
if: always()
pylint:
name: Check pylint
runs-on: ubuntu-24.04
needs:
- bundle
- common
defaults:
run:
working-directory: esphome
steps:
- name: Download prepared repository
uses: pyTooling/download-artifact@v4
with:
name: bundle
path: .
- name: Update index to make "git diff-index" happy
run: git update-index -q --really-refresh
- name: Restore Python
uses: ./.github/actions/restore-python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
cache-key: ${{ needs.common.outputs.cache-key }}
- name: Run pylint
run: |
. venv/bin/activate
pylint -f parseable --persistent=n esphome
- name: Suggested changes
run: script/ci-suggest-changes
if: always()
pyupgrade:
name: Check pyupgrade
runs-on: ubuntu-24.04
needs:
- bundle
- common
defaults:
run:
working-directory: esphome
steps:
- name: Download prepared repository
uses: pyTooling/download-artifact@v4
with:
name: bundle
path: .
- name: Update index to make "git diff-index" happy
run: git update-index -q --really-refresh
- name: Restore Python
uses: ./.github/actions/restore-python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
cache-key: ${{ needs.common.outputs.cache-key }}
- name: Run pyupgrade
run: |
. venv/bin/activate
pyupgrade ${{ env.PYUPGRADE_TARGET }} `find esphome -name "*.py" -type f`
- name: Suggested changes
run: script/ci-suggest-changes
if: always()
ci-custom:
name: Run script/ci-custom
runs-on: ubuntu-24.04
needs:
- bundle
- common
defaults:
run:
working-directory: esphome
steps:
- name: Download prepared repository
uses: pyTooling/download-artifact@v4
with:
name: bundle
path: .
- name: Update index to make "git diff-index" happy
run: git update-index -q --really-refresh
- name: Restore Python
uses: ./.github/actions/restore-python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
cache-key: ${{ needs.common.outputs.cache-key }}
- name: Register matcher
run: echo "::add-matcher::.github/workflows/matchers/ci-custom.json"
- name: Do not suggest to move consts
run: |
sed -i 's#if len(uses) < 3:#if len(uses) < 8:#' script/ci-custom.py
git update-index --assume-unchanged script/ci-custom.py
- name: Run script/ci-custom
run: |
. ../venv/bin/activate
script/ci-custom.py
clang-format:
name: Check clang-format
runs-on: ubuntu-24.04
needs:
- bundle
- common
defaults:
run:
working-directory: esphome
steps:
- name: Download prepared repository
uses: pyTooling/download-artifact@v4
with:
name: bundle
path: .
- name: Update index to make "git diff-index" happy
run: git update-index -q --really-refresh
- name: Restore Python
uses: ./.github/actions/restore-python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
cache-key: ${{ needs.common.outputs.cache-key }}
- name: Install clang-format
run: |
. venv/bin/activate
pip install clang-format -c requirements_dev.txt
- name: Run clang-format
run: script/clang-format -i
working-directory: ${{ env.esphome_directory }}
- name: Suggest changes
run: script/ci-suggest-changes
working-directory: ${{ env.esphome_directory }}
lint-clang-tidy:
env:
esphome_directory: esphome
runs-on: ubuntu-latest
# cpp lint job runs with esphome-lint docker image so that clang-format-*
# doesn't have to be installed
container: esphome/esphome-lint:latest
steps:
- uses: actions/checkout@v2
- name: 💣 Clone esphome project
run: git clone https://github.com/esphome/esphome.git
- name: 💣 Copy component into the esphome project
run: |
cp -r ../components/* esphome/components/
git config user.name "ci"
git config user.email "ci@github.com"
git add .
git commit -a -m "Add external component"
working-directory: ${{ env.esphome_directory }}
. venv/bin/activate
script/clang-format -i
- name: Suggested changes
run: script/ci-suggest-changes
if: always()
# Set up the pio project so that the cpp checks know how files are compiled
# (build flags, libraries etc)
- name: Set up platformio environment
run: pio init --ide atom
working-directory: ${{ env.esphome_directory }}
clang-tidy:
name: ${{ matrix.name }}
runs-on: ubuntu-24.04
needs:
- bundle
- common
defaults:
run:
working-directory: esphome
strategy:
fail-fast: false
max-parallel: 2
matrix:
include:
- id: clang-tidy
name: Run script/clang-tidy for ESP8266
options: --environment esp8266-arduino-tidy --grep USE_ESP8266
pio_cache_key: tidyesp8266
- id: clang-tidy
name: Run script/clang-tidy for ESP32 Arduino 1/4
options: --environment esp32-arduino-tidy --split-num 4 --split-at 1
pio_cache_key: tidyesp32
- id: clang-tidy
name: Run script/clang-tidy for ESP32 Arduino 2/4
options: --environment esp32-arduino-tidy --split-num 4 --split-at 2
pio_cache_key: tidyesp32
- id: clang-tidy
name: Run script/clang-tidy for ESP32 Arduino 3/4
options: --environment esp32-arduino-tidy --split-num 4 --split-at 3
pio_cache_key: tidyesp32
- id: clang-tidy
name: Run script/clang-tidy for ESP32 Arduino 4/4
options: --environment esp32-arduino-tidy --split-num 4 --split-at 4
pio_cache_key: tidyesp32
- id: clang-tidy
name: Run script/clang-tidy for ESP32 IDF
options: --environment esp32-idf-tidy --grep USE_ESP_IDF
pio_cache_key: tidyesp32-idf
steps:
- name: Download prepared repository
uses: pyTooling/download-artifact@v4
with:
name: bundle
path: .
- name: Update index to make "git diff-index" happy
run: git update-index -q --really-refresh
- name: Restore Python
uses: ./.github/actions/restore-python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
cache-key: ${{ needs.common.outputs.cache-key }}
- name: Cache platformio
if: github.ref == 'refs/heads/dev'
uses: actions/cache@v4.2.3
with:
path: ~/.platformio
key: platformio-${{ matrix.pio_cache_key }}
- name: Cache platformio
if: github.ref != 'refs/heads/dev'
uses: actions/cache/restore@v4.2.3
with:
path: ~/.platformio
key: platformio-${{ matrix.pio_cache_key }}
- name: Register problem matchers
run: |
echo "::add-matcher::.github/workflows/matchers/clang-tidy.json"
echo "::add-matcher::.github/workflows/matchers/gcc.json"
# Can be removed as soon as esphome-lint container is fixed
- name: Add missing pexpect
run: pip install pexpect
- name: Run lint-cpp
run: script/lint-cpp -c
working-directory: ${{ env.esphome_directory }}
- name: Suggest changes
echo "::add-matcher::.github/workflows/matchers/clang-tidy.json"
- name: Run 'pio run --list-targets -e esp32-idf-tidy'
if: matrix.name == 'Run script/clang-tidy for ESP32 IDF'
run: |
. venv/bin/activate
mkdir -p .temp
pio run --list-targets -e esp32-idf-tidy
- name: Run clang-tidy
run: |
. venv/bin/activate
script/clang-tidy --all-headers --fix ${{ matrix.options }} ../components
env:
# Also cache libdeps, store them in a ~/.platformio subfolder
PLATFORMIO_LIBDEPS_DIR: ~/.platformio/libdeps
- name: Suggested changes
run: script/ci-suggest-changes
working-directory: ${{ env.esphome_directory }}
lint-python:
env:
esphome_directory: esphome
# Don't use the esphome-lint docker image because it may contain outdated requirements.
# This way, all dependencies are cached via the cache action.
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.9'
- name: Cache pip modules
uses: actions/cache@v1
with:
path: ~/.cache/pip
key: esphome-pip-3.9-${{ hashFiles('setup.py') }}
restore-keys: |
esphome-pip-3.9-
- name: 💣Clone esphome project
run: git clone https://github.com/esphome/esphome.git
- name: 💣Copy component into the esphome project
run: |
cp -r ../components/* esphome/components/
git config user.name "ci"
git config user.email "ci@github.com"
git add .
git commit -a -m "Add modbus_solax and solax_x1"
working-directory: ${{ env.esphome_directory }}
- name: Set up python environment
run: script/setup
working-directory: ${{ env.esphome_directory }}
- name: Register problem matchers
run: |
echo "::add-matcher::.github/workflows/matchers/ci-custom.json"
echo "::add-matcher::.github/workflows/matchers/lint-python.json"
echo "::add-matcher::.github/workflows/matchers/python.json"
- name: Lint Custom
run: script/ci-custom.py -c
working-directory: ${{ env.esphome_directory }}
- name: Lint Python
run: script/lint-python -c
working-directory: ${{ env.esphome_directory }}
# yamllint disable-line rule:line-length
if: always()
esphome-config:
runs-on: ubuntu-latest
name: Validate example configurations
runs-on: ubuntu-24.04
needs:
- bundle
- common
steps:
- name: ⤵️ Check out configuration from GitHub
uses: actions/checkout@v2
- name: Setup Python 3.9
uses: actions/setup-python@v1
- name: Download prepared repository
uses: pyTooling/download-artifact@v4
with:
python-version: 3.9
- name: Install dependencies
name: bundle
path: .
- name: Restore Python
uses: ./.github/actions/restore-python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
cache-key: ${{ needs.common.outputs.cache-key }}
- name: Register matcher
run: echo "::add-matcher::.github/workflows/matchers/esphome-config.json"
- name: Validate example configurations
run: |
python -m pip install --upgrade pip setuptools wheel
pip install esphome
pip list
esphome version
- name: Write secrets.yaml
shell: bash
run: 'echo -e "wifi_ssid: ssid\nwifi_password: password\nmqtt_host: host\nmqtt_username: username\nmqtt_password: password" > secrets.yaml'
- run: |
esphome -s external_components_source components config esp32-ble-example.yaml
. venv/bin/activate
echo -e "wifi_ssid: ssid\nwifi_password: password\nmqtt_host: host\nmqtt_username: username\nmqtt_password: password" > secrets.yaml
for YAML in esp*.yaml; do
esphome -s external_components_source components config $YAML
done
- name: Validate test configurations
run: |
. venv/bin/activate
echo -e "wifi_ssid: ssid\nwifi_password: password\nmqtt_host: host\nmqtt_username: username\nmqtt_password: password" > tests/secrets.yaml
for YAML in tests/esp*.yaml; do
esphome -s external_components_source ../components config $YAML
done
esphome-compile:
runs-on: ubuntu-latest
needs: [esphome-config]
name: Build example configurations
runs-on: ubuntu-24.04
needs:
- bundle
- common
steps:
- name: ⤵️ Check out configuration from GitHub
uses: actions/checkout@v2
- name: Cache .esphome
uses: actions/cache@v2
- name: Download prepared repository
uses: pyTooling/download-artifact@v4
with:
path: .esphome
key: esphome-compile-esphome-${{ hashFiles('*.yaml') }}
restore-keys: esphome-compile-esphome-
- name: Cache .pioenvs
uses: actions/cache@v2
name: bundle
path: .
- name: Restore Python
uses: ./.github/actions/restore-python
with:
path: .pioenvs
key: esphome-compile-pioenvs-${{ hashFiles('*.yaml') }}
restore-keys: esphome-compile-pioenvs-
- name: Set up Python 3.9
uses: actions/setup-python@v1
with:
python-version: 3.9
- name: Install dependencies
python-version: ${{ env.DEFAULT_PYTHON }}
cache-key: ${{ needs.common.outputs.cache-key }}
- name: Compile example configurations
run: |
python -m pip install --upgrade pip setuptools wheel
pip install esphome
pip list
esphome version
- name: Register problem matchers
. venv/bin/activate
echo -e "wifi_ssid: ssid\nwifi_password: password\nmqtt_host: host\nmqtt_username: username\nmqtt_password: password" > secrets.yaml
for YAML in esp*faker.yaml; do
esphome -s external_components_source components compile $YAML
done
- name: Compile test configurations
run: |
echo "::add-matcher::.github/workflows/matchers/gcc.json"
echo "::add-matcher::.github/workflows/matchers/python.json"
- name: Write secrets.yaml
shell: bash
run: 'echo -e "wifi_ssid: ssid\nwifi_password: password\nmqtt_host: host\nmqtt_username: username\nmqtt_password: password" > secrets.yaml'
- run: |
esphome -s external_components_source components compile esp32-ble-example.yaml
. venv/bin/activate
echo -e "wifi_ssid: ssid\nwifi_password: password\nmqtt_host: host\nmqtt_username: username\nmqtt_password: password" > tests/secrets.yaml
esphome -s external_components_source ../components compile tests/esp32c6-compatibility-test.yaml

View File

@@ -0,0 +1,14 @@
{
"problemMatcher": [
{
"owner": "esphome-config",
"severity": "warning",
"pattern": [
{
"regexp": "^WARNING Using `([^`]+)` is deprecated and will be removed(.*)$",
"message": 1
}
]
}
]
}

View File

@@ -1,28 +1,45 @@
# See https://pre-commit.com for more information
# See https://pre-commit.com/hooks.html for more hooks
# See https://github.com/rytilahti/python-miio/blob/master/.pre-commit-config.yaml
repos:
- repo: https://github.com/ambv/black
rev: 22.1.0
- repo: https://github.com/pre-commit/mirrors-isort
rev: v5.10.1
hooks:
- id: isort
- repo: https://github.com/astral-sh/ruff-pre-commit
# Ruff version.
rev: v0.5.5
hooks:
# Run the linter.
- id: ruff
args: [--fix]
# Run the formatter.
- id: ruff-format
- repo: https://github.com/psf/black-pre-commit-mirror
rev: 24.4.2
hooks:
- id: black
args:
- --safe
- --quiet
files: ^((components|esphome|script|tests)/.+)?[^/]+\.py$
- repo: https://gitlab.com/pycqa/flake8
rev: 3.9.2
- repo: https://github.com/PyCQA/flake8
rev: 7.1.0
hooks:
- id: flake8
additional_dependencies:
- flake8-docstrings==1.5.0
- pydocstyle==5.1.1
files: ^(components|esphome|tests)/.+\.py$
- repo: https://github.com/asottile/pyupgrade
rev: v2.31.0
rev: v3.19.1
hooks:
- id: pyupgrade
args: [--py38-plus]
- repo: https://github.com/pocc/pre-commit-hooks
rev: v1.3.5
args: [--py311-plus]
- repo: https://github.com/adrienverge/yamllint.git
rev: v1.35.1
hooks:
- id: yamllint
- repo: https://github.com/pre-commit/mirrors-clang-format
rev: v13.0.1
hooks:
- id: clang-format
types_or: [c, c++]

View File

@@ -6,16 +6,9 @@ yaml-files:
- '.yamllint'
ignore: |
/.cache/
esphome/**/*.pio*
config/automations.yaml
config/known_devices.yaml
config/scenes.yaml
config/google_calendars.yaml
config/custom_components/scheduler
config/custom_components/xiaomi_cloud_map_extractor
config/custom_components/zha_map
config/custom_components/hacs
.clang-format
.esphome/
tests/.esphome/
rules:
braces:

113
README.md
View File

@@ -6,115 +6,20 @@
![GitHub watchers](https://img.shields.io/github/watchers/syssi/esphome-votronic)
[!["Buy Me A Coffee"](https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg)](https://www.buymeacoffee.com/syssi)
ESPHome component to monitor votronic devices via BLE
ESPHome component to monitor votronic devices via BLE or Display Link
## Supported devices
![Lovelace entities card of the Solar charger](images/lovelace-entities-card-solar-charger.png "Lovelace entities card of the Solar charger")
* Bluetooth Connector S-BC
* Solar Charger SR/MPP since 2014 (S/N 14Vxx.xxxxx)
* Battery Computer S + Smart Shunt
## Setup
## Untested devices
* Battery Charger VBCS-Triple
* VPC Jupiter + Smart Shunt
## Requirements
* [ESPHome 2022.12.0 or higher](https://github.com/esphome/esphome/releases).
* Generic ESP32 board
## Installation
You can install this component with [ESPHome external components feature](https://esphome.io/components/external_components.html) like this:
```yaml
external_components:
- source: github://syssi/esphome-votronic@main
```
or just use the `esp32-ble-example.yaml` as proof of concept:
```bash
# Install esphome
pip3 install esphome
# Clone this external component
git clone https://github.com/syssi/esphome-votronic.git
cd esphome-votronic
# Create a secrets.yaml containing some setup specific secrets
cat > secrets.yaml <<EOF
wifi_ssid: MY_WIFI_SSID
wifi_password: MY_WIFI_PASSWORD
mqtt_host: MY_MQTT_HOST
mqtt_username: MY_MQTT_USERNAME
mqtt_password: MY_MQTT_PASSWORD
EOF
# Validate the configuration, create a binary, upload it, and start logs
esphome run esp32-ble-example.yaml
```
## Pairing / Bonding
TODO: Explain how to pair the ESP with the Votronic Bluetooth Connector.
## Example response all sensors enabled
```
# Battery computer
[sensor:127]: 'votronic battery voltage': Sending state 12.56000 V with 2 decimals of accuracy
[sensor:127]: 'votronic secondary battery voltage': Sending state 12.15000 V with 2 decimals of accuracy
[sensor:127]: 'votronic battery capacity': Sending state 265.00000 Ah with 0 decimals of accuracy
[sensor:127]: 'votronic state of charge': Sending state 95.00000 % with 0 decimals of accuracy
[sensor:127]: 'votronic current': Sending state -0.35800 A with 3 decimals of accuracy
[sensor:127]: 'votronic battery nominal capacity': Sending state 280.00000 Ah with 1 decimals of accuracy
[sensor:127]: 'votronic battery voltage': Sending state 12.56000 V with 2 decimals of accuracy
# Solar charger
[sensor:127]: 'votronic pv voltage': Sending state 13.98000 V with 2 decimals of accuracy
[sensor:127]: 'votronic pv current': Sending state 0.00000 A with 2 decimals of accuracy
[sensor:127]: 'votronic battery status bitmask': Sending state 0.00000 with 0 decimals of accuracy
[sensor:127]: 'votronic controller status bitmask': Sending state 9.00000 with 0 decimals of accuracy
[sensor:127]: 'votronic charged capacity': Sending state 24.00000 Ah with 0 decimals of accuracy
[sensor:127]: 'votronic charged energy': Sending state 340.00000 Wh with 0 decimals of accuracy
[sensor:127]: 'votronic pv power': Sending state 0.00000 W with 0 decimals of accuracy
```
## Protocol
```
# Battery status frame
<<< 0xE8 0x04 0xBF 0x04 0x09 0x01 0x60 0x00 0x5F 0x00 0x9A 0xFE 0xFF 0xF0 0x0A 0x5E 0x14 0x54 0x02 0x04
# MPPT status frame
<<< 0xE8 0x04 0x76 0x05 0x00 0x00 0x00 0x00 0x00 0x06 0x56 0x00 0x09 0x18 0x00 0x22 0x00 0x00 0x00
```
## Known issues
None.
## Debugging
If this component doesn't work out of the box for your device please update your configuration to increase the log level to see details about the BLE communication and incoming traffic:
```
logger:
level: VERY_VERBOSE
logs:
component: DEBUG
scheduler: INFO
mqtt: INFO
mqtt.idf: INFO
mqtt.component: INFO
mqtt.sensor: INFO
mqtt.switch: INFO
esp32_ble_tracker: DEBUG
```
* [BLE communication via the Bluetooth Controller](votronic_bluetooth.md)
* [Wired communication using the Display Link interface](votronic_display_link.md)
## References
* https://github.com/heeplr/votronic
* https://github.com/TheRealMoeder/vosodi
* https://github.com/crathje/VotronicSRDuoDig
* https://github.com/SirReal-surreal/SirReal-surreal/blob/main/2021_08_16_Votronic.json
* https://codeberg.org/scy/votonic
* https://cumulumbus.de/smart-camper-auslesen-der-batterie-und-solarinformationen-aus-dem-votronic-bluetooth-connector/

View File

@@ -1,153 +0,0 @@
import esphome.codegen as cg
import esphome.config_validation as cv
from esphome.components import esp32_ble_tracker, esp32_ble_client
from esphome.const import (
CONF_CHARACTERISTIC_UUID,
CONF_ID,
CONF_MAC_ADDRESS,
CONF_NAME,
CONF_ON_CONNECT,
CONF_ON_DISCONNECT,
CONF_SERVICE_UUID,
CONF_TRIGGER_ID,
CONF_VALUE,
)
from esphome import automation
AUTO_LOAD = ["esp32_ble_client"]
CODEOWNERS = ["@buxtronix"]
DEPENDENCIES = ["esp32_ble_tracker"]
CONF_PIN_CODE = "pin_code"
ble_client_ns = cg.esphome_ns.namespace("ble_client")
BLEClient = ble_client_ns.class_("BLEClient", esp32_ble_client.BLEClientBase)
BLEClientNode = ble_client_ns.class_("BLEClientNode")
BLEClientNodeConstRef = BLEClientNode.operator("ref").operator("const")
# Triggers
BLEClientConnectTrigger = ble_client_ns.class_(
"BLEClientConnectTrigger", automation.Trigger.template(BLEClientNodeConstRef)
)
BLEClientDisconnectTrigger = ble_client_ns.class_(
"BLEClientDisconnectTrigger", automation.Trigger.template(BLEClientNodeConstRef)
)
# Actions
BLEWriteAction = ble_client_ns.class_("BLEClientWriteAction", automation.Action)
# Espressif platformio framework is built with MAX_BLE_CONN to 3, so
# enforce this in yaml checks.
MULTI_CONF = 3
CONFIG_SCHEMA = (
cv.Schema(
{
cv.GenerateID(): cv.declare_id(BLEClient),
cv.Required(CONF_MAC_ADDRESS): cv.mac_address,
cv.Optional(CONF_NAME): cv.string,
cv.Optional(CONF_PIN_CODE, default=0): cv.int_range(min=0, max=999999),
cv.Optional(CONF_ON_CONNECT): automation.validate_automation(
{
cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(
BLEClientConnectTrigger
),
}
),
cv.Optional(CONF_ON_DISCONNECT): automation.validate_automation(
{
cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(
BLEClientDisconnectTrigger
),
}
),
}
)
.extend(cv.COMPONENT_SCHEMA)
.extend(esp32_ble_tracker.ESP_BLE_DEVICE_SCHEMA)
)
CONF_BLE_CLIENT_ID = "ble_client_id"
BLE_CLIENT_SCHEMA = cv.Schema(
{
cv.GenerateID(CONF_BLE_CLIENT_ID): cv.use_id(BLEClient),
}
)
async def register_ble_node(var, config):
parent = await cg.get_variable(config[CONF_BLE_CLIENT_ID])
cg.add(parent.register_ble_node(var))
BLE_WRITE_ACTION_SCHEMA = cv.Schema(
{
cv.GenerateID(CONF_ID): cv.use_id(BLEClient),
cv.Required(CONF_SERVICE_UUID): esp32_ble_tracker.bt_uuid,
cv.Required(CONF_CHARACTERISTIC_UUID): esp32_ble_tracker.bt_uuid,
cv.Required(CONF_VALUE): cv.templatable(cv.ensure_list(cv.hex_uint8_t)),
}
)
@automation.register_action(
"ble_client.ble_write", BLEWriteAction, BLE_WRITE_ACTION_SCHEMA
)
async def ble_write_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID])
var = cg.new_Pvariable(action_id, template_arg, paren)
value = config[CONF_VALUE]
if cg.is_template(value):
templ = await cg.templatable(value, args, cg.std_vector.template(cg.uint8))
cg.add(var.set_value_template(templ))
else:
cg.add(var.set_value_simple(value))
if len(config[CONF_SERVICE_UUID]) == len(esp32_ble_tracker.bt_uuid16_format):
cg.add(
var.set_service_uuid16(esp32_ble_tracker.as_hex(config[CONF_SERVICE_UUID]))
)
elif len(config[CONF_SERVICE_UUID]) == len(esp32_ble_tracker.bt_uuid32_format):
cg.add(
var.set_service_uuid32(esp32_ble_tracker.as_hex(config[CONF_SERVICE_UUID]))
)
elif len(config[CONF_SERVICE_UUID]) == len(esp32_ble_tracker.bt_uuid128_format):
uuid128 = esp32_ble_tracker.as_reversed_hex_array(config[CONF_SERVICE_UUID])
cg.add(var.set_service_uuid128(uuid128))
if len(config[CONF_CHARACTERISTIC_UUID]) == len(esp32_ble_tracker.bt_uuid16_format):
cg.add(
var.set_char_uuid16(
esp32_ble_tracker.as_hex(config[CONF_CHARACTERISTIC_UUID])
)
)
elif len(config[CONF_CHARACTERISTIC_UUID]) == len(
esp32_ble_tracker.bt_uuid32_format
):
cg.add(
var.set_char_uuid32(
esp32_ble_tracker.as_hex(config[CONF_CHARACTERISTIC_UUID])
)
)
elif len(config[CONF_CHARACTERISTIC_UUID]) == len(
esp32_ble_tracker.bt_uuid128_format
):
uuid128 = esp32_ble_tracker.as_reversed_hex_array(
config[CONF_CHARACTERISTIC_UUID]
)
cg.add(var.set_char_uuid128(uuid128))
return var
async def to_code(config):
var = cg.new_Pvariable(config[CONF_ID])
await cg.register_component(var, config)
await esp32_ble_tracker.register_client(var, config)
cg.add(var.set_address(config[CONF_MAC_ADDRESS].as_hex))
cg.add(var.set_pin_code(config[CONF_PIN_CODE]))
for conf in config.get(CONF_ON_CONNECT, []):
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var)
await automation.build_automation(trigger, [], conf)
for conf in config.get(CONF_ON_DISCONNECT, []):
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var)
await automation.build_automation(trigger, [], conf)

View File

@@ -1,75 +0,0 @@
#include "automation.h"
#include <esp_bt_defs.h>
#include <esp_gap_ble_api.h>
#include <esp_gattc_api.h>
#include "esphome/core/log.h"
namespace esphome {
namespace ble_client {
static const char *const TAG = "ble_client.automation";
void BLEWriterClientNode::write(const std::vector<uint8_t> &value) {
if (this->node_state != espbt::ClientState::ESTABLISHED) {
ESP_LOGW(TAG, "Cannot write to BLE characteristic - not connected");
return;
} else if (this->ble_char_handle_ == 0) {
ESP_LOGW(TAG, "Cannot write to BLE characteristic - characteristic not found");
return;
}
esp_gatt_write_type_t write_type;
if (this->char_props_ & ESP_GATT_CHAR_PROP_BIT_WRITE) {
write_type = ESP_GATT_WRITE_TYPE_RSP;
ESP_LOGD(TAG, "Write type: ESP_GATT_WRITE_TYPE_RSP");
} else if (this->char_props_ & ESP_GATT_CHAR_PROP_BIT_WRITE_NR) {
write_type = ESP_GATT_WRITE_TYPE_NO_RSP;
ESP_LOGD(TAG, "Write type: ESP_GATT_WRITE_TYPE_NO_RSP");
} else {
ESP_LOGE(TAG, "Characteristic %s does not allow writing", this->char_uuid_.to_string().c_str());
return;
}
ESP_LOGVV(TAG, "Will write %d bytes: %s", value.size(), format_hex_pretty(value).c_str());
esp_err_t err =
esp_ble_gattc_write_char(this->parent()->get_gattc_if(), this->parent()->get_conn_id(), this->ble_char_handle_,
value.size(), const_cast<uint8_t *>(value.data()), write_type, ESP_GATT_AUTH_REQ_NONE);
if (err != ESP_OK) {
ESP_LOGE(TAG, "Error writing to characteristic: %s!", esp_err_to_name(err));
}
}
void BLEWriterClientNode::gattc_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_t gattc_if,
esp_ble_gattc_cb_param_t *param) {
switch (event) {
case ESP_GATTC_REG_EVT:
break;
case ESP_GATTC_OPEN_EVT:
this->node_state = espbt::ClientState::ESTABLISHED;
ESP_LOGD(TAG, "Connection established with %s", ble_client_->address_str().c_str());
break;
case ESP_GATTC_SEARCH_CMPL_EVT: {
auto *chr = this->parent()->get_characteristic(this->service_uuid_, this->char_uuid_);
if (chr == nullptr) {
ESP_LOGW("ble_write_action", "Characteristic %s was not found in service %s",
this->char_uuid_.to_string().c_str(), this->service_uuid_.to_string().c_str());
break;
}
this->ble_char_handle_ = chr->handle;
this->char_props_ = chr->properties;
this->node_state = espbt::ClientState::ESTABLISHED;
ESP_LOGD(TAG, "Found characteristic %s on device %s", this->char_uuid_.to_string().c_str(),
ble_client_->address_str().c_str());
break;
}
case ESP_GATTC_DISCONNECT_EVT:
this->node_state = espbt::ClientState::IDLE;
this->ble_char_handle_ = 0;
ESP_LOGD(TAG, "Disconnected from %s", ble_client_->address_str().c_str());
break;
default:
break;
}
}
} // namespace ble_client
} // namespace esphome

View File

@@ -1,100 +0,0 @@
#pragma once
#include <utility>
#include <vector>
#include "esphome/core/automation.h"
#include "esphome/components/ble_client/ble_client.h"
#ifdef USE_ESP32
namespace esphome {
namespace ble_client {
class BLEClientConnectTrigger : public Trigger<>, public BLEClientNode {
public:
explicit BLEClientConnectTrigger(BLEClient *parent) { parent->register_ble_node(this); }
void loop() override {}
void gattc_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_t gattc_if,
esp_ble_gattc_cb_param_t *param) override {
if (event == ESP_GATTC_SEARCH_CMPL_EVT) {
this->node_state = espbt::ClientState::ESTABLISHED;
this->trigger();
}
}
};
class BLEClientDisconnectTrigger : public Trigger<>, public BLEClientNode {
public:
explicit BLEClientDisconnectTrigger(BLEClient *parent) { parent->register_ble_node(this); }
void loop() override {}
void gattc_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_t gattc_if,
esp_ble_gattc_cb_param_t *param) override {
if (event == ESP_GATTC_DISCONNECT_EVT &&
memcmp(param->disconnect.remote_bda, this->parent_->get_remote_bda(), 6) == 0)
this->trigger();
if (event == ESP_GATTC_SEARCH_CMPL_EVT)
this->node_state = espbt::ClientState::ESTABLISHED;
}
};
class BLEWriterClientNode : public BLEClientNode {
public:
BLEWriterClientNode(BLEClient *ble_client) {
ble_client->register_ble_node(this);
ble_client_ = ble_client;
}
// Attempts to write the contents of value to char_uuid_.
void write(const std::vector<uint8_t> &value);
void set_service_uuid16(uint16_t uuid) { this->service_uuid_ = espbt::ESPBTUUID::from_uint16(uuid); }
void set_service_uuid32(uint32_t uuid) { this->service_uuid_ = espbt::ESPBTUUID::from_uint32(uuid); }
void set_service_uuid128(uint8_t *uuid) { this->service_uuid_ = espbt::ESPBTUUID::from_raw(uuid); }
void set_char_uuid16(uint16_t uuid) { this->char_uuid_ = espbt::ESPBTUUID::from_uint16(uuid); }
void set_char_uuid32(uint32_t uuid) { this->char_uuid_ = espbt::ESPBTUUID::from_uint32(uuid); }
void set_char_uuid128(uint8_t *uuid) { this->char_uuid_ = espbt::ESPBTUUID::from_raw(uuid); }
void gattc_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_t gattc_if,
esp_ble_gattc_cb_param_t *param) override;
private:
BLEClient *ble_client_;
int ble_char_handle_ = 0;
esp_gatt_char_prop_t char_props_;
espbt::ESPBTUUID service_uuid_;
espbt::ESPBTUUID char_uuid_;
};
template<typename... Ts> class BLEClientWriteAction : public Action<Ts...>, public BLEWriterClientNode {
public:
BLEClientWriteAction(BLEClient *ble_client) : BLEWriterClientNode(ble_client) {}
void play(Ts... x) override {
if (has_simple_value_) {
return write(this->value_simple_);
} else {
return write(this->value_template_(x...));
}
}
void set_value_template(std::function<std::vector<uint8_t>(Ts...)> func) {
this->value_template_ = std::move(func);
has_simple_value_ = false;
}
void set_value_simple(const std::vector<uint8_t> &value) {
this->value_simple_ = value;
has_simple_value_ = true;
}
private:
bool has_simple_value_ = true;
std::vector<uint8_t> value_simple_;
std::function<std::vector<uint8_t>(Ts...)> value_template_{};
};
} // namespace ble_client
} // namespace esphome
#endif

View File

@@ -1,95 +0,0 @@
#include "ble_client.h"
#include "esphome/components/esp32_ble_client/ble_client_base.h"
#include "esphome/components/esp32_ble_tracker/esp32_ble_tracker.h"
#include "esphome/core/application.h"
#include "esphome/core/helpers.h"
#include "esphome/core/log.h"
#ifdef USE_ESP32
namespace esphome {
namespace ble_client {
static const char *const TAG = "ble_client";
void BLEClient::setup() {
BLEClientBase::setup();
this->enabled = true;
}
void BLEClient::loop() {
BLEClientBase::loop();
for (auto *node : this->nodes_)
node->loop();
}
void BLEClient::dump_config() {
ESP_LOGCONFIG(TAG, "BLE Client:");
ESP_LOGCONFIG(TAG, " Address: %s", this->address_str().c_str());
}
bool BLEClient::parse_device(const espbt::ESPBTDevice &device) {
if (!this->enabled)
return false;
return BLEClientBase::parse_device(device);
}
void BLEClient::set_enabled(bool enabled) {
if (enabled == this->enabled)
return;
if (!enabled && this->state() != espbt::ClientState::IDLE) {
ESP_LOGI(TAG, "[%s] Disabling BLE client.", this->address_str().c_str());
auto ret = esp_ble_gattc_close(this->gattc_if_, this->conn_id_);
if (ret) {
ESP_LOGW(TAG, "esp_ble_gattc_close error, address=%s status=%d", this->address_str().c_str(), ret);
}
}
this->enabled = enabled;
}
bool BLEClient::gattc_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_t esp_gattc_if,
esp_ble_gattc_cb_param_t *param) {
bool all_established = this->all_nodes_established_();
if (!BLEClientBase::gattc_event_handler(event, esp_gattc_if, param))
return false;
for (auto *node : this->nodes_)
node->gattc_event_handler(event, esp_gattc_if, param);
// Delete characteristics after clients have used them to save RAM.
if (!all_established && this->all_nodes_established_()) {
for (auto &svc : this->services_)
delete svc; // NOLINT(cppcoreguidelines-owning-memory)
this->services_.clear();
}
return true;
}
void BLEClient::gap_event_handler(esp_gap_ble_cb_event_t event, esp_ble_gap_cb_param_t *param) {
BLEClientBase::gap_event_handler(event, param);
for (auto *node : this->nodes_)
node->gap_event_handler(event, param);
}
void BLEClient::set_state(espbt::ClientState state) {
BLEClientBase::set_state(state);
for (auto &node : nodes_)
node->node_state = state;
}
bool BLEClient::all_nodes_established_() {
if (this->state() != espbt::ClientState::ESTABLISHED)
return false;
for (auto &node : nodes_) {
if (node->node_state != espbt::ClientState::ESTABLISHED)
return false;
}
return true;
}
} // namespace ble_client
} // namespace esphome
#endif

View File

@@ -1,81 +0,0 @@
#pragma once
#include "esphome/components/esp32_ble_client/ble_client_base.h"
#include "esphome/components/esp32_ble_tracker/esp32_ble_tracker.h"
#include "esphome/core/component.h"
#include "esphome/core/helpers.h"
#ifdef USE_ESP32
#include <esp_bt_defs.h>
#include <esp_gap_ble_api.h>
#include <esp_gatt_common_api.h>
#include <esp_gattc_api.h>
#include <array>
#include <string>
#include <vector>
namespace esphome {
namespace ble_client {
namespace espbt = esphome::esp32_ble_tracker;
using namespace esp32_ble_client;
class BLEClient;
class BLEClientNode {
public:
virtual void gattc_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_t gattc_if,
esp_ble_gattc_cb_param_t *param) = 0;
virtual void gap_event_handler(esp_gap_ble_cb_event_t event, esp_ble_gap_cb_param_t *param) {}
virtual void loop() {}
void set_address(uint64_t address) { address_ = address; }
espbt::ESPBTClient *client;
// This should be transitioned to Established once the node no longer needs
// the services/descriptors/characteristics of the parent client. This will
// allow some memory to be freed.
espbt::ClientState node_state;
BLEClient *parent() { return this->parent_; }
void set_ble_client_parent(BLEClient *parent) { this->parent_ = parent; }
protected:
BLEClient *parent_;
uint64_t address_;
};
class BLEClient : public BLEClientBase {
public:
void setup() override;
void dump_config() override;
void loop() override;
bool gattc_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_t gattc_if,
esp_ble_gattc_cb_param_t *param) override;
void gap_event_handler(esp_gap_ble_cb_event_t event, esp_ble_gap_cb_param_t *param) override;
bool parse_device(const espbt::ESPBTDevice &device) override;
void set_enabled(bool enabled);
void register_ble_node(BLEClientNode *node) {
node->client = this;
node->set_ble_client_parent(this);
this->nodes_.push_back(node);
}
bool enabled;
void set_state(espbt::ClientState state) override;
protected:
bool all_nodes_established_();
std::vector<BLEClientNode *> nodes_;
};
} // namespace ble_client
} // namespace esphome
#endif

View File

@@ -1,68 +0,0 @@
import esphome.codegen as cg
import esphome.config_validation as cv
from esphome.components import ble_client, esp32_ble_tracker, output
from esphome.const import CONF_CHARACTERISTIC_UUID, CONF_ID, CONF_SERVICE_UUID
from .. import ble_client_ns
DEPENDENCIES = ["ble_client"]
CONF_REQUIRE_RESPONSE = "require_response"
BLEBinaryOutput = ble_client_ns.class_(
"BLEBinaryOutput", output.BinaryOutput, ble_client.BLEClientNode, cg.Component
)
CONFIG_SCHEMA = cv.All(
output.BINARY_OUTPUT_SCHEMA.extend(
{
cv.Required(CONF_ID): cv.declare_id(BLEBinaryOutput),
cv.Required(CONF_SERVICE_UUID): esp32_ble_tracker.bt_uuid,
cv.Required(CONF_CHARACTERISTIC_UUID): esp32_ble_tracker.bt_uuid,
cv.Optional(CONF_REQUIRE_RESPONSE, default=False): cv.boolean,
}
)
.extend(cv.COMPONENT_SCHEMA)
.extend(ble_client.BLE_CLIENT_SCHEMA)
)
def to_code(config):
var = cg.new_Pvariable(config[CONF_ID])
if len(config[CONF_SERVICE_UUID]) == len(esp32_ble_tracker.bt_uuid16_format):
cg.add(
var.set_service_uuid16(esp32_ble_tracker.as_hex(config[CONF_SERVICE_UUID]))
)
elif len(config[CONF_SERVICE_UUID]) == len(esp32_ble_tracker.bt_uuid32_format):
cg.add(
var.set_service_uuid32(esp32_ble_tracker.as_hex(config[CONF_SERVICE_UUID]))
)
elif len(config[CONF_SERVICE_UUID]) == len(esp32_ble_tracker.bt_uuid128_format):
uuid128 = esp32_ble_tracker.as_reversed_hex_array(config[CONF_SERVICE_UUID])
cg.add(var.set_service_uuid128(uuid128))
if len(config[CONF_CHARACTERISTIC_UUID]) == len(esp32_ble_tracker.bt_uuid16_format):
cg.add(
var.set_char_uuid16(
esp32_ble_tracker.as_hex(config[CONF_CHARACTERISTIC_UUID])
)
)
elif len(config[CONF_CHARACTERISTIC_UUID]) == len(
esp32_ble_tracker.bt_uuid32_format
):
cg.add(
var.set_char_uuid32(
esp32_ble_tracker.as_hex(config[CONF_CHARACTERISTIC_UUID])
)
)
elif len(config[CONF_CHARACTERISTIC_UUID]) == len(
esp32_ble_tracker.bt_uuid128_format
):
uuid128 = esp32_ble_tracker.as_reversed_hex_array(
config[CONF_CHARACTERISTIC_UUID]
)
cg.add(var.set_char_uuid128(uuid128))
cg.add(var.set_require_response(config[CONF_REQUIRE_RESPONSE]))
yield output.register_output(var, config)
yield ble_client.register_ble_node(var, config)
yield cg.register_component(var, config)

View File

@@ -1,75 +0,0 @@
#include "ble_binary_output.h"
#include "esphome/core/log.h"
#include "esphome/components/esp32_ble_tracker/esp32_ble_tracker.h"
#ifdef USE_ESP32
namespace esphome {
namespace ble_client {
static const char *const TAG = "ble_binary_output";
void BLEBinaryOutput::dump_config() {
ESP_LOGCONFIG(TAG, "BLE Binary Output:");
ESP_LOGCONFIG(TAG, " MAC address : %s", this->parent_->address_str().c_str());
ESP_LOGCONFIG(TAG, " Service UUID : %s", this->service_uuid_.to_string().c_str());
ESP_LOGCONFIG(TAG, " Characteristic UUID: %s", this->char_uuid_.to_string().c_str());
LOG_BINARY_OUTPUT(this);
}
void BLEBinaryOutput::gattc_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_t gattc_if,
esp_ble_gattc_cb_param_t *param) {
switch (event) {
case ESP_GATTC_OPEN_EVT:
this->client_state_ = espbt::ClientState::ESTABLISHED;
ESP_LOGW(TAG, "[%s] Connected successfully!", this->char_uuid_.to_string().c_str());
break;
case ESP_GATTC_DISCONNECT_EVT:
ESP_LOGW(TAG, "[%s] Disconnected", this->char_uuid_.to_string().c_str());
this->client_state_ = espbt::ClientState::IDLE;
break;
case ESP_GATTC_WRITE_CHAR_EVT: {
if (param->write.status == 0) {
break;
}
auto *chr = this->parent()->get_characteristic(this->service_uuid_, this->char_uuid_);
if (chr == nullptr) {
ESP_LOGW(TAG, "[%s] Characteristic not found.", this->char_uuid_.to_string().c_str());
break;
}
if (param->write.handle == chr->handle) {
ESP_LOGW(TAG, "[%s] Write error, status=%d", this->char_uuid_.to_string().c_str(), param->write.status);
}
break;
}
default:
break;
}
}
void BLEBinaryOutput::write_state(bool state) {
if (this->client_state_ != espbt::ClientState::ESTABLISHED) {
ESP_LOGW(TAG, "[%s] Not connected to BLE client. State update can not be written.",
this->char_uuid_.to_string().c_str());
return;
}
auto *chr = this->parent()->get_characteristic(this->service_uuid_, this->char_uuid_);
if (chr == nullptr) {
ESP_LOGW(TAG, "[%s] Characteristic not found. State update can not be written.",
this->char_uuid_.to_string().c_str());
return;
}
uint8_t state_as_uint = (uint8_t) state;
ESP_LOGV(TAG, "[%s] Write State: %d", this->char_uuid_.to_string().c_str(), state_as_uint);
if (this->require_response_) {
chr->write_value(&state_as_uint, sizeof(state_as_uint), ESP_GATT_WRITE_TYPE_RSP);
} else {
chr->write_value(&state_as_uint, sizeof(state_as_uint), ESP_GATT_WRITE_TYPE_NO_RSP);
}
}
} // namespace ble_client
} // namespace esphome
#endif

View File

@@ -1,41 +0,0 @@
#pragma once
#include "esphome/core/component.h"
#include "esphome/components/ble_client/ble_client.h"
#include "esphome/components/esp32_ble_tracker/esp32_ble_tracker.h"
#include "esphome/components/output/binary_output.h"
#ifdef USE_ESP32
#include <esp_gattc_api.h>
namespace esphome {
namespace ble_client {
namespace espbt = esphome::esp32_ble_tracker;
class BLEBinaryOutput : public output::BinaryOutput, public BLEClientNode, public Component {
public:
void dump_config() override;
void loop() override {}
float get_setup_priority() const override { return setup_priority::DATA; }
void set_service_uuid16(uint16_t uuid) { this->service_uuid_ = espbt::ESPBTUUID::from_uint16(uuid); }
void set_service_uuid32(uint32_t uuid) { this->service_uuid_ = espbt::ESPBTUUID::from_uint32(uuid); }
void set_service_uuid128(uint8_t *uuid) { this->service_uuid_ = espbt::ESPBTUUID::from_raw(uuid); }
void set_char_uuid16(uint16_t uuid) { this->char_uuid_ = espbt::ESPBTUUID::from_uint16(uuid); }
void set_char_uuid32(uint32_t uuid) { this->char_uuid_ = espbt::ESPBTUUID::from_uint32(uuid); }
void set_char_uuid128(uint8_t *uuid) { this->char_uuid_ = espbt::ESPBTUUID::from_raw(uuid); }
void gattc_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_t gattc_if,
esp_ble_gattc_cb_param_t *param) override;
void set_require_response(bool response) { this->require_response_ = response; }
protected:
void write_state(bool state) override;
bool require_response_;
espbt::ESPBTUUID service_uuid_;
espbt::ESPBTUUID char_uuid_;
espbt::ClientState client_state_;
};
} // namespace ble_client
} // namespace esphome
#endif

View File

@@ -1,174 +0,0 @@
import esphome.codegen as cg
import esphome.config_validation as cv
from esphome.components import sensor, ble_client, esp32_ble_tracker
from esphome.const import (
CONF_CHARACTERISTIC_UUID,
CONF_LAMBDA,
CONF_TRIGGER_ID,
CONF_TYPE,
CONF_SERVICE_UUID,
DEVICE_CLASS_SIGNAL_STRENGTH,
STATE_CLASS_MEASUREMENT,
UNIT_DECIBEL_MILLIWATT,
)
from esphome import automation
from .. import ble_client_ns
DEPENDENCIES = ["ble_client"]
CONF_DESCRIPTOR_UUID = "descriptor_uuid"
CONF_NOTIFY = "notify"
CONF_ON_NOTIFY = "on_notify"
TYPE_CHARACTERISTIC = "characteristic"
TYPE_RSSI = "rssi"
adv_data_t = cg.std_vector.template(cg.uint8)
adv_data_t_const_ref = adv_data_t.operator("ref").operator("const")
BLESensor = ble_client_ns.class_(
"BLESensor", sensor.Sensor, cg.PollingComponent, ble_client.BLEClientNode
)
BLESensorNotifyTrigger = ble_client_ns.class_(
"BLESensorNotifyTrigger", automation.Trigger.template(cg.float_)
)
BLEClientRssiSensor = ble_client_ns.class_(
"BLEClientRSSISensor", sensor.Sensor, cg.PollingComponent, ble_client.BLEClientNode
)
def checkType(value):
if CONF_TYPE not in value and CONF_SERVICE_UUID in value:
raise cv.Invalid(
"Looks like you're trying to create a ble characteristic sensor. Please add `type: characteristic` to your sensor config."
)
return value
CONFIG_SCHEMA = cv.All(
checkType,
cv.typed_schema(
{
TYPE_CHARACTERISTIC: sensor.sensor_schema(
BLESensor,
accuracy_decimals=0,
)
.extend(cv.polling_component_schema("60s"))
.extend(ble_client.BLE_CLIENT_SCHEMA)
.extend(
{
cv.Required(CONF_SERVICE_UUID): esp32_ble_tracker.bt_uuid,
cv.Required(CONF_CHARACTERISTIC_UUID): esp32_ble_tracker.bt_uuid,
cv.Optional(CONF_DESCRIPTOR_UUID): esp32_ble_tracker.bt_uuid,
cv.Optional(CONF_LAMBDA): cv.returning_lambda,
cv.Optional(CONF_NOTIFY, default=False): cv.boolean,
cv.Optional(CONF_ON_NOTIFY): automation.validate_automation(
{
cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(
BLESensorNotifyTrigger
),
}
),
}
),
TYPE_RSSI: sensor.sensor_schema(
BLEClientRssiSensor,
accuracy_decimals=0,
unit_of_measurement=UNIT_DECIBEL_MILLIWATT,
device_class=DEVICE_CLASS_SIGNAL_STRENGTH,
state_class=STATE_CLASS_MEASUREMENT,
)
.extend(cv.polling_component_schema("60s"))
.extend(ble_client.BLE_CLIENT_SCHEMA),
},
lower=True,
),
)
async def rssi_sensor_to_code(config):
var = await sensor.new_sensor(config)
await cg.register_component(var, config)
await ble_client.register_ble_node(var, config)
async def characteristic_sensor_to_code(config):
var = await sensor.new_sensor(config)
if len(config[CONF_SERVICE_UUID]) == len(esp32_ble_tracker.bt_uuid16_format):
cg.add(
var.set_service_uuid16(esp32_ble_tracker.as_hex(config[CONF_SERVICE_UUID]))
)
elif len(config[CONF_SERVICE_UUID]) == len(esp32_ble_tracker.bt_uuid32_format):
cg.add(
var.set_service_uuid32(esp32_ble_tracker.as_hex(config[CONF_SERVICE_UUID]))
)
elif len(config[CONF_SERVICE_UUID]) == len(esp32_ble_tracker.bt_uuid128_format):
uuid128 = esp32_ble_tracker.as_reversed_hex_array(config[CONF_SERVICE_UUID])
cg.add(var.set_service_uuid128(uuid128))
if len(config[CONF_CHARACTERISTIC_UUID]) == len(esp32_ble_tracker.bt_uuid16_format):
cg.add(
var.set_char_uuid16(
esp32_ble_tracker.as_hex(config[CONF_CHARACTERISTIC_UUID])
)
)
elif len(config[CONF_CHARACTERISTIC_UUID]) == len(
esp32_ble_tracker.bt_uuid32_format
):
cg.add(
var.set_char_uuid32(
esp32_ble_tracker.as_hex(config[CONF_CHARACTERISTIC_UUID])
)
)
elif len(config[CONF_CHARACTERISTIC_UUID]) == len(
esp32_ble_tracker.bt_uuid128_format
):
uuid128 = esp32_ble_tracker.as_reversed_hex_array(
config[CONF_CHARACTERISTIC_UUID]
)
cg.add(var.set_char_uuid128(uuid128))
if CONF_DESCRIPTOR_UUID in config:
if len(config[CONF_DESCRIPTOR_UUID]) == len(esp32_ble_tracker.bt_uuid16_format):
cg.add(
var.set_descr_uuid16(
esp32_ble_tracker.as_hex(config[CONF_DESCRIPTOR_UUID])
)
)
elif len(config[CONF_DESCRIPTOR_UUID]) == len(
esp32_ble_tracker.bt_uuid32_format
):
cg.add(
var.set_descr_uuid32(
esp32_ble_tracker.as_hex(config[CONF_DESCRIPTOR_UUID])
)
)
elif len(config[CONF_DESCRIPTOR_UUID]) == len(
esp32_ble_tracker.bt_uuid128_format
):
uuid128 = esp32_ble_tracker.as_reversed_hex_array(
config[CONF_DESCRIPTOR_UUID]
)
cg.add(var.set_descr_uuid128(uuid128))
if CONF_LAMBDA in config:
lambda_ = await cg.process_lambda(
config[CONF_LAMBDA], [(adv_data_t_const_ref, "x")], return_type=cg.float_
)
cg.add(var.set_data_to_value(lambda_))
await cg.register_component(var, config)
await ble_client.register_ble_node(var, config)
cg.add(var.set_enable_notify(config[CONF_NOTIFY]))
for conf in config.get(CONF_ON_NOTIFY, []):
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var)
await ble_client.register_ble_node(trigger, config)
await automation.build_automation(trigger, [(float, "x")], conf)
async def to_code(config):
if config[CONF_TYPE] == TYPE_RSSI:
await rssi_sensor_to_code(config)
elif config[CONF_TYPE] == TYPE_CHARACTERISTIC:
await characteristic_sensor_to_code(config)

View File

@@ -1,39 +0,0 @@
#pragma once
#include "esphome/core/automation.h"
#include "esphome/components/ble_client/sensor/ble_sensor.h"
#ifdef USE_ESP32
namespace esphome {
namespace ble_client {
class BLESensorNotifyTrigger : public Trigger<float>, public BLESensor {
public:
explicit BLESensorNotifyTrigger(BLESensor *sensor) { sensor_ = sensor; }
void gattc_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_t gattc_if,
esp_ble_gattc_cb_param_t *param) override {
switch (event) {
case ESP_GATTC_SEARCH_CMPL_EVT: {
this->sensor_->node_state = espbt::ClientState::ESTABLISHED;
break;
}
case ESP_GATTC_NOTIFY_EVT: {
if (param->notify.conn_id != this->sensor_->parent()->get_conn_id() ||
param->notify.handle != this->sensor_->handle)
break;
this->trigger(this->sensor_->parent()->parse_char_value(param->notify.value, param->notify.value_len));
}
default:
break;
}
}
protected:
BLESensor *sensor_;
};
} // namespace ble_client
} // namespace esphome
#endif

View File

@@ -1,78 +0,0 @@
#include "ble_rssi_sensor.h"
#include "esphome/core/log.h"
#include "esphome/core/application.h"
#include "esphome/core/helpers.h"
#include "esphome/components/esp32_ble_tracker/esp32_ble_tracker.h"
#ifdef USE_ESP32
namespace esphome {
namespace ble_client {
static const char *const TAG = "ble_rssi_sensor";
void BLEClientRSSISensor::loop() {}
void BLEClientRSSISensor::dump_config() {
LOG_SENSOR("", "BLE Client RSSI Sensor", this);
ESP_LOGCONFIG(TAG, " MAC address : %s", this->parent()->address_str().c_str());
LOG_UPDATE_INTERVAL(this);
}
void BLEClientRSSISensor::gattc_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_t gattc_if,
esp_ble_gattc_cb_param_t *param) {
switch (event) {
case ESP_GATTC_OPEN_EVT: {
if (param->open.status == ESP_GATT_OK) {
ESP_LOGI(TAG, "[%s] Connected successfully!", this->get_name().c_str());
break;
}
break;
}
case ESP_GATTC_DISCONNECT_EVT: {
ESP_LOGW(TAG, "[%s] Disconnected!", this->get_name().c_str());
this->status_set_warning();
this->publish_state(NAN);
break;
}
case ESP_GATTC_SEARCH_CMPL_EVT:
this->node_state = espbt::ClientState::ESTABLISHED;
break;
default:
break;
}
}
void BLEClientRSSISensor::gap_event_handler(esp_gap_ble_cb_event_t event, esp_ble_gap_cb_param_t *param) {
switch (event) {
// server response on RSSI request:
case ESP_GAP_BLE_READ_RSSI_COMPLETE_EVT:
if (param->read_rssi_cmpl.status == ESP_BT_STATUS_SUCCESS) {
int8_t rssi = param->read_rssi_cmpl.rssi;
ESP_LOGI(TAG, "ESP_GAP_BLE_READ_RSSI_COMPLETE_EVT RSSI: %d", rssi);
this->publish_state(rssi);
}
break;
default:
break;
}
}
void BLEClientRSSISensor::update() {
if (this->node_state != espbt::ClientState::ESTABLISHED) {
ESP_LOGW(TAG, "[%s] Cannot poll, not connected", this->get_name().c_str());
return;
}
ESP_LOGV(TAG, "requesting rssi from %s", this->parent()->address_str().c_str());
auto status = esp_ble_gap_read_rssi(this->parent()->get_remote_bda());
if (status != ESP_OK) {
ESP_LOGW(TAG, "esp_ble_gap_read_rssi error, address=%s, status=%d", this->parent()->address_str().c_str(), status);
this->status_set_warning();
this->publish_state(NAN);
}
}
} // namespace ble_client
} // namespace esphome
#endif

View File

@@ -1,31 +0,0 @@
#pragma once
#include "esphome/core/component.h"
#include "esphome/components/ble_client/ble_client.h"
#include "esphome/components/esp32_ble_tracker/esp32_ble_tracker.h"
#include "esphome/components/sensor/sensor.h"
#ifdef USE_ESP32
#include <esp_gattc_api.h>
namespace esphome {
namespace ble_client {
namespace espbt = esphome::esp32_ble_tracker;
class BLEClientRSSISensor : public sensor::Sensor, public PollingComponent, public BLEClientNode {
public:
void loop() override;
void update() override;
void dump_config() override;
float get_setup_priority() const override { return setup_priority::DATA; }
void gap_event_handler(esp_gap_ble_cb_event_t event, esp_ble_gap_cb_param_t *param) override;
void gattc_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_t gattc_if,
esp_ble_gattc_cb_param_t *param) override;
};
} // namespace ble_client
} // namespace esphome
#endif

View File

@@ -1,136 +0,0 @@
#include "ble_sensor.h"
#include "esphome/core/log.h"
#include "esphome/core/application.h"
#include "esphome/core/helpers.h"
#include "esphome/components/esp32_ble_tracker/esp32_ble_tracker.h"
#ifdef USE_ESP32
namespace esphome {
namespace ble_client {
static const char *const TAG = "ble_sensor";
void BLESensor::loop() {}
void BLESensor::dump_config() {
LOG_SENSOR("", "BLE Sensor", this);
ESP_LOGCONFIG(TAG, " MAC address : %s", this->parent()->address_str().c_str());
ESP_LOGCONFIG(TAG, " Service UUID : %s", this->service_uuid_.to_string().c_str());
ESP_LOGCONFIG(TAG, " Characteristic UUID: %s", this->char_uuid_.to_string().c_str());
ESP_LOGCONFIG(TAG, " Descriptor UUID : %s", this->descr_uuid_.to_string().c_str());
ESP_LOGCONFIG(TAG, " Notifications : %s", YESNO(this->notify_));
LOG_UPDATE_INTERVAL(this);
}
void BLESensor::gattc_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_t gattc_if,
esp_ble_gattc_cb_param_t *param) {
switch (event) {
case ESP_GATTC_OPEN_EVT: {
if (param->open.status == ESP_GATT_OK) {
ESP_LOGI(TAG, "[%s] Connected successfully!", this->get_name().c_str());
break;
}
break;
}
case ESP_GATTC_DISCONNECT_EVT: {
ESP_LOGW(TAG, "[%s] Disconnected!", this->get_name().c_str());
this->status_set_warning();
this->publish_state(NAN);
break;
}
case ESP_GATTC_SEARCH_CMPL_EVT: {
this->handle = 0;
auto *chr = this->parent()->get_characteristic(this->service_uuid_, this->char_uuid_);
if (chr == nullptr) {
this->status_set_warning();
this->publish_state(NAN);
ESP_LOGW(TAG, "No sensor characteristic found at service %s char %s", this->service_uuid_.to_string().c_str(),
this->char_uuid_.to_string().c_str());
break;
}
this->handle = chr->handle;
if (this->descr_uuid_.get_uuid().len > 0) {
auto *descr = chr->get_descriptor(this->descr_uuid_);
if (descr == nullptr) {
this->status_set_warning();
this->publish_state(NAN);
ESP_LOGW(TAG, "No sensor descriptor found at service %s char %s descr %s",
this->service_uuid_.to_string().c_str(), this->char_uuid_.to_string().c_str(),
this->descr_uuid_.to_string().c_str());
break;
}
this->handle = descr->handle;
}
if (this->notify_) {
auto status = esp_ble_gattc_register_for_notify(this->parent()->get_gattc_if(),
this->parent()->get_remote_bda(), chr->handle);
if (status) {
ESP_LOGW(TAG, "esp_ble_gattc_register_for_notify failed, status=%d", status);
}
} else {
this->node_state = espbt::ClientState::ESTABLISHED;
}
break;
}
case ESP_GATTC_READ_CHAR_EVT: {
if (param->read.conn_id != this->parent()->get_conn_id())
break;
if (param->read.status != ESP_GATT_OK) {
ESP_LOGW(TAG, "Error reading char at handle %d, status=%d", param->read.handle, param->read.status);
break;
}
if (param->read.handle == this->handle) {
this->status_clear_warning();
this->publish_state(this->parse_data_(param->read.value, param->read.value_len));
}
break;
}
case ESP_GATTC_NOTIFY_EVT: {
if (param->notify.conn_id != this->parent()->get_conn_id() || param->notify.handle != this->handle)
break;
ESP_LOGV(TAG, "[%s] ESP_GATTC_NOTIFY_EVT: handle=0x%x, value=0x%x", this->get_name().c_str(),
param->notify.handle, param->notify.value[0]);
this->publish_state(this->parse_data_(param->notify.value, param->notify.value_len));
break;
}
case ESP_GATTC_REG_FOR_NOTIFY_EVT: {
this->node_state = espbt::ClientState::ESTABLISHED;
break;
}
default:
break;
}
}
float BLESensor::parse_data_(uint8_t *value, uint16_t value_len) {
if (this->data_to_value_func_.has_value()) {
std::vector<uint8_t> data(value, value + value_len);
return (*this->data_to_value_func_)(data);
} else {
return value[0];
}
}
void BLESensor::update() {
if (this->node_state != espbt::ClientState::ESTABLISHED) {
ESP_LOGW(TAG, "[%s] Cannot poll, not connected", this->get_name().c_str());
return;
}
if (this->handle == 0) {
ESP_LOGW(TAG, "[%s] Cannot poll, no service or characteristic found", this->get_name().c_str());
return;
}
auto status = esp_ble_gattc_read_char(this->parent()->get_gattc_if(), this->parent()->get_conn_id(), this->handle,
ESP_GATT_AUTH_REQ_NONE);
if (status) {
this->status_set_warning();
this->publish_state(NAN);
ESP_LOGW(TAG, "[%s] Error sending read request for sensor, status=%d", this->get_name().c_str(), status);
}
}
} // namespace ble_client
} // namespace esphome
#endif

View File

@@ -1,52 +0,0 @@
#pragma once
#include "esphome/core/component.h"
#include "esphome/components/ble_client/ble_client.h"
#include "esphome/components/esp32_ble_tracker/esp32_ble_tracker.h"
#include "esphome/components/sensor/sensor.h"
#include <vector>
#ifdef USE_ESP32
#include <esp_gattc_api.h>
namespace esphome {
namespace ble_client {
namespace espbt = esphome::esp32_ble_tracker;
using data_to_value_t = std::function<float(std::vector<uint8_t>)>;
class BLESensor : public sensor::Sensor, public PollingComponent, public BLEClientNode {
public:
void loop() override;
void update() override;
void gattc_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_t gattc_if,
esp_ble_gattc_cb_param_t *param) override;
void dump_config() override;
float get_setup_priority() const override { return setup_priority::DATA; }
void set_service_uuid16(uint16_t uuid) { this->service_uuid_ = espbt::ESPBTUUID::from_uint16(uuid); }
void set_service_uuid32(uint32_t uuid) { this->service_uuid_ = espbt::ESPBTUUID::from_uint32(uuid); }
void set_service_uuid128(uint8_t *uuid) { this->service_uuid_ = espbt::ESPBTUUID::from_raw(uuid); }
void set_char_uuid16(uint16_t uuid) { this->char_uuid_ = espbt::ESPBTUUID::from_uint16(uuid); }
void set_char_uuid32(uint32_t uuid) { this->char_uuid_ = espbt::ESPBTUUID::from_uint32(uuid); }
void set_char_uuid128(uint8_t *uuid) { this->char_uuid_ = espbt::ESPBTUUID::from_raw(uuid); }
void set_descr_uuid16(uint16_t uuid) { this->descr_uuid_ = espbt::ESPBTUUID::from_uint16(uuid); }
void set_descr_uuid32(uint32_t uuid) { this->descr_uuid_ = espbt::ESPBTUUID::from_uint32(uuid); }
void set_descr_uuid128(uint8_t *uuid) { this->descr_uuid_ = espbt::ESPBTUUID::from_raw(uuid); }
void set_data_to_value(data_to_value_t &&lambda) { this->data_to_value_func_ = lambda; }
void set_enable_notify(bool notify) { this->notify_ = notify; }
uint16_t handle;
protected:
float parse_data_(uint8_t *value, uint16_t value_len);
optional<data_to_value_t> data_to_value_func_{};
bool notify_;
espbt::ESPBTUUID service_uuid_;
espbt::ESPBTUUID char_uuid_;
espbt::ESPBTUUID descr_uuid_;
};
} // namespace ble_client
} // namespace esphome
#endif

View File

@@ -1,21 +0,0 @@
import esphome.codegen as cg
import esphome.config_validation as cv
from esphome.components import switch, ble_client
from esphome.const import ICON_BLUETOOTH
from .. import ble_client_ns
BLEClientSwitch = ble_client_ns.class_(
"BLEClientSwitch", switch.Switch, cg.Component, ble_client.BLEClientNode
)
CONFIG_SCHEMA = (
switch.switch_schema(BLEClientSwitch, icon=ICON_BLUETOOTH, block_inverted=True)
.extend(ble_client.BLE_CLIENT_SCHEMA)
.extend(cv.COMPONENT_SCHEMA)
)
async def to_code(config):
var = await switch.new_switch(config)
await cg.register_component(var, config)
await ble_client.register_ble_node(var, config)

View File

@@ -1,39 +0,0 @@
#include "ble_switch.h"
#include "esphome/core/log.h"
#include "esphome/core/application.h"
#ifdef USE_ESP32
namespace esphome {
namespace ble_client {
static const char *const TAG = "ble_switch";
void BLEClientSwitch::write_state(bool state) {
this->parent_->set_enabled(state);
this->publish_state(state);
}
void BLEClientSwitch::gattc_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_t gattc_if,
esp_ble_gattc_cb_param_t *param) {
switch (event) {
case ESP_GATTC_REG_EVT:
this->publish_state(this->parent_->enabled);
break;
case ESP_GATTC_OPEN_EVT:
this->node_state = espbt::ClientState::ESTABLISHED;
break;
case ESP_GATTC_DISCONNECT_EVT:
this->node_state = espbt::ClientState::IDLE;
this->publish_state(this->parent_->enabled);
break;
default:
break;
}
}
void BLEClientSwitch::dump_config() { LOG_SWITCH("", "BLE Client Switch", this); }
} // namespace ble_client
} // namespace esphome
#endif

View File

@@ -1,30 +0,0 @@
#pragma once
#include "esphome/core/component.h"
#include "esphome/components/ble_client/ble_client.h"
#include "esphome/components/esp32_ble_tracker/esp32_ble_tracker.h"
#include "esphome/components/switch/switch.h"
#ifdef USE_ESP32
#include <esp_gattc_api.h>
namespace esphome {
namespace ble_client {
namespace espbt = esphome::esp32_ble_tracker;
class BLEClientSwitch : public switch_::Switch, public Component, public BLEClientNode {
public:
void dump_config() override;
void loop() override {}
void gattc_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_t gattc_if,
esp_ble_gattc_cb_param_t *param) override;
float get_setup_priority() const override { return setup_priority::DATA; }
protected:
void write_state(bool state) override;
};
} // namespace ble_client
} // namespace esphome
#endif

View File

@@ -1,121 +0,0 @@
import esphome.codegen as cg
import esphome.config_validation as cv
from esphome.components import text_sensor, ble_client, esp32_ble_tracker
from esphome.const import (
CONF_CHARACTERISTIC_UUID,
CONF_ID,
CONF_TRIGGER_ID,
CONF_SERVICE_UUID,
)
from esphome import automation
from .. import ble_client_ns
DEPENDENCIES = ["ble_client"]
CONF_DESCRIPTOR_UUID = "descriptor_uuid"
CONF_NOTIFY = "notify"
CONF_ON_NOTIFY = "on_notify"
adv_data_t = cg.std_vector.template(cg.uint8)
adv_data_t_const_ref = adv_data_t.operator("ref").operator("const")
BLETextSensor = ble_client_ns.class_(
"BLETextSensor",
text_sensor.TextSensor,
cg.PollingComponent,
ble_client.BLEClientNode,
)
BLETextSensorNotifyTrigger = ble_client_ns.class_(
"BLETextSensorNotifyTrigger", automation.Trigger.template(cg.std_string)
)
CONFIG_SCHEMA = cv.All(
text_sensor.TEXT_SENSOR_SCHEMA.extend(
{
cv.GenerateID(): cv.declare_id(BLETextSensor),
cv.Required(CONF_SERVICE_UUID): esp32_ble_tracker.bt_uuid,
cv.Required(CONF_CHARACTERISTIC_UUID): esp32_ble_tracker.bt_uuid,
cv.Optional(CONF_DESCRIPTOR_UUID): esp32_ble_tracker.bt_uuid,
cv.Optional(CONF_NOTIFY, default=False): cv.boolean,
cv.Optional(CONF_ON_NOTIFY): automation.validate_automation(
{
cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(
BLETextSensorNotifyTrigger
),
}
),
}
)
.extend(cv.polling_component_schema("60s"))
.extend(ble_client.BLE_CLIENT_SCHEMA)
)
async def to_code(config):
var = cg.new_Pvariable(config[CONF_ID])
if len(config[CONF_SERVICE_UUID]) == len(esp32_ble_tracker.bt_uuid16_format):
cg.add(
var.set_service_uuid16(esp32_ble_tracker.as_hex(config[CONF_SERVICE_UUID]))
)
elif len(config[CONF_SERVICE_UUID]) == len(esp32_ble_tracker.bt_uuid32_format):
cg.add(
var.set_service_uuid32(esp32_ble_tracker.as_hex(config[CONF_SERVICE_UUID]))
)
elif len(config[CONF_SERVICE_UUID]) == len(esp32_ble_tracker.bt_uuid128_format):
uuid128 = esp32_ble_tracker.as_reversed_hex_array(config[CONF_SERVICE_UUID])
cg.add(var.set_service_uuid128(uuid128))
if len(config[CONF_CHARACTERISTIC_UUID]) == len(esp32_ble_tracker.bt_uuid16_format):
cg.add(
var.set_char_uuid16(
esp32_ble_tracker.as_hex(config[CONF_CHARACTERISTIC_UUID])
)
)
elif len(config[CONF_CHARACTERISTIC_UUID]) == len(
esp32_ble_tracker.bt_uuid32_format
):
cg.add(
var.set_char_uuid32(
esp32_ble_tracker.as_hex(config[CONF_CHARACTERISTIC_UUID])
)
)
elif len(config[CONF_CHARACTERISTIC_UUID]) == len(
esp32_ble_tracker.bt_uuid128_format
):
uuid128 = esp32_ble_tracker.as_reversed_hex_array(
config[CONF_CHARACTERISTIC_UUID]
)
cg.add(var.set_char_uuid128(uuid128))
if CONF_DESCRIPTOR_UUID in config:
if len(config[CONF_DESCRIPTOR_UUID]) == len(esp32_ble_tracker.bt_uuid16_format):
cg.add(
var.set_descr_uuid16(
esp32_ble_tracker.as_hex(config[CONF_DESCRIPTOR_UUID])
)
)
elif len(config[CONF_DESCRIPTOR_UUID]) == len(
esp32_ble_tracker.bt_uuid32_format
):
cg.add(
var.set_descr_uuid32(
esp32_ble_tracker.as_hex(config[CONF_DESCRIPTOR_UUID])
)
)
elif len(config[CONF_DESCRIPTOR_UUID]) == len(
esp32_ble_tracker.bt_uuid128_format
):
uuid128 = esp32_ble_tracker.as_reversed_hex_array(
config[CONF_DESCRIPTOR_UUID]
)
cg.add(var.set_descr_uuid128(uuid128))
await cg.register_component(var, config)
await ble_client.register_ble_node(var, config)
cg.add(var.set_enable_notify(config[CONF_NOTIFY]))
await text_sensor.register_text_sensor(var, config)
for conf in config.get(CONF_ON_NOTIFY, []):
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var)
await ble_client.register_ble_node(trigger, config)
await automation.build_automation(trigger, [(cg.std_string, "x")], conf)

View File

@@ -1,39 +0,0 @@
#pragma once
#include "esphome/core/automation.h"
#include "esphome/components/ble_client/text_sensor/ble_text_sensor.h"
#ifdef USE_ESP32
namespace esphome {
namespace ble_client {
class BLETextSensorNotifyTrigger : public Trigger<std::string>, public BLETextSensor {
public:
explicit BLETextSensorNotifyTrigger(BLETextSensor *sensor) { sensor_ = sensor; }
void gattc_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_t gattc_if,
esp_ble_gattc_cb_param_t *param) override {
switch (event) {
case ESP_GATTC_SEARCH_CMPL_EVT: {
this->sensor_->node_state = espbt::ClientState::ESTABLISHED;
break;
}
case ESP_GATTC_NOTIFY_EVT: {
if (param->notify.conn_id != this->sensor_->parent()->get_conn_id() ||
param->notify.handle != this->sensor_->handle)
break;
this->trigger(this->sensor_->parse_data(param->notify.value, param->notify.value_len));
}
default:
break;
}
}
protected:
BLETextSensor *sensor_;
};
} // namespace ble_client
} // namespace esphome
#endif

View File

@@ -1,135 +0,0 @@
#include "ble_text_sensor.h"
#include "esphome/components/esp32_ble_tracker/esp32_ble_tracker.h"
#include "esphome/core/application.h"
#include "esphome/core/helpers.h"
#include "esphome/core/log.h"
#ifdef USE_ESP32
namespace esphome {
namespace ble_client {
static const char *const TAG = "ble_text_sensor";
static const std::string EMPTY = "";
void BLETextSensor::loop() {}
void BLETextSensor::dump_config() {
LOG_TEXT_SENSOR("", "BLE Text Sensor", this);
ESP_LOGCONFIG(TAG, " MAC address : %s", this->parent()->address_str().c_str());
ESP_LOGCONFIG(TAG, " Service UUID : %s", this->service_uuid_.to_string().c_str());
ESP_LOGCONFIG(TAG, " Characteristic UUID: %s", this->char_uuid_.to_string().c_str());
ESP_LOGCONFIG(TAG, " Descriptor UUID : %s", this->descr_uuid_.to_string().c_str());
ESP_LOGCONFIG(TAG, " Notifications : %s", YESNO(this->notify_));
LOG_UPDATE_INTERVAL(this);
}
void BLETextSensor::gattc_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_t gattc_if,
esp_ble_gattc_cb_param_t *param) {
switch (event) {
case ESP_GATTC_OPEN_EVT: {
if (param->open.status == ESP_GATT_OK) {
ESP_LOGI(TAG, "[%s] Connected successfully!", this->get_name().c_str());
break;
}
break;
}
case ESP_GATTC_DISCONNECT_EVT: {
ESP_LOGW(TAG, "[%s] Disconnected!", this->get_name().c_str());
this->status_set_warning();
this->publish_state(EMPTY);
break;
}
case ESP_GATTC_SEARCH_CMPL_EVT: {
this->handle = 0;
auto *chr = this->parent()->get_characteristic(this->service_uuid_, this->char_uuid_);
if (chr == nullptr) {
this->status_set_warning();
this->publish_state(EMPTY);
ESP_LOGW(TAG, "No sensor characteristic found at service %s char %s", this->service_uuid_.to_string().c_str(),
this->char_uuid_.to_string().c_str());
break;
}
this->handle = chr->handle;
if (this->descr_uuid_.get_uuid().len > 0) {
auto *descr = chr->get_descriptor(this->descr_uuid_);
if (descr == nullptr) {
this->status_set_warning();
this->publish_state(EMPTY);
ESP_LOGW(TAG, "No sensor descriptor found at service %s char %s descr %s",
this->service_uuid_.to_string().c_str(), this->char_uuid_.to_string().c_str(),
this->descr_uuid_.to_string().c_str());
break;
}
this->handle = descr->handle;
}
if (this->notify_) {
auto status = esp_ble_gattc_register_for_notify(this->parent()->get_gattc_if(),
this->parent()->get_remote_bda(), chr->handle);
if (status) {
ESP_LOGW(TAG, "esp_ble_gattc_register_for_notify failed, status=%d", status);
}
} else {
this->node_state = espbt::ClientState::ESTABLISHED;
}
break;
}
case ESP_GATTC_READ_CHAR_EVT: {
if (param->read.conn_id != this->parent()->get_conn_id())
break;
if (param->read.status != ESP_GATT_OK) {
ESP_LOGW(TAG, "Error reading char at handle %d, status=%d", param->read.handle, param->read.status);
break;
}
if (param->read.handle == this->handle) {
this->status_clear_warning();
this->publish_state(this->parse_data(param->read.value, param->read.value_len));
}
break;
}
case ESP_GATTC_NOTIFY_EVT: {
if (param->notify.conn_id != this->parent()->get_conn_id() || param->notify.handle != this->handle)
break;
ESP_LOGV(TAG, "[%s] ESP_GATTC_NOTIFY_EVT: handle=0x%x, value=0x%x", this->get_name().c_str(),
param->notify.handle, param->notify.value[0]);
this->publish_state(this->parse_data(param->notify.value, param->notify.value_len));
break;
}
case ESP_GATTC_REG_FOR_NOTIFY_EVT: {
this->node_state = espbt::ClientState::ESTABLISHED;
break;
}
default:
break;
}
}
std::string BLETextSensor::parse_data(uint8_t *value, uint16_t value_len) {
std::string text(value, value + value_len);
return text;
}
void BLETextSensor::update() {
if (this->node_state != espbt::ClientState::ESTABLISHED) {
ESP_LOGW(TAG, "[%s] Cannot poll, not connected", this->get_name().c_str());
return;
}
if (this->handle == 0) {
ESP_LOGW(TAG, "[%s] Cannot poll, no service or characteristic found", this->get_name().c_str());
return;
}
auto status = esp_ble_gattc_read_char(this->parent()->get_gattc_if(), this->parent()->get_conn_id(), this->handle,
ESP_GATT_AUTH_REQ_NONE);
if (status) {
this->status_set_warning();
this->publish_state(EMPTY);
ESP_LOGW(TAG, "[%s] Error sending read request for sensor, status=%d", this->get_name().c_str(), status);
}
}
} // namespace ble_client
} // namespace esphome
#endif

View File

@@ -1,46 +0,0 @@
#pragma once
#include "esphome/core/component.h"
#include "esphome/components/ble_client/ble_client.h"
#include "esphome/components/esp32_ble_tracker/esp32_ble_tracker.h"
#include "esphome/components/text_sensor/text_sensor.h"
#ifdef USE_ESP32
#include <esp_gattc_api.h>
namespace esphome {
namespace ble_client {
namespace espbt = esphome::esp32_ble_tracker;
class BLETextSensor : public text_sensor::TextSensor, public PollingComponent, public BLEClientNode {
public:
void loop() override;
void update() override;
void gattc_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_t gattc_if,
esp_ble_gattc_cb_param_t *param) override;
void dump_config() override;
float get_setup_priority() const override { return setup_priority::DATA; }
void set_service_uuid16(uint16_t uuid) { this->service_uuid_ = espbt::ESPBTUUID::from_uint16(uuid); }
void set_service_uuid32(uint32_t uuid) { this->service_uuid_ = espbt::ESPBTUUID::from_uint32(uuid); }
void set_service_uuid128(uint8_t *uuid) { this->service_uuid_ = espbt::ESPBTUUID::from_raw(uuid); }
void set_char_uuid16(uint16_t uuid) { this->char_uuid_ = espbt::ESPBTUUID::from_uint16(uuid); }
void set_char_uuid32(uint32_t uuid) { this->char_uuid_ = espbt::ESPBTUUID::from_uint32(uuid); }
void set_char_uuid128(uint8_t *uuid) { this->char_uuid_ = espbt::ESPBTUUID::from_raw(uuid); }
void set_descr_uuid16(uint16_t uuid) { this->descr_uuid_ = espbt::ESPBTUUID::from_uint16(uuid); }
void set_descr_uuid32(uint32_t uuid) { this->descr_uuid_ = espbt::ESPBTUUID::from_uint32(uuid); }
void set_descr_uuid128(uint8_t *uuid) { this->descr_uuid_ = espbt::ESPBTUUID::from_raw(uuid); }
void set_enable_notify(bool notify) { this->notify_ = notify; }
std::string parse_data(uint8_t *value, uint16_t value_len);
uint16_t handle;
protected:
bool notify_;
espbt::ESPBTUUID service_uuid_;
espbt::ESPBTUUID char_uuid_;
espbt::ESPBTUUID descr_uuid_;
};
} // namespace ble_client
} // namespace esphome
#endif

View File

@@ -1,12 +0,0 @@
import esphome.codegen as cg
from esphome.components import esp32_ble_tracker
AUTO_LOAD = ["esp32_ble_tracker"]
CODEOWNERS = ["@jesserockz"]
DEPENDENCIES = ["esp32"]
esp32_ble_client_ns = cg.esphome_ns.namespace("esp32_ble_client")
BLEClientBase = esp32_ble_client_ns.class_(
"BLEClientBase", esp32_ble_tracker.ESPBTClient, cg.Component
)

View File

@@ -1,99 +0,0 @@
#include "ble_characteristic.h"
#include "ble_client_base.h"
#include "ble_service.h"
#include "esphome/core/log.h"
#ifdef USE_ESP32
namespace esphome {
namespace esp32_ble_client {
static const char *const TAG = "esp32_ble_client";
BLECharacteristic::~BLECharacteristic() {
for (auto &desc : this->descriptors)
delete desc; // NOLINT(cppcoreguidelines-owning-memory)
}
void BLECharacteristic::release_descriptors() {
this->parsed = false;
for (auto &desc : this->descriptors)
delete desc; // NOLINT(cppcoreguidelines-owning-memory)
this->descriptors.clear();
}
void BLECharacteristic::parse_descriptors() {
this->parsed = true;
uint16_t offset = 0;
esp_gattc_descr_elem_t result;
while (true) {
uint16_t count = 1;
esp_gatt_status_t status =
esp_ble_gattc_get_all_descr(this->service->client->get_gattc_if(), this->service->client->get_conn_id(),
this->handle, &result, &count, offset);
if (status == ESP_GATT_INVALID_OFFSET || status == ESP_GATT_NOT_FOUND) {
break;
}
if (status != ESP_GATT_OK) {
ESP_LOGW(TAG, "[%d] [%s] esp_ble_gattc_get_all_descr error, status=%d",
this->service->client->get_connection_index(), this->service->client->address_str().c_str(), status);
break;
}
if (count == 0) {
break;
}
BLEDescriptor *desc = new BLEDescriptor(); // NOLINT(cppcoreguidelines-owning-memory)
desc->uuid = espbt::ESPBTUUID::from_uuid(result.uuid);
desc->handle = result.handle;
desc->characteristic = this;
this->descriptors.push_back(desc);
ESP_LOGV(TAG, "[%d] [%s] descriptor %s, handle 0x%x", this->service->client->get_connection_index(),
this->service->client->address_str().c_str(), desc->uuid.to_string().c_str(), desc->handle);
offset++;
}
}
BLEDescriptor *BLECharacteristic::get_descriptor(espbt::ESPBTUUID uuid) {
if (!this->parsed)
this->parse_descriptors();
for (auto &desc : this->descriptors) {
if (desc->uuid == uuid)
return desc;
}
return nullptr;
}
BLEDescriptor *BLECharacteristic::get_descriptor(uint16_t uuid) {
return this->get_descriptor(espbt::ESPBTUUID::from_uint16(uuid));
}
BLEDescriptor *BLECharacteristic::get_descriptor_by_handle(uint16_t handle) {
if (!this->parsed)
this->parse_descriptors();
for (auto &desc : this->descriptors) {
if (desc->handle == handle)
return desc;
}
return nullptr;
}
esp_err_t BLECharacteristic::write_value(uint8_t *new_val, int16_t new_val_size, esp_gatt_write_type_t write_type) {
auto *client = this->service->client;
auto status = esp_ble_gattc_write_char(client->get_gattc_if(), client->get_conn_id(), this->handle, new_val_size,
new_val, write_type, ESP_GATT_AUTH_REQ_NONE);
if (status) {
ESP_LOGW(TAG, "[%d] [%s] Error sending write value to BLE gattc server, status=%d",
this->service->client->get_connection_index(), this->service->client->address_str().c_str(), status);
}
return status;
}
esp_err_t BLECharacteristic::write_value(uint8_t *new_val, int16_t new_val_size) {
return write_value(new_val, new_val_size, ESP_GATT_WRITE_TYPE_NO_RSP);
}
} // namespace esp32_ble_client
} // namespace esphome
#endif // USE_ESP32

View File

@@ -1,39 +0,0 @@
#pragma once
#ifdef USE_ESP32
#include "esphome/components/esp32_ble_tracker/esp32_ble_tracker.h"
#include "ble_descriptor.h"
#include <vector>
namespace esphome {
namespace esp32_ble_client {
namespace espbt = esphome::esp32_ble_tracker;
class BLEService;
class BLECharacteristic {
public:
~BLECharacteristic();
bool parsed = false;
espbt::ESPBTUUID uuid;
uint16_t handle;
esp_gatt_char_prop_t properties;
std::vector<BLEDescriptor *> descriptors;
void parse_descriptors();
void release_descriptors();
BLEDescriptor *get_descriptor(espbt::ESPBTUUID uuid);
BLEDescriptor *get_descriptor(uint16_t uuid);
BLEDescriptor *get_descriptor_by_handle(uint16_t handle);
esp_err_t write_value(uint8_t *new_val, int16_t new_val_size);
esp_err_t write_value(uint8_t *new_val, int16_t new_val_size, esp_gatt_write_type_t write_type);
BLEService *service;
};
} // namespace esp32_ble_client
} // namespace esphome
#endif // USE_ESP32

View File

@@ -1,439 +0,0 @@
#include "ble_client_base.h"
#include "esphome/core/helpers.h"
#include "esphome/core/log.h"
#ifdef USE_ESP32
namespace esphome {
namespace esp32_ble_client {
static const char *const TAG = "esp32_ble_client";
static const esp_bt_uuid_t NOTIFY_DESC_UUID = {
.len = ESP_UUID_LEN_16,
.uuid =
{
.uuid16 = ESP_GATT_UUID_CHAR_CLIENT_CONFIG,
},
};
void BLEClientBase::setup() {
static uint8_t connection_index = 0;
this->connection_index_ = connection_index++;
auto ret = esp_ble_gattc_app_register(this->app_id);
if (ret) {
ESP_LOGE(TAG, "gattc app register failed. app_id=%d code=%d", this->app_id, ret);
this->mark_failed();
}
this->set_state(espbt::ClientState::IDLE);
}
void BLEClientBase::loop() {
// READY_TO_CONNECT means we have discovered the device
// and the scanner has been stopped by the tracker.
if (this->state_ == espbt::ClientState::READY_TO_CONNECT) {
this->connect();
}
}
float BLEClientBase::get_setup_priority() const { return setup_priority::AFTER_BLUETOOTH; }
bool BLEClientBase::parse_device(const espbt::ESPBTDevice &device) {
if (device.address_uint64() != this->address_)
return false;
if (this->state_ != espbt::ClientState::IDLE && this->state_ != espbt::ClientState::SEARCHING)
return false;
ESP_LOGD(TAG, "[%d] [%s] Found device", this->connection_index_, this->address_str_.c_str());
this->set_state(espbt::ClientState::DISCOVERED);
auto addr = device.address_uint64();
this->remote_bda_[0] = (addr >> 40) & 0xFF;
this->remote_bda_[1] = (addr >> 32) & 0xFF;
this->remote_bda_[2] = (addr >> 24) & 0xFF;
this->remote_bda_[3] = (addr >> 16) & 0xFF;
this->remote_bda_[4] = (addr >> 8) & 0xFF;
this->remote_bda_[5] = (addr >> 0) & 0xFF;
this->remote_addr_type_ = device.get_address_type();
return true;
}
void BLEClientBase::connect() {
ESP_LOGI(TAG, "[%d] [%s] 0x%02x Attempting BLE connection", this->connection_index_, this->address_str_.c_str(),
this->remote_addr_type_);
auto ret = esp_ble_gattc_open(this->gattc_if_, this->remote_bda_, this->remote_addr_type_, true);
if (ret) {
ESP_LOGW(TAG, "[%d] [%s] esp_ble_gattc_open error, status=%d", this->connection_index_, this->address_str_.c_str(),
ret);
this->set_state(espbt::ClientState::IDLE);
} else {
this->set_state(espbt::ClientState::CONNECTING);
}
}
void BLEClientBase::disconnect() {
if (this->state_ == espbt::ClientState::IDLE || this->state_ == espbt::ClientState::DISCONNECTING)
return;
ESP_LOGI(TAG, "[%d] [%s] Disconnecting.", this->connection_index_, this->address_str_.c_str());
auto err = esp_ble_gattc_close(this->gattc_if_, this->conn_id_);
if (err != ESP_OK) {
ESP_LOGW(TAG, "[%d] [%s] esp_ble_gattc_close error, err=%d", this->connection_index_, this->address_str_.c_str(),
err);
}
if (this->state_ == espbt::ClientState::SEARCHING || this->state_ == espbt::ClientState::READY_TO_CONNECT ||
this->state_ == espbt::ClientState::DISCOVERED) {
this->set_address(0);
this->set_state(espbt::ClientState::IDLE);
} else {
this->set_state(espbt::ClientState::DISCONNECTING);
}
}
void BLEClientBase::release_services() {
for (auto &svc : this->services_)
delete svc; // NOLINT(cppcoreguidelines-owning-memory)
this->services_.clear();
#ifndef CONFIG_BT_GATTC_CACHE_NVS_FLASH
esp_ble_gattc_cache_clean(this->remote_bda_);
#endif
}
bool BLEClientBase::gattc_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_t esp_gattc_if,
esp_ble_gattc_cb_param_t *param) {
if (event == ESP_GATTC_REG_EVT && this->app_id != param->reg.app_id)
return false;
if (event != ESP_GATTC_REG_EVT && esp_gattc_if != ESP_GATT_IF_NONE && esp_gattc_if != this->gattc_if_)
return false;
ESP_LOGV(TAG, "[%d] [%s] gattc_event_handler: event=%d gattc_if=%d", this->connection_index_,
this->address_str_.c_str(), event, esp_gattc_if);
switch (event) {
case ESP_GATTC_REG_EVT: {
if (param->reg.status == ESP_GATT_OK) {
ESP_LOGV(TAG, "[%d] [%s] gattc registered app id %d", this->connection_index_, this->address_str_.c_str(),
this->app_id);
this->gattc_if_ = esp_gattc_if;
} else {
ESP_LOGE(TAG, "[%d] [%s] gattc app registration failed id=%d code=%d", this->connection_index_,
this->address_str_.c_str(), param->reg.app_id, param->reg.status);
}
break;
}
case ESP_GATTC_OPEN_EVT: {
ESP_LOGV(TAG, "[%d] [%s] ESP_GATTC_OPEN_EVT", this->connection_index_, this->address_str_.c_str());
this->conn_id_ = param->open.conn_id;
this->service_count_ = 0;
if (param->open.status != ESP_GATT_OK && param->open.status != ESP_GATT_ALREADY_OPEN) {
ESP_LOGW(TAG, "[%d] [%s] Connection failed, status=%d", this->connection_index_, this->address_str_.c_str(),
param->open.status);
this->set_state(espbt::ClientState::IDLE);
break;
}
auto ret = esp_ble_gattc_send_mtu_req(this->gattc_if_, param->open.conn_id);
if (ret) {
ESP_LOGW(TAG, "[%d] [%s] esp_ble_gattc_send_mtu_req failed, status=%x", this->connection_index_,
this->address_str_.c_str(), ret);
}
if (this->connection_type_ == espbt::ConnectionType::V3_WITH_CACHE) {
this->set_state(espbt::ClientState::CONNECTED);
this->state_ = espbt::ClientState::ESTABLISHED;
break;
}
esp_ble_gattc_search_service(esp_gattc_if, param->cfg_mtu.conn_id, nullptr);
break;
}
case ESP_GATTC_CFG_MTU_EVT: {
if (param->cfg_mtu.status != ESP_GATT_OK) {
ESP_LOGW(TAG, "[%d] [%s] cfg_mtu failed, mtu %d, status %d", this->connection_index_,
this->address_str_.c_str(), param->cfg_mtu.mtu, param->cfg_mtu.status);
this->set_state(espbt::ClientState::IDLE);
break;
}
ESP_LOGV(TAG, "[%d] [%s] cfg_mtu status %d, mtu %d", this->connection_index_, this->address_str_.c_str(),
param->cfg_mtu.status, param->cfg_mtu.mtu);
this->mtu_ = param->cfg_mtu.mtu;
break;
}
case ESP_GATTC_DISCONNECT_EVT: {
if (memcmp(param->disconnect.remote_bda, this->remote_bda_, 6) != 0)
return false;
ESP_LOGV(TAG, "[%d] [%s] ESP_GATTC_DISCONNECT_EVT, reason %d", this->connection_index_,
this->address_str_.c_str(), param->disconnect.reason);
this->release_services();
this->set_state(espbt::ClientState::IDLE);
break;
}
case ESP_GATTC_SEARCH_RES_EVT: {
this->service_count_++;
if (this->connection_type_ == espbt::ConnectionType::V3_WITHOUT_CACHE) {
// V3 clients don't need services initialized since
// they only request by handle after receiving the services.
break;
}
BLEService *ble_service = new BLEService(); // NOLINT(cppcoreguidelines-owning-memory)
ble_service->uuid = espbt::ESPBTUUID::from_uuid(param->search_res.srvc_id.uuid);
ble_service->start_handle = param->search_res.start_handle;
ble_service->end_handle = param->search_res.end_handle;
ble_service->client = this;
this->services_.push_back(ble_service);
break;
}
case ESP_GATTC_SEARCH_CMPL_EVT: {
ESP_LOGV(TAG, "[%d] [%s] ESP_GATTC_SEARCH_CMPL_EVT", this->connection_index_, this->address_str_.c_str());
for (auto &svc : this->services_) {
ESP_LOGV(TAG, "[%d] [%s] Service UUID: %s", this->connection_index_, this->address_str_.c_str(),
svc->uuid.to_string().c_str());
ESP_LOGV(TAG, "[%d] [%s] start_handle: 0x%x end_handle: 0x%x", this->connection_index_,
this->address_str_.c_str(), svc->start_handle, svc->end_handle);
}
this->set_state(espbt::ClientState::CONNECTED);
this->state_ = espbt::ClientState::ESTABLISHED;
break;
}
case ESP_GATTC_REG_FOR_NOTIFY_EVT: {
if (this->connection_type_ == espbt::ConnectionType::V3_WITH_CACHE ||
this->connection_type_ == espbt::ConnectionType::V3_WITHOUT_CACHE) {
// Client is responsible for flipping the descriptor value
// when using the cache
break;
}
esp_gattc_descr_elem_t desc_result;
uint16_t count = 1;
esp_gatt_status_t descr_status =
esp_ble_gattc_get_descr_by_char_handle(this->gattc_if_, this->connection_index_, param->reg_for_notify.handle,
NOTIFY_DESC_UUID, &desc_result, &count);
if (descr_status != ESP_GATT_OK) {
ESP_LOGW(TAG, "[%d] [%s] esp_ble_gattc_get_descr_by_char_handle error, status=%d", this->connection_index_,
this->address_str_.c_str(), descr_status);
break;
}
esp_gattc_char_elem_t char_result;
esp_gatt_status_t char_status =
esp_ble_gattc_get_all_char(this->gattc_if_, this->connection_index_, param->reg_for_notify.handle,
param->reg_for_notify.handle, &char_result, &count, 0);
if (char_status != ESP_GATT_OK) {
ESP_LOGW(TAG, "[%d] [%s] esp_ble_gattc_get_all_char error, status=%d", this->connection_index_,
this->address_str_.c_str(), char_status);
break;
}
/*
1 = notify
2 = indicate
*/
uint16_t notify_en = char_result.properties & ESP_GATT_CHAR_PROP_BIT_NOTIFY ? 1 : 2;
esp_err_t status =
esp_ble_gattc_write_char_descr(this->gattc_if_, this->conn_id_, desc_result.handle, sizeof(notify_en),
(uint8_t *) &notify_en, ESP_GATT_WRITE_TYPE_RSP, ESP_GATT_AUTH_REQ_NONE);
if (status) {
ESP_LOGW(TAG, "[%d] [%s] esp_ble_gattc_write_char_descr error, status=%d", this->connection_index_,
this->address_str_.c_str(), status);
}
break;
}
default:
break;
}
return true;
}
void BLEClientBase::gap_event_handler(esp_gap_ble_cb_event_t event, esp_ble_gap_cb_param_t *param) {
esp_bd_addr_t bd_addr;
memcpy(bd_addr, param->ble_security.auth_cmpl.bd_addr, sizeof(esp_bd_addr_t));
if (memcmp(bd_addr, this->remote_bda_, sizeof(esp_bd_addr_t)) != 0)
return;
switch (event) {
// This event is sent by the server when it requests security
case ESP_GAP_BLE_SEC_REQ_EVT:
ESP_LOGV(TAG, "[%d] [%s] ESP_GAP_BLE_SEC_REQ_EVT %x", this->connection_index_, this->address_str_.c_str(), event);
esp_ble_gap_security_rsp(param->ble_security.ble_req.bd_addr, true);
break;
// This event is sent once authentication has completed
case ESP_GAP_BLE_AUTH_CMPL_EVT:
ESP_LOGV(TAG, "[%d] [%s] auth complete. remote BD_ADDR: %s", this->connection_index_, this->address_str_.c_str(),
format_hex(bd_addr, 6).c_str());
if (!param->ble_security.auth_cmpl.success) {
ESP_LOGE(TAG, "[%d] [%s] auth fail reason = 0x%x", this->connection_index_, this->address_str_.c_str(),
param->ble_security.auth_cmpl.fail_reason);
} else {
ESP_LOGI(TAG, "[%d] [%s] auth success. address type = %d auth mode = %d", this->connection_index_,
this->address_str_.c_str(), param->ble_security.auth_cmpl.addr_type,
param->ble_security.auth_cmpl.auth_mode);
}
break;
case ESP_GAP_BLE_PASSKEY_REQ_EVT:
// Call the following function to input the passkey which is displayed on the remote device
ESP_LOGD(TAG, "[%d] [%s] ESP_GAP_BLE_PASSKEY_REQ_EVT: Authenticating with passkey", this->connection_index_,
this->address_str_.c_str());
esp_ble_passkey_reply(this->remote_bda_, true, this->pin_code_);
break;
case ESP_GAP_BLE_PASSKEY_NOTIF_EVT:
// The app will receive this event when the IO has Output capability and the peer device IO has Input capability.
// Show the passkey number to the user to input it in the peer device.
ESP_LOGD(TAG, "[%d] [%s] ESP_GAP_BLE_PASSKEY_NOTIF_EVT: Passkey: %06d (0x%x)", this->connection_index_,
this->address_str_.c_str(), param->ble_security.key_notif.passkey,
param->ble_security.key_notif.passkey);
break;
case ESP_GAP_BLE_NC_REQ_EVT:
// The app will receive this evt when the IO has DisplayYesNO capability and the peer device IO also has
// DisplayYesNo capability. Show the passkey number to the user to confirm it with the number displayed by peer
// device.
ESP_LOGW(TAG, "[%d] [%s] ESP_GAP_BLE_NC_REQ_EVT: Passkey: %06d (0x%x) (Not implemented: esp_ble_confirm_reply)",
this->connection_index_, this->address_str_.c_str(), param->ble_security.key_notif.passkey,
param->ble_security.key_notif.passkey);
// We probably want to something like this, however it has not yet been tested/verified.
// esp_ble_confirm_reply(param->ble_security.ble_req.bd_addr, true);
break;
case ESP_GAP_BLE_OOB_REQ_EVT: {
ESP_LOGW(TAG, "[%d] [%s] ESP_GAP_BLE_OOB_REQ_EVT (Not implemented: esp_ble_oob_req_reply)",
this->connection_index_, this->address_str_.c_str());
// We probably want to something like this, however it has not yet been tested/verified.
// uint8_t tk[16] = {1}; // If you paired with OOB, both devices need to use the same tk
// esp_ble_oob_req_reply(param->ble_security.ble_req.bd_addr, tk, sizeof(tk));
break;
}
default:
break;
}
}
// Parse GATT values into a float for a sensor.
// Ref: https://www.bluetooth.com/specifications/assigned-numbers/format-types/
float BLEClientBase::parse_char_value(uint8_t *value, uint16_t length) {
// A length of one means a single octet value.
if (length == 0)
return 0;
if (length == 1)
return (float) ((uint8_t) value[0]);
switch (value[0]) {
case 0x1: // boolean.
case 0x2: // 2bit.
case 0x3: // nibble.
case 0x4: // uint8.
return (float) ((uint8_t) value[1]);
case 0x5: // uint12.
case 0x6: // uint16.
if (length > 2) {
return (float) encode_uint16(value[1], value[2]);
}
// fall through
case 0x7: // uint24.
if (length > 3) {
return (float) encode_uint24(value[1], value[2], value[3]);
}
// fall through
case 0x8: // uint32.
if (length > 4) {
return (float) encode_uint32(value[1], value[2], value[3], value[4]);
}
// fall through
case 0xC: // int8.
return (float) ((int8_t) value[1]);
case 0xD: // int12.
case 0xE: // int16.
if (length > 2) {
return (float) ((int16_t)(value[1] << 8) + (int16_t) value[2]);
}
// fall through
case 0xF: // int24.
if (length > 3) {
return (float) ((int32_t)(value[1] << 16) + (int32_t)(value[2] << 8) + (int32_t)(value[3]));
}
// fall through
case 0x10: // int32.
if (length > 4) {
return (float) ((int32_t)(value[1] << 24) + (int32_t)(value[2] << 16) + (int32_t)(value[3] << 8) +
(int32_t)(value[4]));
}
}
ESP_LOGW(TAG, "[%d] [%s] Cannot parse characteristic value of type 0x%x length %d", this->connection_index_,
this->address_str_.c_str(), value[0], length);
return NAN;
}
BLEService *BLEClientBase::get_service(espbt::ESPBTUUID uuid) {
for (auto *svc : this->services_) {
if (svc->uuid == uuid)
return svc;
}
return nullptr;
}
BLEService *BLEClientBase::get_service(uint16_t uuid) { return this->get_service(espbt::ESPBTUUID::from_uint16(uuid)); }
BLECharacteristic *BLEClientBase::get_characteristic(espbt::ESPBTUUID service, espbt::ESPBTUUID chr) {
auto *svc = this->get_service(service);
if (svc == nullptr)
return nullptr;
return svc->get_characteristic(chr);
}
BLECharacteristic *BLEClientBase::get_characteristic(uint16_t service, uint16_t chr) {
return this->get_characteristic(espbt::ESPBTUUID::from_uint16(service), espbt::ESPBTUUID::from_uint16(chr));
}
BLECharacteristic *BLEClientBase::get_characteristic(uint16_t handle) {
for (auto *svc : this->services_) {
if (!svc->parsed)
svc->parse_characteristics();
for (auto *chr : svc->characteristics) {
if (chr->handle == handle)
return chr;
}
}
return nullptr;
}
BLEDescriptor *BLEClientBase::get_config_descriptor(uint16_t handle) {
auto *chr = this->get_characteristic(handle);
if (chr != nullptr) {
if (!chr->parsed)
chr->parse_descriptors();
for (auto &desc : chr->descriptors) {
if (desc->uuid.get_uuid().uuid.uuid16 == ESP_GATT_UUID_CHAR_CLIENT_CONFIG)
return desc;
}
}
return nullptr;
}
BLEDescriptor *BLEClientBase::get_descriptor(espbt::ESPBTUUID service, espbt::ESPBTUUID chr, espbt::ESPBTUUID descr) {
auto *svc = this->get_service(service);
if (svc == nullptr)
return nullptr;
auto *ch = svc->get_characteristic(chr);
if (ch == nullptr)
return nullptr;
return ch->get_descriptor(descr);
}
BLEDescriptor *BLEClientBase::get_descriptor(uint16_t service, uint16_t chr, uint16_t descr) {
return this->get_descriptor(espbt::ESPBTUUID::from_uint16(service), espbt::ESPBTUUID::from_uint16(chr),
espbt::ESPBTUUID::from_uint16(descr));
}
BLEDescriptor *BLEClientBase::get_descriptor(uint16_t handle) {
for (auto *svc : this->services_) {
if (!svc->parsed)
svc->parse_characteristics();
for (auto *chr : svc->characteristics) {
if (!chr->parsed)
chr->parse_descriptors();
for (auto *desc : chr->descriptors) {
if (desc->handle == handle)
return desc;
}
}
}
return nullptr;
}
} // namespace esp32_ble_client
} // namespace esphome
#endif // USE_ESP32

View File

@@ -1,99 +0,0 @@
#pragma once
#ifdef USE_ESP32
#include "esphome/components/esp32_ble_tracker/esp32_ble_tracker.h"
#include "esphome/core/component.h"
#include "ble_service.h"
#include <array>
#include <string>
#include <vector>
#include <esp_bt_defs.h>
#include <esp_gap_ble_api.h>
#include <esp_gatt_common_api.h>
#include <esp_gattc_api.h>
namespace esphome {
namespace esp32_ble_client {
namespace espbt = esphome::esp32_ble_tracker;
class BLEClientBase : public espbt::ESPBTClient, public Component {
public:
void setup() override;
void loop() override;
float get_setup_priority() const override;
bool parse_device(const espbt::ESPBTDevice &device) override;
void on_scan_end() override {}
bool gattc_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_t gattc_if,
esp_ble_gattc_cb_param_t *param) override;
void gap_event_handler(esp_gap_ble_cb_event_t event, esp_ble_gap_cb_param_t *param) override;
void connect() override;
void disconnect();
void release_services();
bool connected() { return this->state_ == espbt::ClientState::ESTABLISHED; }
void set_address(uint64_t address) {
this->address_ = address;
if (address == 0) {
memset(this->remote_bda_, 0, sizeof(this->remote_bda_));
this->address_str_ = "";
} else {
this->address_str_ = str_snprintf("%02X:%02X:%02X:%02X:%02X:%02X", 17, (uint8_t)(this->address_ >> 40) & 0xff,
(uint8_t)(this->address_ >> 32) & 0xff, (uint8_t)(this->address_ >> 24) & 0xff,
(uint8_t)(this->address_ >> 16) & 0xff, (uint8_t)(this->address_ >> 8) & 0xff,
(uint8_t)(this->address_ >> 0) & 0xff);
}
}
void set_pin_code(uint32_t pin_code) { pin_code_ = pin_code; }
std::string address_str() const { return this->address_str_; }
BLEService *get_service(espbt::ESPBTUUID uuid);
BLEService *get_service(uint16_t uuid);
BLECharacteristic *get_characteristic(espbt::ESPBTUUID service, espbt::ESPBTUUID chr);
BLECharacteristic *get_characteristic(uint16_t service, uint16_t chr);
BLECharacteristic *get_characteristic(uint16_t handle);
BLEDescriptor *get_descriptor(espbt::ESPBTUUID service, espbt::ESPBTUUID chr, espbt::ESPBTUUID descr);
BLEDescriptor *get_descriptor(uint16_t service, uint16_t chr, uint16_t descr);
BLEDescriptor *get_descriptor(uint16_t handle);
// Get the configuration descriptor for the given characteristic handle.
BLEDescriptor *get_config_descriptor(uint16_t handle);
float parse_char_value(uint8_t *value, uint16_t length);
int get_gattc_if() const { return this->gattc_if_; }
uint8_t *get_remote_bda() { return this->remote_bda_; }
esp_ble_addr_type_t get_remote_addr_type() const { return this->remote_addr_type_; }
void set_remote_addr_type(esp_ble_addr_type_t address_type) { this->remote_addr_type_ = address_type; }
uint16_t get_conn_id() const { return this->conn_id_; }
uint64_t get_address() const { return this->address_; }
uint8_t get_connection_index() const { return this->connection_index_; }
virtual void set_connection_type(espbt::ConnectionType ct) { this->connection_type_ = ct; }
protected:
int gattc_if_;
esp_bd_addr_t remote_bda_;
esp_ble_addr_type_t remote_addr_type_;
uint16_t conn_id_{0xFFFF};
uint64_t address_{0};
std::string address_str_{};
uint8_t connection_index_;
int16_t service_count_{0};
uint16_t mtu_{23};
uint32_t pin_code_{0};
espbt::ConnectionType connection_type_{espbt::ConnectionType::V1};
std::vector<BLEService *> services_;
};
} // namespace esp32_ble_client
} // namespace esphome
#endif // USE_ESP32

View File

@@ -1,25 +0,0 @@
#pragma once
#ifdef USE_ESP32
#include "esphome/components/esp32_ble_tracker/esp32_ble_tracker.h"
namespace esphome {
namespace esp32_ble_client {
namespace espbt = esphome::esp32_ble_tracker;
class BLECharacteristic;
class BLEDescriptor {
public:
espbt::ESPBTUUID uuid;
uint16_t handle;
BLECharacteristic *characteristic;
};
} // namespace esp32_ble_client
} // namespace esphome
#endif // USE_ESP32

View File

@@ -1,77 +0,0 @@
#include "ble_service.h"
#include "ble_client_base.h"
#include "esphome/core/log.h"
#ifdef USE_ESP32
namespace esphome {
namespace esp32_ble_client {
static const char *const TAG = "esp32_ble_client";
BLECharacteristic *BLEService::get_characteristic(espbt::ESPBTUUID uuid) {
if (!this->parsed)
this->parse_characteristics();
for (auto &chr : this->characteristics) {
if (chr->uuid == uuid)
return chr;
}
return nullptr;
}
BLECharacteristic *BLEService::get_characteristic(uint16_t uuid) {
return this->get_characteristic(espbt::ESPBTUUID::from_uint16(uuid));
}
BLEService::~BLEService() {
for (auto &chr : this->characteristics)
delete chr; // NOLINT(cppcoreguidelines-owning-memory)
}
void BLEService::release_characteristics() {
this->parsed = false;
for (auto &chr : this->characteristics)
delete chr; // NOLINT(cppcoreguidelines-owning-memory)
this->characteristics.clear();
}
void BLEService::parse_characteristics() {
this->parsed = true;
uint16_t offset = 0;
esp_gattc_char_elem_t result;
while (true) {
uint16_t count = 1;
esp_gatt_status_t status =
esp_ble_gattc_get_all_char(this->client->get_gattc_if(), this->client->get_conn_id(), this->start_handle,
this->end_handle, &result, &count, offset);
if (status == ESP_GATT_INVALID_OFFSET || status == ESP_GATT_NOT_FOUND) {
break;
}
if (status != ESP_GATT_OK) {
ESP_LOGW(TAG, "[%d] [%s] esp_ble_gattc_get_all_char error, status=%d", this->client->get_connection_index(),
this->client->address_str().c_str(), status);
break;
}
if (count == 0) {
break;
}
BLECharacteristic *characteristic = new BLECharacteristic(); // NOLINT(cppcoreguidelines-owning-memory)
characteristic->uuid = espbt::ESPBTUUID::from_uuid(result.uuid);
characteristic->properties = result.properties;
characteristic->handle = result.char_handle;
characteristic->service = this;
this->characteristics.push_back(characteristic);
ESP_LOGV(TAG, "[%d] [%s] characteristic %s, handle 0x%x, properties 0x%x", this->client->get_connection_index(),
this->client->address_str().c_str(), characteristic->uuid.to_string().c_str(), characteristic->handle,
characteristic->properties);
offset++;
}
}
} // namespace esp32_ble_client
} // namespace esphome
#endif // USE_ESP32

View File

@@ -1,36 +0,0 @@
#pragma once
#ifdef USE_ESP32
#include "esphome/components/esp32_ble_tracker/esp32_ble_tracker.h"
#include "ble_characteristic.h"
#include <vector>
namespace esphome {
namespace esp32_ble_client {
namespace espbt = esphome::esp32_ble_tracker;
class BLEClientBase;
class BLEService {
public:
~BLEService();
bool parsed = false;
espbt::ESPBTUUID uuid;
uint16_t start_handle;
uint16_t end_handle;
std::vector<BLECharacteristic *> characteristics;
BLEClientBase *client;
void parse_characteristics();
void release_characteristics();
BLECharacteristic *get_characteristic(espbt::ESPBTUUID uuid);
BLECharacteristic *get_characteristic(uint16_t uuid);
};
} // namespace esp32_ble_client
} // namespace esphome
#endif // USE_ESP32

View File

@@ -1,320 +0,0 @@
import re
import esphome.codegen as cg
import esphome.config_validation as cv
from esphome import automation
from esphome.const import (
CONF_ACTIVE,
CONF_ID,
CONF_INTERVAL,
CONF_DURATION,
CONF_TRIGGER_ID,
CONF_MAC_ADDRESS,
CONF_SERVICE_UUID,
CONF_MANUFACTURER_ID,
CONF_ON_BLE_ADVERTISE,
CONF_ON_BLE_SERVICE_DATA_ADVERTISE,
CONF_ON_BLE_MANUFACTURER_DATA_ADVERTISE,
)
from esphome.core import CORE
from esphome.components.esp32 import add_idf_sdkconfig_option
from esphome.components import esp32_ble
DEPENDENCIES = ["esp32"]
CONF_ESP32_BLE_ID = "esp32_ble_id"
CONF_SCAN_PARAMETERS = "scan_parameters"
CONF_WINDOW = "window"
CONF_CONTINUOUS = "continuous"
CONF_ON_SCAN_END = "on_scan_end"
CONF_IO_CAPABILITY = "io_capability"
esp32_ble_tracker_ns = cg.esphome_ns.namespace("esp32_ble_tracker")
ESP32BLETracker = esp32_ble_tracker_ns.class_("ESP32BLETracker", cg.Component)
ESPBTClient = esp32_ble_tracker_ns.class_("ESPBTClient")
ESPBTDeviceListener = esp32_ble_tracker_ns.class_("ESPBTDeviceListener")
ESPBTDevice = esp32_ble_tracker_ns.class_("ESPBTDevice")
ESPBTDeviceConstRef = ESPBTDevice.operator("ref").operator("const")
adv_data_t = cg.std_vector.template(cg.uint8)
adv_data_t_const_ref = adv_data_t.operator("ref").operator("const")
# Triggers
ESPBTAdvertiseTrigger = esp32_ble_tracker_ns.class_(
"ESPBTAdvertiseTrigger", automation.Trigger.template(ESPBTDeviceConstRef)
)
BLEServiceDataAdvertiseTrigger = esp32_ble_tracker_ns.class_(
"BLEServiceDataAdvertiseTrigger", automation.Trigger.template(adv_data_t_const_ref)
)
BLEManufacturerDataAdvertiseTrigger = esp32_ble_tracker_ns.class_(
"BLEManufacturerDataAdvertiseTrigger",
automation.Trigger.template(adv_data_t_const_ref),
)
BLEEndOfScanTrigger = esp32_ble_tracker_ns.class_(
"BLEEndOfScanTrigger", automation.Trigger.template()
)
# Actions
ESP32BLEStartScanAction = esp32_ble_tracker_ns.class_(
"ESP32BLEStartScanAction", automation.Action
)
ESP32BLEStopScanAction = esp32_ble_tracker_ns.class_(
"ESP32BLEStopScanAction", automation.Action
)
IoCapability = esp32_ble_tracker_ns.enum("IoCapability")
IO_CAPABILITY = {
"none": IoCapability.IO_CAP_NONE,
"keyboard_only": IoCapability.IO_CAP_IN,
"keyboard_display": IoCapability.IO_CAP_KBDISP,
"display_only": IoCapability.IO_CAP_OUT,
"display_yes_no": IoCapability.IO_CAP_IO,
}
def validate_scan_parameters(config):
duration = config[CONF_DURATION]
interval = config[CONF_INTERVAL]
window = config[CONF_WINDOW]
if window > interval:
raise cv.Invalid(
f"Scan window ({window}) needs to be smaller than scan interval ({interval})"
)
if interval.total_milliseconds * 3 > duration.total_milliseconds:
raise cv.Invalid(
"Scan duration needs to be at least three times the scan interval to"
"cover all BLE channels."
)
return config
bt_uuid16_format = "XXXX"
bt_uuid32_format = "XXXXXXXX"
bt_uuid128_format = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
def bt_uuid(value):
in_value = cv.string_strict(value)
value = in_value.upper()
if len(value) == len(bt_uuid16_format):
pattern = re.compile("^[A-F|0-9]{4,}$")
if not pattern.match(value):
raise cv.Invalid(
f"Invalid hexadecimal value for 16 bit UUID format: '{in_value}'"
)
return value
if len(value) == len(bt_uuid32_format):
pattern = re.compile("^[A-F|0-9]{8,}$")
if not pattern.match(value):
raise cv.Invalid(
f"Invalid hexadecimal value for 32 bit UUID format: '{in_value}'"
)
return value
if len(value) == len(bt_uuid128_format):
pattern = re.compile(
"^[A-F|0-9]{8,}-[A-F|0-9]{4,}-[A-F|0-9]{4,}-[A-F|0-9]{4,}-[A-F|0-9]{12,}$"
)
if not pattern.match(value):
raise cv.Invalid(
f"Invalid hexadecimal value for 128 UUID format: '{in_value}'"
)
return value
raise cv.Invalid(
f"Service UUID must be in 16 bit '{bt_uuid16_format}', 32 bit '{bt_uuid32_format}', or 128 bit '{bt_uuid128_format}' format"
)
def as_hex(value):
return cg.RawExpression(f"0x{value}ULL")
def as_hex_array(value):
value = value.replace("-", "")
cpp_array = [
f"0x{part}" for part in [value[i : i + 2] for i in range(0, len(value), 2)]
]
return cg.RawExpression(f"(uint8_t*)(const uint8_t[16]){{{','.join(cpp_array)}}}")
def as_reversed_hex_array(value):
value = value.replace("-", "")
cpp_array = [
f"0x{part}" for part in [value[i : i + 2] for i in range(0, len(value), 2)]
]
return cg.RawExpression(
f"(uint8_t*)(const uint8_t[16]){{{','.join(reversed(cpp_array))}}}"
)
CONFIG_SCHEMA = cv.Schema(
{
cv.GenerateID(): cv.declare_id(ESP32BLETracker),
cv.Optional(CONF_SCAN_PARAMETERS, default={}): cv.All(
cv.Schema(
{
cv.Optional(
CONF_DURATION, default="5min"
): cv.positive_time_period_seconds,
cv.Optional(
CONF_INTERVAL, default="320ms"
): cv.positive_time_period_milliseconds,
cv.Optional(
CONF_WINDOW, default="30ms"
): cv.positive_time_period_milliseconds,
cv.Optional(CONF_ACTIVE, default=True): cv.boolean,
cv.Optional(CONF_CONTINUOUS, default=True): cv.boolean,
}
),
validate_scan_parameters,
),
cv.Optional(CONF_IO_CAPABILITY, default="none"): cv.enum(
IO_CAPABILITY, lower=True
),
cv.Optional(CONF_ON_BLE_ADVERTISE): automation.validate_automation(
{
cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(ESPBTAdvertiseTrigger),
cv.Optional(CONF_MAC_ADDRESS): cv.mac_address,
}
),
cv.Optional(CONF_ON_BLE_SERVICE_DATA_ADVERTISE): automation.validate_automation(
{
cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(
BLEServiceDataAdvertiseTrigger
),
cv.Optional(CONF_MAC_ADDRESS): cv.mac_address,
cv.Required(CONF_SERVICE_UUID): bt_uuid,
}
),
cv.Optional(
CONF_ON_BLE_MANUFACTURER_DATA_ADVERTISE
): automation.validate_automation(
{
cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(
BLEManufacturerDataAdvertiseTrigger
),
cv.Optional(CONF_MAC_ADDRESS): cv.mac_address,
cv.Required(CONF_MANUFACTURER_ID): bt_uuid,
}
),
cv.Optional(CONF_ON_SCAN_END): automation.validate_automation(
{cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(BLEEndOfScanTrigger)}
),
}
).extend(cv.COMPONENT_SCHEMA)
FINAL_VALIDATE_SCHEMA = esp32_ble.validate_variant
ESP_BLE_DEVICE_SCHEMA = cv.Schema(
{
cv.GenerateID(CONF_ESP32_BLE_ID): cv.use_id(ESP32BLETracker),
}
)
async def to_code(config):
var = cg.new_Pvariable(config[CONF_ID])
await cg.register_component(var, config)
params = config[CONF_SCAN_PARAMETERS]
cg.add(var.set_scan_duration(params[CONF_DURATION]))
cg.add(var.set_scan_interval(int(params[CONF_INTERVAL].total_milliseconds / 0.625)))
cg.add(var.set_scan_window(int(params[CONF_WINDOW].total_milliseconds / 0.625)))
cg.add(var.set_scan_active(params[CONF_ACTIVE]))
cg.add(var.set_scan_continuous(params[CONF_CONTINUOUS]))
cg.add(var.set_io_capability(config[CONF_IO_CAPABILITY]))
for conf in config.get(CONF_ON_BLE_ADVERTISE, []):
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var)
if CONF_MAC_ADDRESS in conf:
cg.add(trigger.set_address(conf[CONF_MAC_ADDRESS].as_hex))
await automation.build_automation(trigger, [(ESPBTDeviceConstRef, "x")], conf)
for conf in config.get(CONF_ON_BLE_SERVICE_DATA_ADVERTISE, []):
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var)
if len(conf[CONF_SERVICE_UUID]) == len(bt_uuid16_format):
cg.add(trigger.set_service_uuid16(as_hex(conf[CONF_SERVICE_UUID])))
elif len(conf[CONF_SERVICE_UUID]) == len(bt_uuid32_format):
cg.add(trigger.set_service_uuid32(as_hex(conf[CONF_SERVICE_UUID])))
elif len(conf[CONF_SERVICE_UUID]) == len(bt_uuid128_format):
uuid128 = as_reversed_hex_array(conf[CONF_SERVICE_UUID])
cg.add(trigger.set_service_uuid128(uuid128))
if CONF_MAC_ADDRESS in conf:
cg.add(trigger.set_address(conf[CONF_MAC_ADDRESS].as_hex))
await automation.build_automation(trigger, [(adv_data_t_const_ref, "x")], conf)
for conf in config.get(CONF_ON_BLE_MANUFACTURER_DATA_ADVERTISE, []):
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var)
if len(conf[CONF_MANUFACTURER_ID]) == len(bt_uuid16_format):
cg.add(trigger.set_manufacturer_uuid16(as_hex(conf[CONF_MANUFACTURER_ID])))
elif len(conf[CONF_MANUFACTURER_ID]) == len(bt_uuid32_format):
cg.add(trigger.set_manufacturer_uuid32(as_hex(conf[CONF_MANUFACTURER_ID])))
elif len(conf[CONF_MANUFACTURER_ID]) == len(bt_uuid128_format):
uuid128 = as_reversed_hex_array(conf[CONF_MANUFACTURER_ID])
cg.add(trigger.set_manufacturer_uuid128(uuid128))
if CONF_MAC_ADDRESS in conf:
cg.add(trigger.set_address(conf[CONF_MAC_ADDRESS].as_hex))
await automation.build_automation(trigger, [(adv_data_t_const_ref, "x")], conf)
for conf in config.get(CONF_ON_SCAN_END, []):
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var)
await automation.build_automation(trigger, [], conf)
if CORE.using_esp_idf:
add_idf_sdkconfig_option("CONFIG_BT_ENABLED", True)
# https://github.com/espressif/esp-idf/issues/4101
# https://github.com/espressif/esp-idf/issues/2503
# Match arduino CONFIG_BTU_TASK_STACK_SIZE
# https://github.com/espressif/arduino-esp32/blob/fd72cf46ad6fc1a6de99c1d83ba8eba17d80a4ee/tools/sdk/esp32/sdkconfig#L1866
add_idf_sdkconfig_option("CONFIG_BTU_TASK_STACK_SIZE", 8192)
cg.add_define("USE_OTA_STATE_CALLBACK") # To be notified when an OTA update starts
ESP32_BLE_START_SCAN_ACTION_SCHEMA = cv.Schema(
{
cv.GenerateID(): cv.use_id(ESP32BLETracker),
cv.Optional(CONF_CONTINUOUS, default=False): cv.templatable(cv.boolean),
}
)
@automation.register_action(
"esp32_ble_tracker.start_scan",
ESP32BLEStartScanAction,
ESP32_BLE_START_SCAN_ACTION_SCHEMA,
)
async def esp32_ble_tracker_start_scan_action_to_code(
config, action_id, template_arg, args
):
paren = await cg.get_variable(config[CONF_ID])
var = cg.new_Pvariable(action_id, template_arg, paren)
cg.add(var.set_continuous(config[CONF_CONTINUOUS]))
return var
ESP32_BLE_STOP_SCAN_ACTION_SCHEMA = automation.maybe_simple_id(
cv.Schema(
{
cv.GenerateID(): cv.use_id(ESP32BLETracker),
}
)
)
@automation.register_action(
"esp32_ble_tracker.stop_scan",
ESP32BLEStopScanAction,
ESP32_BLE_STOP_SCAN_ACTION_SCHEMA,
)
async def esp32_ble_tracker_stop_scan_action_to_code(
config, action_id, template_arg, args
):
var = cg.new_Pvariable(action_id, template_arg)
await cg.register_parented(var, config[CONF_ID])
return var
async def register_ble_device(var, config):
paren = await cg.get_variable(config[CONF_ESP32_BLE_ID])
cg.add(paren.register_listener(var))
return var
async def register_client(var, config):
paren = await cg.get_variable(config[CONF_ESP32_BLE_ID])
cg.add(paren.register_client(var))
return var

View File

@@ -1,108 +0,0 @@
#pragma once
#include "esphome/core/automation.h"
#include "esphome/components/esp32_ble_tracker/esp32_ble_tracker.h"
#ifdef USE_ESP32
namespace esphome {
namespace esp32_ble_tracker {
class ESPBTAdvertiseTrigger : public Trigger<const ESPBTDevice &>, public ESPBTDeviceListener {
public:
explicit ESPBTAdvertiseTrigger(ESP32BLETracker *parent) { parent->register_listener(this); }
void set_address(uint64_t address) { this->address_ = address; }
bool parse_device(const ESPBTDevice &device) override {
if (this->address_ && device.address_uint64() != this->address_) {
return false;
}
this->trigger(device);
return true;
}
protected:
uint64_t address_ = 0;
};
class BLEServiceDataAdvertiseTrigger : public Trigger<const adv_data_t &>, public ESPBTDeviceListener {
public:
explicit BLEServiceDataAdvertiseTrigger(ESP32BLETracker *parent) { parent->register_listener(this); }
void set_address(uint64_t address) { this->address_ = address; }
void set_service_uuid16(uint16_t uuid) { this->uuid_ = ESPBTUUID::from_uint16(uuid); }
void set_service_uuid32(uint32_t uuid) { this->uuid_ = ESPBTUUID::from_uint32(uuid); }
void set_service_uuid128(uint8_t *uuid) { this->uuid_ = ESPBTUUID::from_raw(uuid); }
bool parse_device(const ESPBTDevice &device) override {
if (this->address_ && device.address_uint64() != this->address_) {
return false;
}
for (auto &service_data : device.get_service_datas()) {
if (service_data.uuid == this->uuid_) {
this->trigger(service_data.data);
return true;
}
}
return false;
}
protected:
uint64_t address_ = 0;
ESPBTUUID uuid_;
};
class BLEManufacturerDataAdvertiseTrigger : public Trigger<const adv_data_t &>, public ESPBTDeviceListener {
public:
explicit BLEManufacturerDataAdvertiseTrigger(ESP32BLETracker *parent) { parent->register_listener(this); }
void set_address(uint64_t address) { this->address_ = address; }
void set_manufacturer_uuid16(uint16_t uuid) { this->uuid_ = ESPBTUUID::from_uint16(uuid); }
void set_manufacturer_uuid32(uint32_t uuid) { this->uuid_ = ESPBTUUID::from_uint32(uuid); }
void set_manufacturer_uuid128(uint8_t *uuid) { this->uuid_ = ESPBTUUID::from_raw(uuid); }
bool parse_device(const ESPBTDevice &device) override {
if (this->address_ && device.address_uint64() != this->address_) {
return false;
}
for (auto &manufacturer_data : device.get_manufacturer_datas()) {
if (manufacturer_data.uuid == this->uuid_) {
this->trigger(manufacturer_data.data);
return true;
}
}
return false;
}
protected:
uint64_t address_ = 0;
ESPBTUUID uuid_;
};
class BLEEndOfScanTrigger : public Trigger<>, public ESPBTDeviceListener {
public:
explicit BLEEndOfScanTrigger(ESP32BLETracker *parent) { parent->register_listener(this); }
bool parse_device(const ESPBTDevice &device) override { return false; }
void on_scan_end() override { this->trigger(); }
};
template<typename... Ts> class ESP32BLEStartScanAction : public Action<Ts...> {
public:
ESP32BLEStartScanAction(ESP32BLETracker *parent) : parent_(parent) {}
TEMPLATABLE_VALUE(bool, continuous)
void play(Ts... x) override {
this->parent_->set_scan_continuous(this->continuous_.value(x...));
this->parent_->start_scan();
}
protected:
ESP32BLETracker *parent_;
};
template<typename... Ts> class ESP32BLEStopScanAction : public Action<Ts...>, public Parented<ESP32BLETracker> {
public:
void play(Ts... x) override { this->parent_->stop_scan(); }
};
} // namespace esp32_ble_tracker
} // namespace esphome
#endif

View File

@@ -1,941 +0,0 @@
#ifdef USE_ESP32
#include "esp32_ble_tracker.h"
#include "esphome/core/application.h"
#include "esphome/core/defines.h"
#include "esphome/core/hal.h"
#include "esphome/core/helpers.h"
#include "esphome/core/log.h"
#include <nvs_flash.h>
#include <freertos/FreeRTOSConfig.h>
#include <esp_bt_main.h>
#include <esp_bt.h>
#include <freertos/FreeRTOS.h>
#include <freertos/task.h>
#include <esp_gap_ble_api.h>
#include <esp_bt_defs.h>
#ifdef USE_OTA
#include "esphome/components/ota/ota_component.h"
#endif
#ifdef USE_ARDUINO
#include <esp32-hal-bt.h>
#endif
// bt_trace.h
#undef TAG
namespace esphome {
namespace esp32_ble_tracker {
static const char *const TAG = "esp32_ble_tracker";
ESP32BLETracker *global_esp32_ble_tracker = nullptr; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
esp_ble_io_cap_t global_io_cap = ESP_IO_CAP_NONE; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
uint64_t ble_addr_to_uint64(const esp_bd_addr_t address) {
uint64_t u = 0;
u |= uint64_t(address[0] & 0xFF) << 40;
u |= uint64_t(address[1] & 0xFF) << 32;
u |= uint64_t(address[2] & 0xFF) << 24;
u |= uint64_t(address[3] & 0xFF) << 16;
u |= uint64_t(address[4] & 0xFF) << 8;
u |= uint64_t(address[5] & 0xFF) << 0;
return u;
}
float ESP32BLETracker::get_setup_priority() const { return setup_priority::BLUETOOTH; }
void ESP32BLETracker::setup() {
global_esp32_ble_tracker = this;
this->scan_result_lock_ = xSemaphoreCreateMutex();
this->scan_end_lock_ = xSemaphoreCreateMutex();
this->scanner_idle_ = true;
if (!ESP32BLETracker::ble_setup()) {
this->mark_failed();
return;
}
#ifdef USE_OTA
ota::global_ota_component->add_on_state_callback([this](ota::OTAState state, float progress, uint8_t error) {
if (state == ota::OTA_STARTED) {
this->stop_scan();
}
});
#endif
if (this->scan_continuous_) {
if (xSemaphoreTake(this->scan_end_lock_, 0L)) {
this->start_scan_(true);
} else {
ESP_LOGW(TAG, "Cannot start scan!");
}
}
}
void ESP32BLETracker::loop() {
BLEEvent *ble_event = this->ble_events_.pop();
while (ble_event != nullptr) {
if (ble_event->type_) {
this->real_gattc_event_handler_(ble_event->event_.gattc.gattc_event, ble_event->event_.gattc.gattc_if,
&ble_event->event_.gattc.gattc_param);
} else {
this->real_gap_event_handler_(ble_event->event_.gap.gap_event, &ble_event->event_.gap.gap_param);
}
delete ble_event; // NOLINT(cppcoreguidelines-owning-memory)
ble_event = this->ble_events_.pop();
}
int connecting = 0;
int discovered = 0;
int searching = 0;
int disconnecting = 0;
for (auto *client : this->clients_) {
switch (client->state()) {
case ClientState::DISCONNECTING:
disconnecting++;
break;
case ClientState::DISCOVERED:
discovered++;
break;
case ClientState::SEARCHING:
searching++;
break;
case ClientState::CONNECTING:
case ClientState::READY_TO_CONNECT:
connecting++;
break;
default:
break;
}
}
bool promote_to_connecting = discovered && !searching && !connecting;
if (!this->scanner_idle_) {
if (this->scan_result_index_ && // if it looks like we have a scan result we will take the lock
xSemaphoreTake(this->scan_result_lock_, 5L / portTICK_PERIOD_MS)) {
uint32_t index = this->scan_result_index_;
if (index) {
if (index >= 16) {
ESP_LOGW(TAG, "Too many BLE events to process. Some devices may not show up.");
}
for (size_t i = 0; i < index; i++) {
ESPBTDevice device;
device.parse_scan_rst(this->scan_result_buffer_[i]);
bool found = false;
for (auto *listener : this->listeners_) {
if (listener->parse_device(device))
found = true;
}
for (auto *client : this->clients_) {
if (client->parse_device(device)) {
found = true;
if (!connecting && client->state() == ClientState::DISCOVERED) {
promote_to_connecting = true;
}
}
}
if (!found && !this->scan_continuous_) {
this->print_bt_device_info(device);
}
}
this->scan_result_index_ = 0;
}
xSemaphoreGive(this->scan_result_lock_);
}
/*
Avoid starting the scanner if:
- we are already scanning
- we are connecting to a device
- we are disconnecting from a device
Otherwise the scanner could fail to ever start again
and our only way to recover is to reboot.
https://github.com/espressif/esp-idf/issues/6688
*/
if (!connecting && !disconnecting && xSemaphoreTake(this->scan_end_lock_, 0L)) {
if (this->scan_continuous_) {
if (!promote_to_connecting && !this->scan_start_failed_ && !this->scan_set_param_failed_) {
this->start_scan_(false);
} else {
// We didn't start the scan, so we need to release the lock
xSemaphoreGive(this->scan_end_lock_);
}
} else if (!this->scanner_idle_) {
this->end_of_scan_();
return;
}
}
if (this->scan_start_failed_ || this->scan_set_param_failed_) {
if (this->scan_start_fail_count_ == 255) {
ESP_LOGE(TAG, "ESP-IDF BLE scan could not restart after 255 attempts, rebooting to restore BLE stack...");
App.reboot();
}
if (xSemaphoreTake(this->scan_end_lock_, 0L)) {
xSemaphoreGive(this->scan_end_lock_);
} else {
ESP_LOGD(TAG, "Stopping scan after failure...");
esp_ble_gap_stop_scanning();
this->cancel_timeout("scan");
}
if (this->scan_start_failed_) {
ESP_LOGE(TAG, "Scan start failed: %d", this->scan_start_failed_);
this->scan_start_failed_ = ESP_BT_STATUS_SUCCESS;
}
if (this->scan_set_param_failed_) {
ESP_LOGE(TAG, "Scan set param failed: %d", this->scan_set_param_failed_);
this->scan_set_param_failed_ = ESP_BT_STATUS_SUCCESS;
}
}
}
// If there is a discovered client and no connecting
// clients and no clients using the scanner to search for
// devices, then stop scanning and promote the discovered
// client to ready to connect.
if (promote_to_connecting) {
for (auto *client : this->clients_) {
if (client->state() == ClientState::DISCOVERED) {
if (xSemaphoreTake(this->scan_end_lock_, 0L)) {
// Scanner is not running since we got the
// lock, so we can promote the client.
xSemaphoreGive(this->scan_end_lock_);
// We only want to promote one client at a time.
// once the scanner is fully stopped.
client->set_state(ClientState::READY_TO_CONNECT);
} else {
ESP_LOGD(TAG, "Pausing scan to make connection...");
esp_ble_gap_stop_scanning();
this->cancel_timeout("scan");
}
break;
}
}
}
}
void ESP32BLETracker::start_scan() {
if (xSemaphoreTake(this->scan_end_lock_, 0L)) {
this->start_scan_(true);
} else {
ESP_LOGW(TAG, "Scan requested when a scan is already in progress. Ignoring.");
}
}
void ESP32BLETracker::stop_scan() {
ESP_LOGD(TAG, "Stopping scan.");
this->scan_continuous_ = false;
esp_ble_gap_stop_scanning();
this->cancel_timeout("scan");
}
bool ESP32BLETracker::ble_setup() {
// Initialize non-volatile storage for the bluetooth controller
esp_err_t err = nvs_flash_init();
if (err != ESP_OK) {
ESP_LOGE(TAG, "nvs_flash_init failed: %d", err);
return false;
}
#ifdef USE_ARDUINO
if (!btStart()) {
ESP_LOGE(TAG, "btStart failed: %d", esp_bt_controller_get_status());
return false;
}
#else
if (esp_bt_controller_get_status() != ESP_BT_CONTROLLER_STATUS_ENABLED) {
// start bt controller
if (esp_bt_controller_get_status() == ESP_BT_CONTROLLER_STATUS_IDLE) {
esp_bt_controller_config_t cfg = BT_CONTROLLER_INIT_CONFIG_DEFAULT();
err = esp_bt_controller_init(&cfg);
if (err != ESP_OK) {
ESP_LOGE(TAG, "esp_bt_controller_init failed: %s", esp_err_to_name(err));
return false;
}
while (esp_bt_controller_get_status() == ESP_BT_CONTROLLER_STATUS_IDLE)
;
}
if (esp_bt_controller_get_status() == ESP_BT_CONTROLLER_STATUS_INITED) {
err = esp_bt_controller_enable(ESP_BT_MODE_BLE);
if (err != ESP_OK) {
ESP_LOGE(TAG, "esp_bt_controller_enable failed: %s", esp_err_to_name(err));
return false;
}
}
if (esp_bt_controller_get_status() != ESP_BT_CONTROLLER_STATUS_ENABLED) {
ESP_LOGE(TAG, "esp bt controller enable failed");
return false;
}
}
#endif
esp_bt_controller_mem_release(ESP_BT_MODE_CLASSIC_BT);
err = esp_bluedroid_init();
if (err != ESP_OK) {
ESP_LOGE(TAG, "esp_bluedroid_init failed: %d", err);
return false;
}
err = esp_bluedroid_enable();
if (err != ESP_OK) {
ESP_LOGE(TAG, "esp_bluedroid_enable failed: %d", err);
return false;
}
err = esp_ble_gap_register_callback(ESP32BLETracker::gap_event_handler);
if (err != ESP_OK) {
ESP_LOGE(TAG, "esp_ble_gap_register_callback failed: %d", err);
return false;
}
err = esp_ble_gattc_register_callback(ESP32BLETracker::gattc_event_handler);
if (err != ESP_OK) {
ESP_LOGE(TAG, "esp_ble_gattc_register_callback failed: %d", err);
return false;
}
// Empty name
esp_ble_gap_set_device_name("");
err = esp_ble_gap_set_security_param(ESP_BLE_SM_IOCAP_MODE, &global_io_cap, sizeof(uint8_t));
if (err != ESP_OK) {
ESP_LOGE(TAG, "esp_ble_gap_set_security_param failed: %d", err);
return false;
}
// BLE takes some time to be fully set up, 200ms should be more than enough
delay(200); // NOLINT
return true;
}
void ESP32BLETracker::start_scan_(bool first) {
// The lock must be held when calling this function.
if (xSemaphoreTake(this->scan_end_lock_, 0L)) {
ESP_LOGE(TAG, "start_scan called without holding scan_end_lock_");
return;
}
ESP_LOGD(TAG, "Starting scan...");
if (!first) {
for (auto *listener : this->listeners_)
listener->on_scan_end();
}
this->already_discovered_.clear();
this->scanner_idle_ = false;
this->scan_params_.scan_type = this->scan_active_ ? BLE_SCAN_TYPE_ACTIVE : BLE_SCAN_TYPE_PASSIVE;
this->scan_params_.own_addr_type = BLE_ADDR_TYPE_PUBLIC;
this->scan_params_.scan_filter_policy = BLE_SCAN_FILTER_ALLOW_ALL;
this->scan_params_.scan_interval = this->scan_interval_;
this->scan_params_.scan_window = this->scan_window_;
esp_ble_gap_set_scan_params(&this->scan_params_);
esp_ble_gap_start_scanning(this->scan_duration_);
this->set_timeout("scan", this->scan_duration_ * 2000, []() {
ESP_LOGE(TAG, "ESP-IDF BLE scan never terminated, rebooting to restore BLE stack...");
App.reboot();
});
}
void ESP32BLETracker::end_of_scan_() {
// The lock must be held when calling this function.
if (xSemaphoreTake(this->scan_end_lock_, 0L)) {
ESP_LOGE(TAG, "end_of_scan_ called without holding the scan_end_lock_");
return;
}
ESP_LOGD(TAG, "End of scan.");
this->scanner_idle_ = true;
this->already_discovered_.clear();
xSemaphoreGive(this->scan_end_lock_);
this->cancel_timeout("scan");
for (auto *listener : this->listeners_)
listener->on_scan_end();
}
void ESP32BLETracker::register_client(ESPBTClient *client) {
client->app_id = ++this->app_id_;
this->clients_.push_back(client);
}
void ESP32BLETracker::gap_event_handler(esp_gap_ble_cb_event_t event, esp_ble_gap_cb_param_t *param) {
BLEEvent *gap_event = new BLEEvent(event, param); // NOLINT(cppcoreguidelines-owning-memory)
global_esp32_ble_tracker->ble_events_.push(gap_event);
} // NOLINT(clang-analyzer-cplusplus.NewDeleteLeaks)
void ESP32BLETracker::real_gap_event_handler_(esp_gap_ble_cb_event_t event, esp_ble_gap_cb_param_t *param) {
switch (event) {
case ESP_GAP_BLE_SCAN_RESULT_EVT:
this->gap_scan_result_(param->scan_rst);
break;
case ESP_GAP_BLE_SCAN_PARAM_SET_COMPLETE_EVT:
this->gap_scan_set_param_complete_(param->scan_param_cmpl);
break;
case ESP_GAP_BLE_SCAN_START_COMPLETE_EVT:
this->gap_scan_start_complete_(param->scan_start_cmpl);
break;
case ESP_GAP_BLE_SCAN_STOP_COMPLETE_EVT:
this->gap_scan_stop_complete_(param->scan_stop_cmpl);
break;
default:
break;
}
for (auto *client : this->clients_) {
client->gap_event_handler(event, param);
}
}
void ESP32BLETracker::gap_scan_set_param_complete_(const esp_ble_gap_cb_param_t::ble_scan_param_cmpl_evt_param &param) {
this->scan_set_param_failed_ = param.status;
}
void ESP32BLETracker::gap_scan_start_complete_(const esp_ble_gap_cb_param_t::ble_scan_start_cmpl_evt_param &param) {
this->scan_start_failed_ = param.status;
if (param.status == ESP_BT_STATUS_SUCCESS) {
this->scan_start_fail_count_ = 0;
} else {
this->scan_start_fail_count_++;
xSemaphoreGive(this->scan_end_lock_);
}
}
void ESP32BLETracker::gap_scan_stop_complete_(const esp_ble_gap_cb_param_t::ble_scan_stop_cmpl_evt_param &param) {
xSemaphoreGive(this->scan_end_lock_);
}
void ESP32BLETracker::gap_scan_result_(const esp_ble_gap_cb_param_t::ble_scan_result_evt_param &param) {
if (param.search_evt == ESP_GAP_SEARCH_INQ_RES_EVT) {
if (xSemaphoreTake(this->scan_result_lock_, 0L)) {
if (this->scan_result_index_ < 16) {
this->scan_result_buffer_[this->scan_result_index_++] = param;
}
xSemaphoreGive(this->scan_result_lock_);
}
} else if (param.search_evt == ESP_GAP_SEARCH_INQ_CMPL_EVT) {
xSemaphoreGive(this->scan_end_lock_);
}
}
void ESP32BLETracker::gattc_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_t gattc_if,
esp_ble_gattc_cb_param_t *param) {
BLEEvent *gattc_event = new BLEEvent(event, gattc_if, param); // NOLINT(cppcoreguidelines-owning-memory)
global_esp32_ble_tracker->ble_events_.push(gattc_event);
} // NOLINT(clang-analyzer-cplusplus.NewDeleteLeaks)
void ESP32BLETracker::real_gattc_event_handler_(esp_gattc_cb_event_t event, esp_gatt_if_t gattc_if,
esp_ble_gattc_cb_param_t *param) {
for (auto *client : this->clients_) {
client->gattc_event_handler(event, gattc_if, param);
}
}
ESPBTUUID::ESPBTUUID() : uuid_() {}
ESPBTUUID ESPBTUUID::from_uint16(uint16_t uuid) {
ESPBTUUID ret;
ret.uuid_.len = ESP_UUID_LEN_16;
ret.uuid_.uuid.uuid16 = uuid;
return ret;
}
ESPBTUUID ESPBTUUID::from_uint32(uint32_t uuid) {
ESPBTUUID ret;
ret.uuid_.len = ESP_UUID_LEN_32;
ret.uuid_.uuid.uuid32 = uuid;
return ret;
}
ESPBTUUID ESPBTUUID::from_raw(const uint8_t *data) {
ESPBTUUID ret;
ret.uuid_.len = ESP_UUID_LEN_128;
for (size_t i = 0; i < ESP_UUID_LEN_128; i++)
ret.uuid_.uuid.uuid128[i] = data[i];
return ret;
}
ESPBTUUID ESPBTUUID::from_raw(const std::string &data) {
ESPBTUUID ret;
if (data.length() == 4) {
ret.uuid_.len = ESP_UUID_LEN_16;
ret.uuid_.uuid.uuid16 = 0;
for (int i = 0; i < data.length();) {
uint8_t msb = data.c_str()[i];
uint8_t lsb = data.c_str()[i + 1];
if (msb > '9')
msb -= 7;
if (lsb > '9')
lsb -= 7;
ret.uuid_.uuid.uuid16 += (((msb & 0x0F) << 4) | (lsb & 0x0F)) << (2 - i) * 4;
i += 2;
}
} else if (data.length() == 8) {
ret.uuid_.len = ESP_UUID_LEN_32;
ret.uuid_.uuid.uuid32 = 0;
for (int i = 0; i < data.length();) {
uint8_t msb = data.c_str()[i];
uint8_t lsb = data.c_str()[i + 1];
if (msb > '9')
msb -= 7;
if (lsb > '9')
lsb -= 7;
ret.uuid_.uuid.uuid32 += (((msb & 0x0F) << 4) | (lsb & 0x0F)) << (6 - i) * 4;
i += 2;
}
} else if (data.length() == 16) { // how we can have 16 byte length string reprezenting 128 bit uuid??? needs to be
// investigated (lack of time)
ret.uuid_.len = ESP_UUID_LEN_128;
memcpy(ret.uuid_.uuid.uuid128, (uint8_t *) data.data(), 16);
} else if (data.length() == 36) {
// If the length of the string is 36 bytes then we will assume it is a long hex string in
// UUID format.
ret.uuid_.len = ESP_UUID_LEN_128;
int n = 0;
for (int i = 0; i < data.length();) {
if (data.c_str()[i] == '-')
i++;
uint8_t msb = data.c_str()[i];
uint8_t lsb = data.c_str()[i + 1];
if (msb > '9')
msb -= 7;
if (lsb > '9')
lsb -= 7;
ret.uuid_.uuid.uuid128[15 - n++] = ((msb & 0x0F) << 4) | (lsb & 0x0F);
i += 2;
}
} else {
ESP_LOGE(TAG, "ERROR: UUID value not 2, 4, 16 or 36 bytes - %s", data.c_str());
}
return ret;
}
ESPBTUUID ESPBTUUID::from_uuid(esp_bt_uuid_t uuid) {
ESPBTUUID ret;
ret.uuid_.len = uuid.len;
if (uuid.len == ESP_UUID_LEN_16) {
ret.uuid_.uuid.uuid16 = uuid.uuid.uuid16;
} else if (uuid.len == ESP_UUID_LEN_32) {
ret.uuid_.uuid.uuid32 = uuid.uuid.uuid32;
} else if (uuid.len == ESP_UUID_LEN_128) {
memcpy(ret.uuid_.uuid.uuid128, uuid.uuid.uuid128, ESP_UUID_LEN_128);
}
return ret;
}
ESPBTUUID ESPBTUUID::as_128bit() const {
if (this->uuid_.len == ESP_UUID_LEN_128) {
return *this;
}
uint8_t data[] = {0xFB, 0x34, 0x9B, 0x5F, 0x80, 0x00, 0x00, 0x80, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
uint32_t uuid32;
if (this->uuid_.len == ESP_UUID_LEN_32) {
uuid32 = this->uuid_.uuid.uuid32;
} else {
uuid32 = this->uuid_.uuid.uuid16;
}
for (uint8_t i = 0; i < this->uuid_.len; i++) {
data[12 + i] = ((uuid32 >> i * 8) & 0xFF);
}
return ESPBTUUID::from_raw(data);
}
bool ESPBTUUID::contains(uint8_t data1, uint8_t data2) const {
if (this->uuid_.len == ESP_UUID_LEN_16) {
return (this->uuid_.uuid.uuid16 >> 8) == data2 && (this->uuid_.uuid.uuid16 & 0xFF) == data1;
} else if (this->uuid_.len == ESP_UUID_LEN_32) {
for (uint8_t i = 0; i < 3; i++) {
bool a = ((this->uuid_.uuid.uuid32 >> i * 8) & 0xFF) == data1;
bool b = ((this->uuid_.uuid.uuid32 >> (i + 1) * 8) & 0xFF) == data2;
if (a && b)
return true;
}
} else {
for (uint8_t i = 0; i < 15; i++) {
if (this->uuid_.uuid.uuid128[i] == data1 && this->uuid_.uuid.uuid128[i + 1] == data2)
return true;
}
}
return false;
}
bool ESPBTUUID::operator==(const ESPBTUUID &uuid) const {
if (this->uuid_.len == uuid.uuid_.len) {
switch (this->uuid_.len) {
case ESP_UUID_LEN_16:
if (uuid.uuid_.uuid.uuid16 == this->uuid_.uuid.uuid16) {
return true;
}
break;
case ESP_UUID_LEN_32:
if (uuid.uuid_.uuid.uuid32 == this->uuid_.uuid.uuid32) {
return true;
}
break;
case ESP_UUID_LEN_128:
for (int i = 0; i < ESP_UUID_LEN_128; i++) {
if (uuid.uuid_.uuid.uuid128[i] != this->uuid_.uuid.uuid128[i]) {
return false;
}
}
return true;
break;
}
} else {
return this->as_128bit() == uuid.as_128bit();
}
return false;
}
esp_bt_uuid_t ESPBTUUID::get_uuid() const { return this->uuid_; }
std::string ESPBTUUID::to_string() const {
switch (this->uuid_.len) {
case ESP_UUID_LEN_16:
return str_snprintf("0x%02X%02X", 6, this->uuid_.uuid.uuid16 >> 8, this->uuid_.uuid.uuid16 & 0xff);
case ESP_UUID_LEN_32:
return str_snprintf("0x%02X%02X%02X%02X", 10, this->uuid_.uuid.uuid32 >> 24,
(this->uuid_.uuid.uuid32 >> 16 & 0xff), (this->uuid_.uuid.uuid32 >> 8 & 0xff),
this->uuid_.uuid.uuid32 & 0xff);
default:
case ESP_UUID_LEN_128:
std::string buf;
for (uint8_t i = 0; i < 16; i++) {
buf += str_snprintf("%02X", 2, this->uuid_.uuid.uuid128[i]);
if (i == 3 || i == 5 || i == 7 || i == 9)
buf += "-";
}
return buf;
}
return "";
}
uint64_t ESPBTUUID::get_128bit_high() const {
esp_bt_uuid_t uuid = this->as_128bit().get_uuid();
return ((uint64_t) uuid.uuid.uuid128[15] << 56) | ((uint64_t) uuid.uuid.uuid128[14] << 48) |
((uint64_t) uuid.uuid.uuid128[13] << 40) | ((uint64_t) uuid.uuid.uuid128[12] << 32) |
((uint64_t) uuid.uuid.uuid128[11] << 24) | ((uint64_t) uuid.uuid.uuid128[10] << 16) |
((uint64_t) uuid.uuid.uuid128[9] << 8) | ((uint64_t) uuid.uuid.uuid128[8]);
}
uint64_t ESPBTUUID::get_128bit_low() const {
esp_bt_uuid_t uuid = this->as_128bit().get_uuid();
return ((uint64_t) uuid.uuid.uuid128[7] << 56) | ((uint64_t) uuid.uuid.uuid128[6] << 48) |
((uint64_t) uuid.uuid.uuid128[5] << 40) | ((uint64_t) uuid.uuid.uuid128[4] << 32) |
((uint64_t) uuid.uuid.uuid128[3] << 24) | ((uint64_t) uuid.uuid.uuid128[2] << 16) |
((uint64_t) uuid.uuid.uuid128[1] << 8) | ((uint64_t) uuid.uuid.uuid128[0]);
}
ESPBLEiBeacon::ESPBLEiBeacon(const uint8_t *data) { memcpy(&this->beacon_data_, data, sizeof(beacon_data_)); }
optional<ESPBLEiBeacon> ESPBLEiBeacon::from_manufacturer_data(const ServiceData &data) {
if (!data.uuid.contains(0x4C, 0x00))
return {};
if (data.data.size() != 23)
return {};
return ESPBLEiBeacon(data.data.data());
}
void ESPBTDevice::parse_scan_rst(const esp_ble_gap_cb_param_t::ble_scan_result_evt_param &param) {
this->scan_result_ = param;
for (uint8_t i = 0; i < ESP_BD_ADDR_LEN; i++)
this->address_[i] = param.bda[i];
this->address_type_ = param.ble_addr_type;
this->rssi_ = param.rssi;
this->parse_adv_(param);
#ifdef ESPHOME_LOG_HAS_VERY_VERBOSE
ESP_LOGVV(TAG, "Parse Result:");
const char *address_type = "";
switch (this->address_type_) {
case BLE_ADDR_TYPE_PUBLIC:
address_type = "PUBLIC";
break;
case BLE_ADDR_TYPE_RANDOM:
address_type = "RANDOM";
break;
case BLE_ADDR_TYPE_RPA_PUBLIC:
address_type = "RPA_PUBLIC";
break;
case BLE_ADDR_TYPE_RPA_RANDOM:
address_type = "RPA_RANDOM";
break;
}
ESP_LOGVV(TAG, " Address: %02X:%02X:%02X:%02X:%02X:%02X (%s)", this->address_[0], this->address_[1],
this->address_[2], this->address_[3], this->address_[4], this->address_[5], address_type);
ESP_LOGVV(TAG, " RSSI: %d", this->rssi_);
ESP_LOGVV(TAG, " Name: '%s'", this->name_.c_str());
for (auto &it : this->tx_powers_) {
ESP_LOGVV(TAG, " TX Power: %d", it);
}
if (this->appearance_.has_value()) {
ESP_LOGVV(TAG, " Appearance: %u", *this->appearance_);
}
if (this->ad_flag_.has_value()) {
ESP_LOGVV(TAG, " Ad Flag: %u", *this->ad_flag_);
}
for (auto &uuid : this->service_uuids_) {
ESP_LOGVV(TAG, " Service UUID: %s", uuid.to_string().c_str());
}
for (auto &data : this->manufacturer_datas_) {
ESP_LOGVV(TAG, " Manufacturer data: %s", format_hex_pretty(data.data).c_str());
if (this->get_ibeacon().has_value()) {
auto ibeacon = this->get_ibeacon().value();
ESP_LOGVV(TAG, " iBeacon data:");
ESP_LOGVV(TAG, " UUID: %s", ibeacon.get_uuid().to_string().c_str());
ESP_LOGVV(TAG, " Major: %u", ibeacon.get_major());
ESP_LOGVV(TAG, " Minor: %u", ibeacon.get_minor());
ESP_LOGVV(TAG, " TXPower: %d", ibeacon.get_signal_power());
}
}
for (auto &data : this->service_datas_) {
ESP_LOGVV(TAG, " Service data:");
ESP_LOGVV(TAG, " UUID: %s", data.uuid.to_string().c_str());
ESP_LOGVV(TAG, " Data: %s", format_hex_pretty(data.data).c_str());
}
ESP_LOGVV(TAG, "Adv data: %s", format_hex_pretty(param.ble_adv, param.adv_data_len + param.scan_rsp_len).c_str());
#endif
}
void ESPBTDevice::parse_adv_(const esp_ble_gap_cb_param_t::ble_scan_result_evt_param &param) {
size_t offset = 0;
const uint8_t *payload = param.ble_adv;
uint8_t len = param.adv_data_len + param.scan_rsp_len;
while (offset + 2 < len) {
const uint8_t field_length = payload[offset++]; // First byte is length of adv record
if (field_length == 0) {
continue; // Possible zero padded advertisement data
}
// first byte of adv record is adv record type
const uint8_t record_type = payload[offset++];
const uint8_t *record = &payload[offset];
const uint8_t record_length = field_length - 1;
offset += record_length;
// See also Generic Access Profile Assigned Numbers:
// https://www.bluetooth.com/specifications/assigned-numbers/generic-access-profile/ See also ADVERTISING AND SCAN
// RESPONSE DATA FORMAT: https://www.bluetooth.com/specifications/bluetooth-core-specification/ (vol 3, part C, 11)
// See also Core Specification Supplement: https://www.bluetooth.com/specifications/bluetooth-core-specification/
// (called CSS here)
switch (record_type) {
case ESP_BLE_AD_TYPE_NAME_SHORT:
case ESP_BLE_AD_TYPE_NAME_CMPL: {
// CSS 1.2 LOCAL NAME
// "The Local Name data type shall be the same as, or a shortened version of, the local name assigned to the
// device." CSS 1: Optional in this context; shall not appear more than once in a block.
// SHORTENED LOCAL NAME
// "The Shortened Local Name data type defines a shortened version of the Local Name data type. The Shortened
// Local Name data type shall not be used to advertise a name that is longer than the Local Name data type."
if (record_length > this->name_.length()) {
this->name_ = std::string(reinterpret_cast<const char *>(record), record_length);
}
break;
}
case ESP_BLE_AD_TYPE_TX_PWR: {
// CSS 1.5 TX POWER LEVEL
// "The TX Power Level data type indicates the transmitted power level of the packet containing the data type."
// CSS 1: Optional in this context (may appear more than once in a block).
this->tx_powers_.push_back(*payload);
break;
}
case ESP_BLE_AD_TYPE_APPEARANCE: {
// CSS 1.12 APPEARANCE
// "The Appearance data type defines the external appearance of the device."
// See also https://www.bluetooth.com/specifications/gatt/characteristics/
// CSS 1: Optional in this context; shall not appear more than once in a block and shall not appear in both
// the AD and SRD of the same extended advertising interval.
this->appearance_ = *reinterpret_cast<const uint16_t *>(record);
break;
}
case ESP_BLE_AD_TYPE_FLAG: {
// CSS 1.3 FLAGS
// "The Flags data type contains one bit Boolean flags. The Flags data type shall be included when any of the
// Flag bits are non-zero and the advertising packet is connectable, otherwise the Flags data type may be
// omitted."
// CSS 1: Optional in this context; shall not appear more than once in a block.
this->ad_flag_ = *record;
break;
}
// CSS 1.1 SERVICE UUID
// The Service UUID data type is used to include a list of Service or Service Class UUIDs.
// There are six data types defined for the three sizes of Service UUIDs that may be returned:
// CSS 1: Optional in this context (may appear more than once in a block).
case ESP_BLE_AD_TYPE_16SRV_CMPL:
case ESP_BLE_AD_TYPE_16SRV_PART: {
// • 16-bit Bluetooth Service UUIDs
for (uint8_t i = 0; i < record_length / 2; i++) {
this->service_uuids_.push_back(ESPBTUUID::from_uint16(*reinterpret_cast<const uint16_t *>(record + 2 * i)));
}
break;
}
case ESP_BLE_AD_TYPE_32SRV_CMPL:
case ESP_BLE_AD_TYPE_32SRV_PART: {
// • 32-bit Bluetooth Service UUIDs
for (uint8_t i = 0; i < record_length / 4; i++) {
this->service_uuids_.push_back(ESPBTUUID::from_uint32(*reinterpret_cast<const uint32_t *>(record + 4 * i)));
}
break;
}
case ESP_BLE_AD_TYPE_128SRV_CMPL:
case ESP_BLE_AD_TYPE_128SRV_PART: {
// • Global 128-bit Service UUIDs
this->service_uuids_.push_back(ESPBTUUID::from_raw(record));
break;
}
case ESP_BLE_AD_MANUFACTURER_SPECIFIC_TYPE: {
// CSS 1.4 MANUFACTURER SPECIFIC DATA
// "The Manufacturer Specific data type is used for manufacturer specific data. The first two data octets shall
// contain a company identifier from Assigned Numbers. The interpretation of any other octets within the data
// shall be defined by the manufacturer specified by the company identifier."
// CSS 1: Optional in this context (may appear more than once in a block).
if (record_length < 2) {
ESP_LOGV(TAG, "Record length too small for ESP_BLE_AD_MANUFACTURER_SPECIFIC_TYPE");
break;
}
ServiceData data{};
data.uuid = ESPBTUUID::from_uint16(*reinterpret_cast<const uint16_t *>(record));
data.data.assign(record + 2UL, record + record_length);
this->manufacturer_datas_.push_back(data);
break;
}
// CSS 1.11 SERVICE DATA
// "The Service Data data type consists of a service UUID with the data associated with that service."
// CSS 1: Optional in this context (may appear more than once in a block).
case ESP_BLE_AD_TYPE_SERVICE_DATA: {
// «Service Data - 16 bit UUID»
// Size: 2 or more octets
// The first 2 octets contain the 16 bit Service UUID fol- lowed by additional service data
if (record_length < 2) {
ESP_LOGV(TAG, "Record length too small for ESP_BLE_AD_TYPE_SERVICE_DATA");
break;
}
ServiceData data{};
data.uuid = ESPBTUUID::from_uint16(*reinterpret_cast<const uint16_t *>(record));
data.data.assign(record + 2UL, record + record_length);
this->service_datas_.push_back(data);
break;
}
case ESP_BLE_AD_TYPE_32SERVICE_DATA: {
// «Service Data - 32 bit UUID»
// Size: 4 or more octets
// The first 4 octets contain the 32 bit Service UUID fol- lowed by additional service data
if (record_length < 4) {
ESP_LOGV(TAG, "Record length too small for ESP_BLE_AD_TYPE_32SERVICE_DATA");
break;
}
ServiceData data{};
data.uuid = ESPBTUUID::from_uint32(*reinterpret_cast<const uint32_t *>(record));
data.data.assign(record + 4UL, record + record_length);
this->service_datas_.push_back(data);
break;
}
case ESP_BLE_AD_TYPE_128SERVICE_DATA: {
// «Service Data - 128 bit UUID»
// Size: 16 or more octets
// The first 16 octets contain the 128 bit Service UUID followed by additional service data
if (record_length < 16) {
ESP_LOGV(TAG, "Record length too small for ESP_BLE_AD_TYPE_128SERVICE_DATA");
break;
}
ServiceData data{};
data.uuid = ESPBTUUID::from_raw(record);
data.data.assign(record + 16UL, record + record_length);
this->service_datas_.push_back(data);
break;
}
case ESP_BLE_AD_TYPE_INT_RANGE:
// Avoid logging this as it's very verbose
break;
default: {
ESP_LOGV(TAG, "Unhandled type: advType: 0x%02x", record_type);
break;
}
}
}
}
std::string ESPBTDevice::address_str() const {
char mac[24];
snprintf(mac, sizeof(mac), "%02X:%02X:%02X:%02X:%02X:%02X", this->address_[0], this->address_[1], this->address_[2],
this->address_[3], this->address_[4], this->address_[5]);
return mac;
}
uint64_t ESPBTDevice::address_uint64() const { return ble_addr_to_uint64(this->address_); }
void ESP32BLETracker::dump_config() {
const char *io_capability_s;
switch (global_io_cap) {
case ESP_IO_CAP_OUT:
io_capability_s = "display_only";
break;
case ESP_IO_CAP_IO:
io_capability_s = "display_yes_no";
break;
case ESP_IO_CAP_IN:
io_capability_s = "keyboard_only";
break;
case ESP_IO_CAP_NONE:
io_capability_s = "none";
break;
case ESP_IO_CAP_KBDISP:
io_capability_s = "keyboard_display";
break;
default:
io_capability_s = "invalid";
break;
}
ESP_LOGCONFIG(TAG, "BLE Tracker:");
ESP_LOGCONFIG(TAG, " Scan Duration: %u s", this->scan_duration_);
ESP_LOGCONFIG(TAG, " Scan Interval: %.1f ms", this->scan_interval_ * 0.625f);
ESP_LOGCONFIG(TAG, " Scan Window: %.1f ms", this->scan_window_ * 0.625f);
ESP_LOGCONFIG(TAG, " Scan Type: %s", this->scan_active_ ? "ACTIVE" : "PASSIVE");
ESP_LOGCONFIG(TAG, " Continuous Scanning: %s", this->scan_continuous_ ? "True" : "False");
ESP_LOGCONFIG(TAG, " IO Capability: %s", io_capability_s);
}
void ESP32BLETracker::print_bt_device_info(const ESPBTDevice &device) {
const uint64_t address = device.address_uint64();
for (auto &disc : this->already_discovered_) {
if (disc == address)
return;
}
this->already_discovered_.push_back(address);
ESP_LOGD(TAG, "Found device %s RSSI=%d", device.address_str().c_str(), device.get_rssi());
const char *address_type_s;
switch (device.get_address_type()) {
case BLE_ADDR_TYPE_PUBLIC:
address_type_s = "PUBLIC";
break;
case BLE_ADDR_TYPE_RANDOM:
address_type_s = "RANDOM";
break;
case BLE_ADDR_TYPE_RPA_PUBLIC:
address_type_s = "RPA_PUBLIC";
break;
case BLE_ADDR_TYPE_RPA_RANDOM:
address_type_s = "RPA_RANDOM";
break;
default:
address_type_s = "UNKNOWN";
break;
}
ESP_LOGD(TAG, " Address Type: %s", address_type_s);
if (!device.get_name().empty()) {
ESP_LOGD(TAG, " Name: '%s'", device.get_name().c_str());
}
for (auto &tx_power : device.get_tx_powers()) {
ESP_LOGD(TAG, " TX Power: %d", tx_power);
}
}
} // namespace esp32_ble_tracker
} // namespace esphome
#endif

View File

@@ -1,288 +0,0 @@
#pragma once
#include "esphome/core/component.h"
#include "esphome/core/automation.h"
#include "esphome/core/helpers.h"
#include "queue.h"
#include <array>
#include <string>
#include <vector>
#ifdef USE_ESP32
#include <esp_gap_ble_api.h>
#include <esp_gattc_api.h>
#include <esp_bt_defs.h>
namespace esphome {
namespace esp32_ble_tracker {
// NOLINTNEXTLINE
extern esp_ble_io_cap_t global_io_cap;
enum IoCapability {
IO_CAP_OUT = ESP_IO_CAP_OUT,
IO_CAP_IO = ESP_IO_CAP_IO,
IO_CAP_IN = ESP_IO_CAP_IN,
IO_CAP_NONE = ESP_IO_CAP_NONE,
IO_CAP_KBDISP = ESP_IO_CAP_KBDISP,
};
class ESPBTUUID {
public:
ESPBTUUID();
static ESPBTUUID from_uint16(uint16_t uuid);
static ESPBTUUID from_uint32(uint32_t uuid);
static ESPBTUUID from_raw(const uint8_t *data);
static ESPBTUUID from_raw(const std::string &data);
static ESPBTUUID from_uuid(esp_bt_uuid_t uuid);
ESPBTUUID as_128bit() const;
bool contains(uint8_t data1, uint8_t data2) const;
bool operator==(const ESPBTUUID &uuid) const;
bool operator!=(const ESPBTUUID &uuid) const { return !(*this == uuid); }
esp_bt_uuid_t get_uuid() const;
std::string to_string() const;
uint64_t get_128bit_high() const;
uint64_t get_128bit_low() const;
protected:
esp_bt_uuid_t uuid_;
};
using adv_data_t = std::vector<uint8_t>;
struct ServiceData {
ESPBTUUID uuid;
adv_data_t data;
};
class ESPBLEiBeacon {
public:
ESPBLEiBeacon() { memset(&this->beacon_data_, 0, sizeof(this->beacon_data_)); }
ESPBLEiBeacon(const uint8_t *data);
static optional<ESPBLEiBeacon> from_manufacturer_data(const ServiceData &data);
uint16_t get_major() { return ((this->beacon_data_.major & 0xFF) << 8) | (this->beacon_data_.major >> 8); }
uint16_t get_minor() { return ((this->beacon_data_.minor & 0xFF) << 8) | (this->beacon_data_.minor >> 8); }
int8_t get_signal_power() { return this->beacon_data_.signal_power; }
ESPBTUUID get_uuid() { return ESPBTUUID::from_raw(this->beacon_data_.proximity_uuid); }
protected:
struct {
uint8_t sub_type;
uint8_t length;
uint8_t proximity_uuid[16];
uint16_t major;
uint16_t minor;
int8_t signal_power;
} PACKED beacon_data_;
};
class ESPBTDevice {
public:
void parse_scan_rst(const esp_ble_gap_cb_param_t::ble_scan_result_evt_param &param);
std::string address_str() const;
uint64_t address_uint64() const;
const uint8_t *address() const { return address_; }
esp_ble_addr_type_t get_address_type() const { return this->address_type_; }
int get_rssi() const { return rssi_; }
const std::string &get_name() const { return this->name_; }
const std::vector<int8_t> &get_tx_powers() const { return tx_powers_; }
const optional<uint16_t> &get_appearance() const { return appearance_; }
const optional<uint8_t> &get_ad_flag() const { return ad_flag_; }
const std::vector<ESPBTUUID> &get_service_uuids() const { return service_uuids_; }
const std::vector<ServiceData> &get_manufacturer_datas() const { return manufacturer_datas_; }
const std::vector<ServiceData> &get_service_datas() const { return service_datas_; }
const esp_ble_gap_cb_param_t::ble_scan_result_evt_param &get_scan_result() const { return scan_result_; }
optional<ESPBLEiBeacon> get_ibeacon() const {
for (auto &it : this->manufacturer_datas_) {
auto res = ESPBLEiBeacon::from_manufacturer_data(it);
if (res.has_value())
return *res;
}
return {};
}
protected:
void parse_adv_(const esp_ble_gap_cb_param_t::ble_scan_result_evt_param &param);
esp_bd_addr_t address_{
0,
};
esp_ble_addr_type_t address_type_{BLE_ADDR_TYPE_PUBLIC};
int rssi_{0};
std::string name_{};
std::vector<int8_t> tx_powers_{};
optional<uint16_t> appearance_{};
optional<uint8_t> ad_flag_{};
std::vector<ESPBTUUID> service_uuids_;
std::vector<ServiceData> manufacturer_datas_{};
std::vector<ServiceData> service_datas_{};
esp_ble_gap_cb_param_t::ble_scan_result_evt_param scan_result_{};
};
class ESP32BLETracker;
class ESPBTDeviceListener {
public:
virtual void on_scan_end() {}
virtual bool parse_device(const ESPBTDevice &device) = 0;
void set_parent(ESP32BLETracker *parent) { parent_ = parent; }
protected:
ESP32BLETracker *parent_{nullptr};
};
enum class ClientState {
// Connection is allocated
INIT,
// Client is disconnecting
DISCONNECTING,
// Connection is idle, no device detected.
IDLE,
// Searching for device.
SEARCHING,
// Device advertisement found.
DISCOVERED,
// Device is discovered and the scanner is stopped
READY_TO_CONNECT,
// Connection in progress.
CONNECTING,
// Initial connection established.
CONNECTED,
// The client and sub-clients have completed setup.
ESTABLISHED,
};
enum class ConnectionType {
// The default connection type, we hold all the services in ram
// for the duration of the connection.
V1,
// The client has a cache of the services and mtu so we should not
// fetch them again
V3_WITH_CACHE,
// The client does not need the services and mtu once we send them
// so we should wipe them from memory as soon as we send them
V3_WITHOUT_CACHE
};
class ESPBTClient : public ESPBTDeviceListener {
public:
virtual bool gattc_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_t gattc_if,
esp_ble_gattc_cb_param_t *param) = 0;
virtual void gap_event_handler(esp_gap_ble_cb_event_t event, esp_ble_gap_cb_param_t *param) = 0;
virtual void connect() = 0;
virtual void set_state(ClientState st) { this->state_ = st; }
ClientState state() const { return state_; }
int app_id;
protected:
ClientState state_;
};
class ESP32BLETracker : public Component {
public:
void set_scan_duration(uint32_t scan_duration) { scan_duration_ = scan_duration; }
void set_scan_interval(uint32_t scan_interval) { scan_interval_ = scan_interval; }
void set_scan_window(uint32_t scan_window) { scan_window_ = scan_window; }
void set_scan_active(bool scan_active) { scan_active_ = scan_active; }
void set_scan_continuous(bool scan_continuous) { scan_continuous_ = scan_continuous; }
void set_io_capability(IoCapability io_capability) { global_io_cap = (esp_ble_io_cap_t) io_capability; }
/// Setup the FreeRTOS task and the Bluetooth stack.
void setup() override;
void dump_config() override;
float get_setup_priority() const override;
void loop() override;
void register_listener(ESPBTDeviceListener *listener) {
listener->set_parent(this);
this->listeners_.push_back(listener);
}
void register_client(ESPBTClient *client);
void print_bt_device_info(const ESPBTDevice &device);
void start_scan();
void stop_scan();
protected:
/// The FreeRTOS task managing the bluetooth interface.
static bool ble_setup();
/// Start a single scan by setting up the parameters and doing some esp-idf calls.
void start_scan_(bool first);
/// Called when a scan ends
void end_of_scan_();
/// Callback that will handle all GAP events and redistribute them to other callbacks.
static void gap_event_handler(esp_gap_ble_cb_event_t event, esp_ble_gap_cb_param_t *param);
void real_gap_event_handler_(esp_gap_ble_cb_event_t event, esp_ble_gap_cb_param_t *param);
/// Called when a `ESP_GAP_BLE_SCAN_RESULT_EVT` event is received.
void gap_scan_result_(const esp_ble_gap_cb_param_t::ble_scan_result_evt_param &param);
/// Called when a `ESP_GAP_BLE_SCAN_PARAM_SET_COMPLETE_EVT` event is received.
void gap_scan_set_param_complete_(const esp_ble_gap_cb_param_t::ble_scan_param_cmpl_evt_param &param);
/// Called when a `ESP_GAP_BLE_SCAN_START_COMPLETE_EVT` event is received.
void gap_scan_start_complete_(const esp_ble_gap_cb_param_t::ble_scan_start_cmpl_evt_param &param);
/// Called when a `ESP_GAP_BLE_SCAN_STOP_COMPLETE_EVT` event is received.
void gap_scan_stop_complete_(const esp_ble_gap_cb_param_t::ble_scan_stop_cmpl_evt_param &param);
int app_id_;
/// Callback that will handle all GATTC events and redistribute them to other callbacks.
static void gattc_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_t gattc_if, esp_ble_gattc_cb_param_t *param);
void real_gattc_event_handler_(esp_gattc_cb_event_t event, esp_gatt_if_t gattc_if, esp_ble_gattc_cb_param_t *param);
/// Vector of addresses that have already been printed in print_bt_device_info
std::vector<uint64_t> already_discovered_;
std::vector<ESPBTDeviceListener *> listeners_;
/// Client parameters.
std::vector<ESPBTClient *> clients_;
/// A structure holding the ESP BLE scan parameters.
esp_ble_scan_params_t scan_params_;
/// The interval in seconds to perform scans.
uint32_t scan_duration_;
uint32_t scan_interval_;
uint32_t scan_window_;
uint8_t scan_start_fail_count_;
bool scan_continuous_;
bool scan_active_;
bool scanner_idle_;
SemaphoreHandle_t scan_result_lock_;
SemaphoreHandle_t scan_end_lock_;
size_t scan_result_index_{0};
esp_ble_gap_cb_param_t::ble_scan_result_evt_param scan_result_buffer_[16];
esp_bt_status_t scan_start_failed_{ESP_BT_STATUS_SUCCESS};
esp_bt_status_t scan_set_param_failed_{ESP_BT_STATUS_SUCCESS};
Queue<BLEEvent> ble_events_;
};
// NOLINTNEXTLINE
extern ESP32BLETracker *global_esp32_ble_tracker;
} // namespace esp32_ble_tracker
} // namespace esphome
#endif

View File

@@ -1,109 +0,0 @@
#pragma once
#ifdef USE_ESP32
#include "esphome/core/component.h"
#include "esphome/core/helpers.h"
#include <cstring>
#include <mutex>
#include <queue>
#include <vector>
#include <esp_gap_ble_api.h>
#include <esp_gattc_api.h>
#include <freertos/FreeRTOS.h>
#include <freertos/semphr.h>
/*
* BLE events come in from a separate Task (thread) in the ESP32 stack. Rather
* than trying to deal with various locking strategies, all incoming GAP and GATT
* events will simply be placed on a semaphore guarded queue. The next time the
* component runs loop(), these events are popped off the queue and handed at
* this safer time.
*/
namespace esphome {
namespace esp32_ble_tracker {
template<class T> class Queue {
public:
Queue() { m_ = xSemaphoreCreateMutex(); }
void push(T *element) {
if (element == nullptr)
return;
if (xSemaphoreTake(m_, 5L / portTICK_PERIOD_MS)) {
q_.push(element);
xSemaphoreGive(m_);
}
}
T *pop() {
T *element = nullptr;
if (xSemaphoreTake(m_, 5L / portTICK_PERIOD_MS)) {
if (!q_.empty()) {
element = q_.front();
q_.pop();
}
xSemaphoreGive(m_);
}
return element;
}
protected:
std::queue<T *> q_;
SemaphoreHandle_t m_;
};
// Received GAP and GATTC events are only queued, and get processed in the main loop().
// This class stores each event in a single type.
class BLEEvent {
public:
BLEEvent(esp_gap_ble_cb_event_t e, esp_ble_gap_cb_param_t *p) {
this->event_.gap.gap_event = e;
memcpy(&this->event_.gap.gap_param, p, sizeof(esp_ble_gap_cb_param_t));
this->type_ = 0;
};
BLEEvent(esp_gattc_cb_event_t e, esp_gatt_if_t i, esp_ble_gattc_cb_param_t *p) {
this->event_.gattc.gattc_event = e;
this->event_.gattc.gattc_if = i;
memcpy(&this->event_.gattc.gattc_param, p, sizeof(esp_ble_gattc_cb_param_t));
// Need to also make a copy of relevant event data.
switch (e) {
case ESP_GATTC_NOTIFY_EVT:
this->data.assign(p->notify.value, p->notify.value + p->notify.value_len);
this->event_.gattc.gattc_param.notify.value = this->data.data();
break;
case ESP_GATTC_READ_CHAR_EVT:
case ESP_GATTC_READ_DESCR_EVT:
this->data.assign(p->read.value, p->read.value + p->read.value_len);
this->event_.gattc.gattc_param.read.value = this->data.data();
break;
default:
break;
}
this->type_ = 1;
};
union {
struct gap_event { // NOLINT(readability-identifier-naming)
esp_gap_ble_cb_event_t gap_event;
esp_ble_gap_cb_param_t gap_param;
} gap;
struct gattc_event { // NOLINT(readability-identifier-naming)
esp_gattc_cb_event_t gattc_event;
esp_gatt_if_t gattc_if;
esp_ble_gattc_cb_param_t gattc_param;
} gattc;
} event_;
std::vector<uint8_t> data{};
uint8_t type_; // 0=gap 1=gattc
};
} // namespace esp32_ble_tracker
} // namespace esphome
#endif

View File

@@ -0,0 +1,47 @@
import esphome.codegen as cg
from esphome.components import uart
import esphome.config_validation as cv
from esphome.const import CONF_ID, CONF_THROTTLE
CODEOWNERS = ["@syssi"]
DEPENDENCIES = ["uart"]
AUTO_LOAD = ["binary_sensor", "sensor", "text_sensor"]
MULTI_CONF = True
CONF_VOTRONIC_ID = "votronic_id"
CONF_RX_TIMEOUT = "rx_timeout"
votronic_ns = cg.esphome_ns.namespace("votronic")
Votronic = votronic_ns.class_("Votronic", cg.PollingComponent, uart.UARTDevice)
VOTRONIC_COMPONENT_SCHEMA = cv.Schema(
{
cv.GenerateID(CONF_VOTRONIC_ID): cv.use_id(Votronic),
}
)
CONFIG_SCHEMA = (
cv.Schema(
{
cv.GenerateID(): cv.declare_id(Votronic),
cv.Optional(
CONF_THROTTLE, default="2s"
): cv.positive_time_period_milliseconds,
cv.Optional(
CONF_RX_TIMEOUT, default="150ms"
): cv.positive_time_period_milliseconds,
}
)
.extend(cv.polling_component_schema("never"))
.extend(uart.UART_DEVICE_SCHEMA)
)
async def to_code(config):
var = cg.new_Pvariable(config[CONF_ID])
await cg.register_component(var, config)
await uart.register_uart_device(var, config)
cg.add(var.set_throttle(config[CONF_THROTTLE]))
cg.add(var.set_rx_timeout(config[CONF_RX_TIMEOUT]))

View File

@@ -0,0 +1,117 @@
import esphome.codegen as cg
from esphome.components import binary_sensor
import esphome.config_validation as cv
from esphome.const import CONF_ID
from . import CONF_VOTRONIC_ID, VOTRONIC_COMPONENT_SCHEMA
DEPENDENCIES = ["votronic"]
CODEOWNERS = ["@syssi"]
CONF_CHARGING = "charging"
CONF_DISCHARGING = "discharging"
CONF_CHARGER_CHARGING = "charger_charging"
CONF_CHARGER_DISCHARGING = "charger_discharging"
CONF_CHARGER_CONTROLLER_ACTIVE = "charger_controller_active"
CONF_CHARGER_CURRENT_REDUCTION = "charger_current_reduction"
CONF_CHARGER_AES_ACTIVE = "charger_aes_active"
CONF_CHARGING_CONVERTER_CHARGING = "charging_converter_charging"
CONF_CHARGING_CONVERTER_DISCHARGING = "charging_converter_discharging"
CONF_CHARGING_CONVERTER_CONTROLLER_ACTIVE = "charging_converter_controller_active"
CONF_CHARGING_CONVERTER_CURRENT_REDUCTION = "charging_converter_current_reduction"
CONF_CHARGING_CONVERTER_AES_ACTIVE = "charging_converter_aes_active"
CONF_PV_CONTROLLER_ACTIVE = "pv_controller_active"
CONF_PV_CURRENT_REDUCTION = "pv_current_reduction"
CONF_PV_AES_ACTIVE = "pv_aes_active"
BINARY_SENSORS = [
CONF_CHARGING,
CONF_DISCHARGING,
CONF_CHARGER_CHARGING,
CONF_CHARGER_DISCHARGING,
CONF_CHARGER_CONTROLLER_ACTIVE,
CONF_CHARGER_CURRENT_REDUCTION,
CONF_CHARGER_AES_ACTIVE,
CONF_CHARGING_CONVERTER_CHARGING,
CONF_CHARGING_CONVERTER_DISCHARGING,
CONF_CHARGING_CONVERTER_CONTROLLER_ACTIVE,
CONF_CHARGING_CONVERTER_CURRENT_REDUCTION,
CONF_CHARGING_CONVERTER_AES_ACTIVE,
CONF_PV_CONTROLLER_ACTIVE,
CONF_PV_CURRENT_REDUCTION,
CONF_PV_AES_ACTIVE,
]
CONFIG_SCHEMA = VOTRONIC_COMPONENT_SCHEMA.extend(
{
cv.Optional(CONF_CHARGING): binary_sensor.binary_sensor_schema(
icon="mdi:battery-charging",
),
cv.Optional(CONF_DISCHARGING): binary_sensor.binary_sensor_schema(
icon="mdi:power-plug",
),
cv.Optional(CONF_CHARGER_CHARGING): binary_sensor.binary_sensor_schema(
icon="mdi:battery-charging",
),
cv.Optional(CONF_CHARGER_DISCHARGING): binary_sensor.binary_sensor_schema(
icon="mdi:power-plug",
),
cv.Optional(CONF_CHARGER_CONTROLLER_ACTIVE): binary_sensor.binary_sensor_schema(
icon="mdi:power",
),
cv.Optional(CONF_CHARGER_CURRENT_REDUCTION): binary_sensor.binary_sensor_schema(
icon="mdi:car-speed-limiter",
),
cv.Optional(CONF_CHARGER_AES_ACTIVE): binary_sensor.binary_sensor_schema(
icon="mdi:export",
),
cv.Optional(
CONF_CHARGING_CONVERTER_CHARGING
): binary_sensor.binary_sensor_schema(
icon="mdi:battery-charging",
),
cv.Optional(
CONF_CHARGING_CONVERTER_DISCHARGING
): binary_sensor.binary_sensor_schema(
icon="mdi:power-plug",
),
cv.Optional(
CONF_CHARGING_CONVERTER_CONTROLLER_ACTIVE
): binary_sensor.binary_sensor_schema(
icon="mdi:power",
),
cv.Optional(
CONF_CHARGING_CONVERTER_CURRENT_REDUCTION
): binary_sensor.binary_sensor_schema(
icon="mdi:car-speed-limiter",
),
cv.Optional(
CONF_CHARGING_CONVERTER_AES_ACTIVE
): binary_sensor.binary_sensor_schema(
icon="mdi:export",
),
cv.Optional(CONF_PV_CONTROLLER_ACTIVE): binary_sensor.binary_sensor_schema(
icon="mdi:power",
),
cv.Optional(CONF_PV_CURRENT_REDUCTION): binary_sensor.binary_sensor_schema(
icon="mdi:car-speed-limiter",
),
cv.Optional(CONF_PV_AES_ACTIVE): binary_sensor.binary_sensor_schema(
icon="mdi:export",
),
}
)
async def to_code(config):
hub = await cg.get_variable(config[CONF_VOTRONIC_ID])
for key in BINARY_SENSORS:
if key in config:
conf = config[key]
sens = cg.new_Pvariable(conf[CONF_ID])
await binary_sensor.register_binary_sensor(sens, conf)
cg.add(getattr(hub, f"set_{key}_binary_sensor")(sens))

View File

@@ -0,0 +1,372 @@
import esphome.codegen as cg
from esphome.components import sensor
import esphome.config_validation as cv
from esphome.const import (
CONF_BATTERY_VOLTAGE,
CONF_CURRENT,
CONF_POWER,
DEVICE_CLASS_CURRENT,
DEVICE_CLASS_EMPTY,
DEVICE_CLASS_POWER,
DEVICE_CLASS_TEMPERATURE,
DEVICE_CLASS_VOLTAGE,
ENTITY_CATEGORY_DIAGNOSTIC,
ICON_EMPTY,
STATE_CLASS_MEASUREMENT,
UNIT_AMPERE,
UNIT_CELSIUS,
UNIT_EMPTY,
UNIT_PERCENT,
UNIT_VOLT,
UNIT_WATT,
)
from . import CONF_VOTRONIC_ID, VOTRONIC_COMPONENT_SCHEMA
DEPENDENCIES = ["votronic"]
CODEOWNERS = ["@syssi"]
# CONF_BATTERY_VOLTAGE = "battery_voltage"
CONF_SECONDARY_BATTERY_VOLTAGE = "secondary_battery_voltage"
CONF_BATTERY_CAPACITY_REMAINING = "battery_capacity_remaining"
CONF_STATE_OF_CHARGE = "state_of_charge"
# CONF_CURRENT = "current"
# CONF_POWER = "power"
CONF_BATTERY_NOMINAL_CAPACITY = "battery_nominal_capacity"
CONF_BATTERY_STATUS_BITMASK = "battery_status_bitmask"
CONF_CHARGED_CAPACITY = "charged_capacity"
CONF_CHARGED_ENERGY = "charged_energy"
CONF_PV_VOLTAGE = "pv_voltage"
CONF_PV_CURRENT = "pv_current"
CONF_PV_BATTERY_STATUS_BITMASK = "pv_battery_status_bitmask"
CONF_PV_CONTROLLER_STATUS_BITMASK = "pv_controller_status_bitmask"
CONF_PV_POWER = "pv_power"
CONF_PV_MODE_SETTING_ID = "pv_mode_setting_id"
CONF_PV_CONTROLLER_TEMPERATURE = "pv_controller_temperature"
CONF_CHARGER_CURRENT = "charger_current"
CONF_CHARGER_POWER = "charger_power"
CONF_CHARGER_LOAD = "charger_load"
CONF_CHARGER_BATTERY_STATUS_BITMASK = "charger_battery_status_bitmask"
CONF_CHARGER_CONTROLLER_STATUS_BITMASK = "charger_controller_status_bitmask"
CONF_CHARGER_MODE_SETTING_ID = "charger_mode_setting_id"
CONF_CHARGER_CONTROLLER_TEMPERATURE = "charger_controller_temperature"
CONF_CHARGING_CONVERTER_BATTERY_VOLTAGE = "charging_converter_battery_voltage"
CONF_CHARGING_CONVERTER_SECONDARY_BATTERY_VOLTAGE = (
"charging_converter_secondary_battery_voltage"
)
CONF_CHARGING_CONVERTER_CURRENT = "charging_converter_current"
CONF_CHARGING_CONVERTER_POWER = "charging_converter_power"
CONF_CHARGING_CONVERTER_LOAD = "charging_converter_load"
CONF_CHARGING_CONVERTER_CONTROLLER_TEMPERATURE = (
"charging_converter_controller_temperature"
)
CONF_CHARGING_CONVERTER_MODE_SETTING_ID = "charging_converter_mode_setting_id"
CONF_CHARGING_CONVERTER_BATTERY_STATUS_BITMASK = (
"charging_converter_battery_status_bitmask"
)
CONF_CHARGING_CONVERTER_CONTROLLER_STATUS_BITMASK = (
"charging_converter_controller_status_bitmask"
)
ICON_BATTERY_CAPACITY_REMAINING = "mdi:battery-50"
ICON_STATE_OF_CHARGE = "mdi:battery-50"
ICON_CURRENT_DC = "mdi:current-dc"
ICON_BATTERY_NOMINAL_CAPACITY = "mdi:battery"
ICON_BATTERY_STATUS_BITMASK = "mdi:alert-circle-outline"
ICON_PV_BATTERY_STATUS_BITMASK = "mdi:alert-circle-outline"
ICON_CHARGING_CONTROLLER_STATUS_BITMASK = "mdi:alert-circle-outline"
ICON_PV_CONTROLLER_STATUS_BITMASK = "mdi:alert-circle-outline"
ICON_MODE_SETTING_ID = "mdi:car-battery"
UNIT_AMPERE_HOURS = "Ah"
SENSORS = [
CONF_BATTERY_VOLTAGE,
CONF_SECONDARY_BATTERY_VOLTAGE,
CONF_BATTERY_CAPACITY_REMAINING,
CONF_STATE_OF_CHARGE,
CONF_CURRENT,
CONF_POWER,
CONF_BATTERY_NOMINAL_CAPACITY,
CONF_BATTERY_STATUS_BITMASK,
CONF_CHARGER_LOAD,
CONF_CHARGER_BATTERY_STATUS_BITMASK,
CONF_CHARGER_CONTROLLER_STATUS_BITMASK,
CONF_CHARGER_MODE_SETTING_ID,
CONF_CHARGER_CURRENT,
CONF_CHARGER_POWER,
CONF_CHARGER_CONTROLLER_TEMPERATURE,
CONF_CHARGING_CONVERTER_BATTERY_VOLTAGE,
CONF_CHARGING_CONVERTER_SECONDARY_BATTERY_VOLTAGE,
CONF_CHARGING_CONVERTER_CURRENT,
CONF_CHARGING_CONVERTER_POWER,
CONF_CHARGING_CONVERTER_LOAD,
CONF_CHARGING_CONVERTER_CONTROLLER_TEMPERATURE,
CONF_CHARGING_CONVERTER_MODE_SETTING_ID,
CONF_CHARGING_CONVERTER_BATTERY_STATUS_BITMASK,
CONF_CHARGING_CONVERTER_CONTROLLER_STATUS_BITMASK,
CONF_PV_VOLTAGE,
CONF_PV_CURRENT,
CONF_PV_POWER,
CONF_PV_MODE_SETTING_ID,
CONF_PV_BATTERY_STATUS_BITMASK,
CONF_PV_CONTROLLER_STATUS_BITMASK,
CONF_PV_CONTROLLER_TEMPERATURE,
]
CONFIG_SCHEMA = VOTRONIC_COMPONENT_SCHEMA.extend(
{
cv.Optional(CONF_BATTERY_VOLTAGE): sensor.sensor_schema(
unit_of_measurement=UNIT_VOLT,
icon=ICON_EMPTY,
accuracy_decimals=2,
device_class=DEVICE_CLASS_VOLTAGE,
state_class=STATE_CLASS_MEASUREMENT,
),
cv.Optional(CONF_SECONDARY_BATTERY_VOLTAGE): sensor.sensor_schema(
unit_of_measurement=UNIT_VOLT,
icon=ICON_EMPTY,
accuracy_decimals=2,
device_class=DEVICE_CLASS_VOLTAGE,
state_class=STATE_CLASS_MEASUREMENT,
),
cv.Optional(CONF_BATTERY_CAPACITY_REMAINING): sensor.sensor_schema(
unit_of_measurement=UNIT_AMPERE_HOURS,
icon=ICON_BATTERY_CAPACITY_REMAINING,
accuracy_decimals=0,
device_class=DEVICE_CLASS_EMPTY,
state_class=STATE_CLASS_MEASUREMENT,
),
cv.Optional(CONF_STATE_OF_CHARGE): sensor.sensor_schema(
unit_of_measurement=UNIT_PERCENT,
icon=ICON_STATE_OF_CHARGE,
accuracy_decimals=0,
device_class=DEVICE_CLASS_EMPTY,
state_class=STATE_CLASS_MEASUREMENT,
),
cv.Optional(CONF_CURRENT): sensor.sensor_schema(
unit_of_measurement=UNIT_AMPERE,
icon=ICON_CURRENT_DC,
accuracy_decimals=3,
device_class=DEVICE_CLASS_CURRENT,
state_class=STATE_CLASS_MEASUREMENT,
),
cv.Optional(CONF_POWER): sensor.sensor_schema(
unit_of_measurement=UNIT_WATT,
icon=ICON_EMPTY,
accuracy_decimals=2,
device_class=DEVICE_CLASS_POWER,
state_class=STATE_CLASS_MEASUREMENT,
),
cv.Optional(CONF_BATTERY_NOMINAL_CAPACITY): sensor.sensor_schema(
unit_of_measurement=UNIT_AMPERE_HOURS,
icon=ICON_BATTERY_NOMINAL_CAPACITY,
accuracy_decimals=1,
device_class=DEVICE_CLASS_EMPTY,
state_class=STATE_CLASS_MEASUREMENT,
),
cv.Optional(CONF_BATTERY_STATUS_BITMASK): sensor.sensor_schema(
unit_of_measurement=UNIT_EMPTY,
icon=ICON_BATTERY_STATUS_BITMASK,
accuracy_decimals=0,
device_class=DEVICE_CLASS_EMPTY,
state_class=STATE_CLASS_MEASUREMENT,
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
),
cv.Optional(CONF_CHARGER_CURRENT): sensor.sensor_schema(
unit_of_measurement=UNIT_AMPERE,
icon=ICON_CURRENT_DC,
accuracy_decimals=3,
device_class=DEVICE_CLASS_CURRENT,
state_class=STATE_CLASS_MEASUREMENT,
),
cv.Optional(CONF_CHARGER_POWER): sensor.sensor_schema(
unit_of_measurement=UNIT_WATT,
icon=ICON_EMPTY,
accuracy_decimals=2,
device_class=DEVICE_CLASS_POWER,
state_class=STATE_CLASS_MEASUREMENT,
),
cv.Optional(CONF_CHARGER_LOAD): sensor.sensor_schema(
unit_of_measurement=UNIT_PERCENT,
icon=ICON_STATE_OF_CHARGE,
accuracy_decimals=0,
device_class=DEVICE_CLASS_EMPTY,
state_class=STATE_CLASS_MEASUREMENT,
),
cv.Optional(CONF_CHARGER_BATTERY_STATUS_BITMASK): sensor.sensor_schema(
unit_of_measurement=UNIT_EMPTY,
icon=ICON_BATTERY_STATUS_BITMASK,
accuracy_decimals=0,
device_class=DEVICE_CLASS_EMPTY,
state_class=STATE_CLASS_MEASUREMENT,
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
),
cv.Optional(CONF_CHARGER_CONTROLLER_STATUS_BITMASK): sensor.sensor_schema(
unit_of_measurement=UNIT_EMPTY,
icon=ICON_CHARGING_CONTROLLER_STATUS_BITMASK,
accuracy_decimals=0,
device_class=DEVICE_CLASS_EMPTY,
state_class=STATE_CLASS_MEASUREMENT,
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
),
cv.Optional(CONF_CHARGER_MODE_SETTING_ID): sensor.sensor_schema(
unit_of_measurement=UNIT_EMPTY,
icon=ICON_MODE_SETTING_ID,
accuracy_decimals=0,
device_class=DEVICE_CLASS_EMPTY,
state_class=STATE_CLASS_MEASUREMENT,
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
),
cv.Optional(CONF_PV_CONTROLLER_STATUS_BITMASK): sensor.sensor_schema(
unit_of_measurement=UNIT_EMPTY,
icon=ICON_PV_CONTROLLER_STATUS_BITMASK,
accuracy_decimals=0,
device_class=DEVICE_CLASS_EMPTY,
state_class=STATE_CLASS_MEASUREMENT,
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
),
cv.Optional(CONF_CHARGER_CONTROLLER_TEMPERATURE): sensor.sensor_schema(
unit_of_measurement=UNIT_CELSIUS,
icon=ICON_EMPTY,
accuracy_decimals=0,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
),
cv.Optional(CONF_CHARGING_CONVERTER_BATTERY_VOLTAGE): sensor.sensor_schema(
unit_of_measurement=UNIT_VOLT,
icon=ICON_EMPTY,
accuracy_decimals=2,
device_class=DEVICE_CLASS_VOLTAGE,
state_class=STATE_CLASS_MEASUREMENT,
),
cv.Optional(
CONF_CHARGING_CONVERTER_SECONDARY_BATTERY_VOLTAGE
): sensor.sensor_schema(
unit_of_measurement=UNIT_VOLT,
icon=ICON_EMPTY,
accuracy_decimals=2,
device_class=DEVICE_CLASS_VOLTAGE,
state_class=STATE_CLASS_MEASUREMENT,
),
cv.Optional(CONF_CHARGING_CONVERTER_LOAD): sensor.sensor_schema(
unit_of_measurement=UNIT_PERCENT,
icon=ICON_STATE_OF_CHARGE,
accuracy_decimals=0,
device_class=DEVICE_CLASS_EMPTY,
state_class=STATE_CLASS_MEASUREMENT,
),
cv.Optional(CONF_CHARGING_CONVERTER_CURRENT): sensor.sensor_schema(
unit_of_measurement=UNIT_AMPERE,
icon=ICON_CURRENT_DC,
accuracy_decimals=3,
device_class=DEVICE_CLASS_CURRENT,
state_class=STATE_CLASS_MEASUREMENT,
),
cv.Optional(CONF_CHARGING_CONVERTER_POWER): sensor.sensor_schema(
unit_of_measurement=UNIT_WATT,
icon=ICON_EMPTY,
accuracy_decimals=2,
device_class=DEVICE_CLASS_POWER,
state_class=STATE_CLASS_MEASUREMENT,
),
cv.Optional(
CONF_CHARGING_CONVERTER_BATTERY_STATUS_BITMASK
): sensor.sensor_schema(
unit_of_measurement=UNIT_EMPTY,
icon=ICON_BATTERY_STATUS_BITMASK,
accuracy_decimals=0,
device_class=DEVICE_CLASS_EMPTY,
state_class=STATE_CLASS_MEASUREMENT,
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
),
cv.Optional(
CONF_CHARGING_CONVERTER_CONTROLLER_STATUS_BITMASK
): sensor.sensor_schema(
unit_of_measurement=UNIT_EMPTY,
icon=ICON_CHARGING_CONTROLLER_STATUS_BITMASK,
accuracy_decimals=0,
device_class=DEVICE_CLASS_EMPTY,
state_class=STATE_CLASS_MEASUREMENT,
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
),
cv.Optional(CONF_CHARGING_CONVERTER_MODE_SETTING_ID): sensor.sensor_schema(
unit_of_measurement=UNIT_EMPTY,
icon=ICON_MODE_SETTING_ID,
accuracy_decimals=0,
device_class=DEVICE_CLASS_EMPTY,
state_class=STATE_CLASS_MEASUREMENT,
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
),
cv.Optional(
CONF_CHARGING_CONVERTER_CONTROLLER_TEMPERATURE
): sensor.sensor_schema(
unit_of_measurement=UNIT_CELSIUS,
icon=ICON_EMPTY,
accuracy_decimals=0,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
),
cv.Optional(CONF_PV_VOLTAGE): sensor.sensor_schema(
unit_of_measurement=UNIT_VOLT,
icon=ICON_EMPTY,
accuracy_decimals=2,
device_class=DEVICE_CLASS_VOLTAGE,
state_class=STATE_CLASS_MEASUREMENT,
),
cv.Optional(CONF_PV_CURRENT): sensor.sensor_schema(
unit_of_measurement=UNIT_AMPERE,
icon=ICON_CURRENT_DC,
accuracy_decimals=1,
device_class=DEVICE_CLASS_CURRENT,
state_class=STATE_CLASS_MEASUREMENT,
),
cv.Optional(CONF_PV_POWER): sensor.sensor_schema(
unit_of_measurement=UNIT_WATT,
icon=ICON_EMPTY,
accuracy_decimals=1,
device_class=DEVICE_CLASS_POWER,
state_class=STATE_CLASS_MEASUREMENT,
),
cv.Optional(CONF_PV_BATTERY_STATUS_BITMASK): sensor.sensor_schema(
unit_of_measurement=UNIT_EMPTY,
icon=ICON_PV_BATTERY_STATUS_BITMASK,
accuracy_decimals=0,
device_class=DEVICE_CLASS_EMPTY,
state_class=STATE_CLASS_MEASUREMENT,
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
),
cv.Optional(CONF_PV_MODE_SETTING_ID): sensor.sensor_schema(
unit_of_measurement=UNIT_EMPTY,
icon=ICON_MODE_SETTING_ID,
accuracy_decimals=0,
device_class=DEVICE_CLASS_EMPTY,
state_class=STATE_CLASS_MEASUREMENT,
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
),
cv.Optional(CONF_PV_CONTROLLER_TEMPERATURE): sensor.sensor_schema(
unit_of_measurement=UNIT_CELSIUS,
icon=ICON_EMPTY,
accuracy_decimals=0,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
),
}
)
async def to_code(config):
hub = await cg.get_variable(config[CONF_VOTRONIC_ID])
for key in SENSORS:
if key in config:
conf = config[key]
sens = await sensor.new_sensor(conf)
cg.add(getattr(hub, f"set_{key}_sensor")(sens))

View File

@@ -0,0 +1,88 @@
import esphome.codegen as cg
from esphome.components import text_sensor
import esphome.config_validation as cv
from esphome.const import CONF_ID
from . import CONF_VOTRONIC_ID, VOTRONIC_COMPONENT_SCHEMA
DEPENDENCIES = ["votronic"]
CODEOWNERS = ["@syssi"]
CONF_BATTERY_STATUS = "battery_status"
CONF_CHARGER_MODE_SETTING = "charger_mode_setting"
CONF_CHARGER_CONTROLLER_STATUS = "charger_controller_status"
CONF_CHARGER_BATTERY_STATUS = "charger_battery_status"
CONF_CHARGING_CONVERTER_MODE_SETTING = "charging_converter_mode_setting"
CONF_CHARGING_CONVERTER_BATTERY_STATUS = "charging_converter_battery_status"
CONF_CHARGING_CONVERTER_CONTROLLER_STATUS = "charging_converter_controller_status"
CONF_PV_MODE_SETTING = "pv_mode_setting"
CONF_PV_BATTERY_STATUS = "pv_battery_status"
CONF_PV_CONTROLLER_STATUS = "pv_controller_status"
TEXT_SENSORS = [
CONF_BATTERY_STATUS,
CONF_CHARGER_MODE_SETTING,
CONF_CHARGER_CONTROLLER_STATUS,
CONF_CHARGER_BATTERY_STATUS,
CONF_CHARGING_CONVERTER_MODE_SETTING,
CONF_CHARGING_CONVERTER_BATTERY_STATUS,
CONF_CHARGING_CONVERTER_CONTROLLER_STATUS,
CONF_PV_MODE_SETTING,
CONF_PV_BATTERY_STATUS,
CONF_PV_CONTROLLER_STATUS,
]
CONFIG_SCHEMA = VOTRONIC_COMPONENT_SCHEMA.extend(
{
cv.Optional(CONF_BATTERY_STATUS): text_sensor.text_sensor_schema(
text_sensor.TextSensor, icon="mdi:alert-circle-outline"
),
cv.Optional(CONF_CHARGER_MODE_SETTING): text_sensor.text_sensor_schema(
text_sensor.TextSensor, icon="mdi:car-battery"
),
cv.Optional(CONF_CHARGER_CONTROLLER_STATUS): text_sensor.text_sensor_schema(
text_sensor.TextSensor, icon="mdi:heart-pulse"
),
cv.Optional(CONF_CHARGER_BATTERY_STATUS): text_sensor.text_sensor_schema(
text_sensor.TextSensor, icon="mdi:alert-circle-outline"
),
cv.Optional(
CONF_CHARGING_CONVERTER_BATTERY_STATUS
): text_sensor.text_sensor_schema(
text_sensor.TextSensor, icon="mdi:car-battery"
),
cv.Optional(
CONF_CHARGING_CONVERTER_CONTROLLER_STATUS
): text_sensor.text_sensor_schema(
text_sensor.TextSensor, icon="mdi:heart-pulse"
),
cv.Optional(
CONF_CHARGING_CONVERTER_MODE_SETTING
): text_sensor.text_sensor_schema(
text_sensor.TextSensor, icon="mdi:car-battery"
),
cv.Optional(CONF_PV_MODE_SETTING): text_sensor.text_sensor_schema(
text_sensor.TextSensor, icon="mdi:car-battery"
),
cv.Optional(CONF_PV_BATTERY_STATUS): text_sensor.text_sensor_schema(
text_sensor.TextSensor, icon="mdi:alert-circle-outline"
),
cv.Optional(CONF_PV_CONTROLLER_STATUS): text_sensor.text_sensor_schema(
text_sensor.TextSensor, icon="mdi:heart-pulse"
),
}
)
async def to_code(config):
hub = await cg.get_variable(config[CONF_VOTRONIC_ID])
for key in TEXT_SENSORS:
if key in config:
conf = config[key]
sens = cg.new_Pvariable(conf[CONF_ID])
await text_sensor.register_text_sensor(sens, conf)
cg.add(getattr(hub, f"set_{key}_text_sensor")(sens))

View File

@@ -0,0 +1,663 @@
#include "votronic.h"
#include "esphome/core/log.h"
#include "esphome/core/helpers.h"
namespace esphome {
namespace votronic {
static const char *const TAG = "votronic";
static const char *const TAG_INFO1 = "votronic.i1";
static const char *const TAG_INFO2 = "votronic.i2";
static const char *const TAG_INFO3 = "votronic.i3";
static const uint8_t VOTRONIC_FRAME_START = 0xAA;
static const uint8_t VOTRONIC_FRAME_LENGTH = 16;
static const uint8_t VOTRONIC_FRAME_TYPE_SOLAR_CHARGER = 0x1A;
static const uint8_t VOTRONIC_FRAME_TYPE_CHARGER = 0x3A;
static const uint8_t VOTRONIC_FRAME_TYPE_CHARGING_CONVERTER = 0x7A;
static const uint8_t VOTRONIC_FRAME_TYPE_BATTERY_COMPUTER_INFO1 = 0xCA;
static const uint8_t VOTRONIC_FRAME_TYPE_BATTERY_COMPUTER_INFO2 = 0xDA;
static const uint8_t VOTRONIC_FRAME_TYPE_BATTERY_COMPUTER_INFO3 = 0xFA;
static const uint8_t VOTRONIC_FRAME_TYPE_CONTROL_CHARGER = 0x7A; // Incorrect protocol description?
static const uint8_t VOTRONIC_FRAME_TYPE_CONTROL_CHARGING_CONVERTER = 0x3A; // Incorrect protocol description?
static const uint8_t VOTRONIC_FRAME_TYPE_CONTROL_CHARGING_CONVERTER2 = 0x4A;
static const uint8_t VOTRONIC_FRAME_TYPE_CONTROL_BATTERY_COMPUTER = 0xEA;
static const uint8_t BATTERY_STATUS_SIZE = 8;
static const char *const BATTERY_STATUS[BATTERY_STATUS_SIZE] = {
"I phase", // 0000 0001
"U1 phase", // 0000 0010
"U2 phase", // 0000 0100
"U3 phase", // 0000 1000
"Unused (Bit 4)", // 0001 0000
"Unused (Bit 5)", // 0010 0000
"Unused (Bit 6)", // 0100 0000
"Unused (Bit 7)", // 1000 0000
};
static const uint8_t SOLAR_CHARGER_STATUS_SIZE = 8;
static const char *const SOLAR_CHARGER_STATUS[SOLAR_CHARGER_STATUS_SIZE] = {
"Unused (Bit 0)", // 0000 0001
"Unused (Bit 1)", // 0000 0010
"Unused (Bit 2)", // 0000 0100
"Active", // 0000 1000
"Reduced", // 0001 0000
"AES active", // 0010 0000
"Unused (Bit 6)", // 0100 0000
"Unused (Bit 7)", // 1000 0000
};
static const uint8_t CHARGER_STATUS_SIZE = 8;
static const char *const CHARGER_STATUS[CHARGER_STATUS_SIZE] = {
"Unused (Bit 0)", // 0000 0001
"Unused (Bit 1)", // 0000 0010
"Charging Battery 1", // 0000 0100
"Charging Battery 2 / Reverse Charging", // 0000 1000
"Reduced", // 0001 0000
"AC Power Limit", // 0010 0000
"Unused (Bit 6)", // 0100 0000
"Unused (Bit 7)", // 1000 0000
};
void Votronic::loop() {
const uint32_t now = millis();
if (now - this->last_byte_ > this->rx_timeout_) {
ESP_LOGVV(TAG, "Buffer cleared due to timeout: %s",
format_hex_pretty(&this->rx_buffer_.front(), this->rx_buffer_.size()).c_str());
this->rx_buffer_.clear();
this->last_byte_ = now;
}
while (this->available()) {
uint8_t byte;
this->read_byte(&byte);
if (this->parse_votronic_byte_(byte)) {
this->last_byte_ = now;
} else {
ESP_LOGVV(TAG, "Buffer cleared due to reset: %s",
format_hex_pretty(&this->rx_buffer_.front(), this->rx_buffer_.size()).c_str());
this->rx_buffer_.clear();
}
}
}
void Votronic::update() {}
bool Votronic::parse_votronic_byte_(uint8_t byte) {
size_t at = this->rx_buffer_.size();
this->rx_buffer_.push_back(byte);
const uint8_t *raw = &this->rx_buffer_[0];
const uint8_t frame_len = VOTRONIC_FRAME_LENGTH;
if (at == 0 && raw[0] != VOTRONIC_FRAME_START) {
ESP_LOGW(TAG, "Invalid header (0x%02X)", raw[0]);
// return false to reset buffer
return false;
}
if (at < frame_len - 1)
return true;
uint8_t computed_crc = chksum_(raw + 1, frame_len - 2);
uint8_t remote_crc = raw[frame_len - 1];
if (computed_crc != remote_crc) {
ESP_LOGW(TAG, "CRC check failed! 0x%02X != 0x%02X", computed_crc, remote_crc);
return false;
}
ESP_LOGVV(TAG, "RX <- %s", format_hex_pretty(raw, at + 1).c_str());
std::vector<uint8_t> data(this->rx_buffer_.begin(), this->rx_buffer_.begin() + frame_len);
this->on_votronic_data(data);
// return false to reset buffer
return false;
}
void Votronic::on_votronic_data(const std::vector<uint8_t> &data) {
uint8_t data_len = data.size();
if (data_len != VOTRONIC_FRAME_LENGTH) {
ESP_LOGW(TAG, "Skipping frame because of invalid length: %d", data_len);
return;
}
const uint8_t frame_type = data[1];
switch (frame_type) {
case VOTRONIC_FRAME_TYPE_SOLAR_CHARGER:
this->decode_solar_charger_data_(data);
break;
case VOTRONIC_FRAME_TYPE_CHARGER:
this->decode_charger_data_(data);
break;
case VOTRONIC_FRAME_TYPE_CHARGING_CONVERTER:
this->decode_charging_converter_data_(data);
break;
case VOTRONIC_FRAME_TYPE_BATTERY_COMPUTER_INFO1:
this->decode_battery_computer_info1_data_(data);
break;
case VOTRONIC_FRAME_TYPE_BATTERY_COMPUTER_INFO2:
this->decode_battery_computer_info2_data_(data);
break;
case VOTRONIC_FRAME_TYPE_BATTERY_COMPUTER_INFO3:
this->decode_battery_computer_info3_data_(data);
break;
case VOTRONIC_FRAME_TYPE_CONTROL_CHARGING_CONVERTER2:
// Skip empty frame silently
// 0xAA 0x4A 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x4A
if (data[VOTRONIC_FRAME_LENGTH - 1] == VOTRONIC_FRAME_TYPE_CONTROL_CHARGING_CONVERTER2) {
break;
}
default:
ESP_LOGW(TAG, "Your device is probably not supported. Please create an issue here: "
"https://github.com/syssi/esphome-votronic/issues");
ESP_LOGW(TAG, "Please provide the following unhandled message data (0x%02X): %s", frame_type,
format_hex_pretty(&data.front(), data.size()).c_str());
}
}
void Votronic::decode_solar_charger_data_(const std::vector<uint8_t> &data) {
const uint32_t now = millis();
if (now - this->last_solar_charger_data_ < this->throttle_) {
return;
}
this->last_solar_charger_data_ = now;
auto votronic_get_16bit = [&](size_t i) -> uint16_t {
return (uint16_t(data[i + 1]) << 8) | (uint16_t(data[i + 0]) << 0);
};
ESP_LOGI(TAG, "Solar charger data received");
ESP_LOGD(TAG, " %s", format_hex_pretty(&data.front(), data.size()).c_str());
// Byte Len Payload Description Unit Precision
// 0 1 0xAA Sync Byte
// 1 1 0x1A Frame Type
// 2 2 0xA0 0x05 Battery Voltage V U16 10mV/Bit
this->publish_state_(this->battery_voltage_sensor_, votronic_get_16bit(2) * 0.01f);
// 4 2 0xA4 0x06 PV Voltage V U16 10mV/Bit Nur bei MPP-Version
float pv_voltage = votronic_get_16bit(4) * 0.01f;
this->publish_state_(this->pv_voltage_sensor_, pv_voltage);
// 6 2 0x78 0x00 PV Current A S16 100mA/Bit
float pv_current = votronic_get_16bit(6) * 0.1f;
this->publish_state_(this->pv_current_sensor_, pv_current);
this->publish_state_(this->pv_power_sensor_, pv_voltage * pv_current);
// 8 1 0x00 Reserved
// 9 1 0x00 Reserved
// 10 1 0xA0 Reserved
// 11 1 0x15 Reserved
this->publish_state_(this->pv_controller_temperature_sensor_, (float) data[11]);
// 12 1 0x03 Charging mode setting (dip switches)
this->publish_state_(this->pv_mode_setting_id_sensor_, data[12]);
this->publish_state_(this->pv_mode_setting_text_sensor_, this->charging_mode_setting_to_string_(data[12]));
// 13 1 0x00 Battery Controller Status Bitmask
ESP_LOGI(TAG, "PV - Battery Controller Status: 0x%02X", data[13]);
this->publish_state_(this->pv_battery_status_bitmask_sensor_, data[13]);
this->publish_state_(this->pv_battery_status_text_sensor_, this->battery_status_bitmask_to_string_(data[13]));
// 14 1 0x00 PV Controller Status Bitmask
ESP_LOGI(TAG, "PV - Controller Status: 0x%02X", data[14]);
this->publish_state_(this->pv_controller_status_bitmask_sensor_, data[14]);
this->publish_state_(this->pv_controller_status_text_sensor_,
this->solar_charger_status_bitmask_to_string_(data[14]));
this->publish_state_(this->pv_controller_active_binary_sensor_, (data[14] & (1 << 3)));
this->publish_state_(this->pv_current_reduction_binary_sensor_, (data[14] & (1 << 4)));
this->publish_state_(this->pv_aes_active_binary_sensor_, (data[14] & (1 << 5)));
}
void Votronic::decode_charger_data_(const std::vector<uint8_t> &data) {
const uint32_t now = millis();
if (now - this->last_charger_data_ < this->throttle_) {
return;
}
this->last_charger_data_ = now;
auto votronic_get_16bit = [&](size_t i) -> uint16_t {
return (uint16_t(data[i + 1]) << 8) | (uint16_t(data[i + 0]) << 0);
};
ESP_LOGI(TAG, "Charger data received");
ESP_LOGD(TAG, " %s", format_hex_pretty(&data.front(), data.size()).c_str());
// Byte Len Payload Description Unit Precision
// 0 1 0xAA Sync Byte
// 1 1 0x3A Frame Type
// 2 2 0xA0 0x05 Battery Voltage V U16 10mV/Bit
float battery_voltage = votronic_get_16bit(2) * 0.01f;
this->publish_state_(this->battery_voltage_sensor_, battery_voltage);
// 4 2 0xA4 0x06 Second Battery Voltage V U16 10mV/Bit
this->publish_state_(this->secondary_battery_voltage_sensor_, votronic_get_16bit(4) * 0.01f);
// 6 2 0x78 0x00 Charging Current A S16 100mA/Bit
float current = (float) ((int16_t) votronic_get_16bit(6)) * 0.1f;
this->publish_state_(this->charger_current_sensor_, current);
this->publish_state_(this->charger_power_sensor_, current * battery_voltage);
this->publish_state_(this->charger_charging_binary_sensor_, (current > 0.0f));
this->publish_state_(this->charger_discharging_binary_sensor_, (current < 0.0f));
// 8 1 0x00 Reserved
// 9 1 0x00 Reserved
// 10 1 0xA0 Charging Power % 0-100% 1%/Bit
this->publish_state_(this->charger_load_sensor_, (float) data[10]);
// 11 1 0x15 Controller temperature
this->publish_state_(this->charger_controller_temperature_sensor_, data[11] * 0.1f);
// 12 1 0x03 Charging mode setting (dip switches)
this->publish_state_(this->charger_mode_setting_id_sensor_, data[12]);
this->publish_state_(this->charger_mode_setting_text_sensor_, this->charging_mode_setting_to_string_(data[12]));
// 13 1 0x00 Battery Controller Status Bitmask
ESP_LOGI(TAG, "Charger - Battery Controller Status: 0x%02X", data[13]);
this->publish_state_(this->charger_battery_status_bitmask_sensor_, data[13]);
this->publish_state_(this->charger_battery_status_text_sensor_, this->battery_status_bitmask_to_string_(data[13]));
// 14 1 0x00 Charging Controller Status Bitmask
ESP_LOGI(TAG, "Charger - Controller Status: 0x%02X", data[14]);
this->publish_state_(this->charger_controller_status_bitmask_sensor_, data[14]);
this->publish_state_(this->charger_controller_status_text_sensor_, this->charger_status_bitmask_to_string_(data[14]));
this->publish_state_(this->charger_controller_active_binary_sensor_, (data[14] & (1 << 3)));
this->publish_state_(this->charger_current_reduction_binary_sensor_, (data[14] & (1 << 4)));
this->publish_state_(this->charger_aes_active_binary_sensor_, (data[14] & (1 << 5)));
}
void Votronic::decode_charging_converter_data_(const std::vector<uint8_t> &data) {
const uint32_t now = millis();
if (now - this->last_charger_data_ < this->throttle_) {
return;
}
this->last_charger_data_ = now;
auto votronic_get_16bit = [&](size_t i) -> uint16_t {
return (uint16_t(data[i + 1]) << 8) | (uint16_t(data[i + 0]) << 0);
};
ESP_LOGI(TAG, "Charging converter data received");
ESP_LOGD(TAG, " %s", format_hex_pretty(&data.front(), data.size()).c_str());
// Byte Len Payload Description Unit Precision
// 0 1 0xAA Sync Byte
// 1 1 0x3A Frame Type
// 2 2 0xA0 0x05 Battery Voltage V U16 10mV/Bit
float battery_voltage = votronic_get_16bit(2) * 0.01f;
this->publish_state_(this->charging_converter_battery_voltage_sensor_, battery_voltage);
// 4 2 0xA4 0x06 Second Battery Voltage V U16 10mV/Bit
this->publish_state_(this->charging_converter_secondary_battery_voltage_sensor_, votronic_get_16bit(4) * 0.01f);
// 6 2 0x78 0x00 Charging Current A S16 100mA/Bit
float current = (float) ((int16_t) votronic_get_16bit(6)) * 0.1f;
this->publish_state_(this->charging_converter_current_sensor_, current);
this->publish_state_(this->charging_converter_power_sensor_, current * battery_voltage);
this->publish_state_(this->charging_converter_charging_binary_sensor_, (current > 0.0f));
this->publish_state_(this->charging_converter_discharging_binary_sensor_, (current < 0.0f));
// 8 1 0x00 Reserved
// 9 1 0x00 Reserved
// 10 1 0xA0 Charging Power % 0-100% 1%/Bit
this->publish_state_(this->charging_converter_load_sensor_, (float) data[10]);
// 11 1 0x15 Controller temperature
this->publish_state_(this->charging_converter_controller_temperature_sensor_, data[11] * 0.1f);
// 12 1 0x03 Charging mode setting (dip switches)
this->publish_state_(this->charging_converter_mode_setting_id_sensor_, data[12]);
this->publish_state_(this->charging_converter_mode_setting_text_sensor_,
this->charging_mode_setting_to_string_(data[12]));
// 13 1 0x00 Battery Controller Status Bitmask
ESP_LOGI(TAG, "Charging Converter - Battery Controller Status: 0x%02X", data[13]);
this->publish_state_(this->charging_converter_battery_status_bitmask_sensor_, data[13]);
this->publish_state_(this->charging_converter_battery_status_text_sensor_,
this->battery_status_bitmask_to_string_(data[13]));
// 14 1 0x00 Charging Controller Status Bitmask
ESP_LOGI(TAG, "Charging Converter - Controller Status: 0x%02X", data[14]);
this->publish_state_(this->charging_converter_controller_status_bitmask_sensor_, data[14]);
this->publish_state_(this->charging_converter_controller_status_text_sensor_,
this->charger_status_bitmask_to_string_(data[14]));
this->publish_state_(this->charging_converter_controller_active_binary_sensor_, (data[14] & (1 << 3)));
this->publish_state_(this->charging_converter_current_reduction_binary_sensor_, (data[14] & (1 << 4)));
this->publish_state_(this->charging_converter_aes_active_binary_sensor_, (data[14] & (1 << 5)));
}
void Votronic::decode_battery_computer_info1_data_(const std::vector<uint8_t> &data) {
const uint32_t now = millis();
if (now - this->last_battery_computer_info1_data_ < this->throttle_) {
return;
}
this->last_battery_computer_info1_data_ = now;
auto votronic_get_16bit = [&](size_t i) -> uint16_t {
return (uint16_t(data[i + 1]) << 8) | (uint16_t(data[i + 0]) << 0);
};
// Example frame of a Votronic Smart Shunt 400 S:
// 0xAA 0xCA 0x03 0x05 0x0F 0x05 0xC7 0x01 0x20 0x00 0x63 0x00 0x7B 0xFE 0xFF 0x39
ESP_LOGI(TAG, "Battery computer info1 data received");
ESP_LOGD(TAG, " %s", format_hex_pretty(&data.front(), data.size()).c_str());
// Byte Len Payload Description Unit Precision
// 0 1 0xAA Sync Byte
// 1 1 0xCA Frame Type
// 2 2 0x03 0x05 Battery Voltage
float battery_voltage = votronic_get_16bit(2) * 0.01f;
this->publish_state_(this->battery_voltage_sensor_, battery_voltage);
// 4 2 0x0F 0x05 Second Battery Voltage
this->publish_state_(this->secondary_battery_voltage_sensor_, votronic_get_16bit(4) * 0.01f);
// 6 2 0xC7 0x01
this->publish_state_(this->battery_capacity_remaining_sensor_, votronic_get_16bit(6) * 1.0f);
// 8 2 0x20 0x00
ESP_LOGD(TAG_INFO1, "Byte 8-9: 0x%02X 0x%02X / %d %d / %d", data[8], data[9], data[8], data[9],
votronic_get_16bit(8));
// 10 2 0x63 0x00
this->publish_state_(this->state_of_charge_sensor_, (float) data[10]);
// 12 2 0x7B 0xFE
float current = ((int16_t) votronic_get_16bit(12)) * 0.001f;
this->publish_state_(this->current_sensor_, current);
this->publish_state_(this->power_sensor_, current * battery_voltage);
this->publish_state_(this->charging_binary_sensor_, (current > 0.0f));
this->publish_state_(this->discharging_binary_sensor_, (current < 0.0f));
// 14 1 0xFF
ESP_LOGI(TAG_INFO1, "Byte 14: 0x%02X / %d", data[14], data[14]);
// 15 1 0x39 CRC
}
void Votronic::decode_battery_computer_info2_data_(const std::vector<uint8_t> &data) {
const uint32_t now = millis();
if (now - this->last_battery_computer_info2_data_ < this->throttle_) {
return;
}
this->last_battery_computer_info2_data_ = now;
auto votronic_get_16bit = [&](size_t i) -> uint16_t {
return (uint16_t(data[i + 1]) << 8) | (uint16_t(data[i + 0]) << 0);
};
// Example frame of a Votronic Smart Shunt 400 S:
// 0xAA 0xDA 0x00 0x00 0x00 0x00 0xF8 0x11 0x5E 0x07 0x00 0x00 0x2F 0x04 0x02 0x43
ESP_LOGI(TAG, "Battery computer info2 data received");
ESP_LOGD(TAG, " %s", format_hex_pretty(&data.front(), data.size()).c_str());
// Byte Len Payload Description Unit Precision
// 0 1 0xAA Sync Byte
// 1 1 0xDA Frame Type
// 2 2 0x00 0x00
ESP_LOGD(TAG_INFO2, "Byte 2-3: 0x%02X 0x%02X / %d %d / %d", data[2], data[3], data[2], data[3],
votronic_get_16bit(2));
// 4 2 0x00 0x00
ESP_LOGD(TAG_INFO2, "Byte 4-5: 0x%02X 0x%02X / %d %d / %d", data[4], data[5], data[4], data[5],
votronic_get_16bit(4));
// 6 2 0xF8 0x11
this->publish_state_(this->battery_nominal_capacity_sensor_, votronic_get_16bit(6) * 0.1f);
// 8 2 0x5E 0x07
ESP_LOGD(TAG_INFO2, "Byte 8-9: 0x%02X 0x%02X / %d %d / %d", data[8], data[9], data[8], data[9],
votronic_get_16bit(8));
// 10 2 0x00 0x00
ESP_LOGD(TAG_INFO2, "Byte 10-11: 0x%02X 0x%02X / %d %d / %d", data[10], data[11], data[10], data[11],
votronic_get_16bit(10));
// 12 1 0x2F Battery type / Charging mode setting
// U1 12V system 24V system
// Lead Acid 14.4 24 124
// Gel 14.4 53 153
// AGM 14.4V 14.4 34 134
// AGM 14.7-14.8V 14.7-14.8 47 147
// LiFePo4 13.9V 13.9 89 189
// LiFePo4 14.2V 14.2 82 182
// LiFePo4 14.4V 14.4 84 184
// LiFePo4 14.6V 14.6 86 186
// LiFePo4 14.8V 14.8 88 188
// this->publish_state_(this->charging_mode_setting_id_sensor_, data[12]);
// this->publish_state_(this->charging_mode_setting_text_sensor_, this->charging_mode_setting_to_string_(data[12]));
// 13 1 0x04
this->publish_state_(this->battery_status_bitmask_sensor_, data[13]);
this->publish_state_(this->battery_status_text_sensor_, this->battery_status_bitmask_to_string_(data[13]));
ESP_LOGD(TAG_INFO2, "Battery status bitmask: 0x%02X / %d", data[13], data[13]);
// 14 1 0x02
ESP_LOGD(TAG_INFO2, "Controller Status Bitmask?: 0x%02X / %d", data[14], data[14]);
// 15 1 0x43 CRC
}
void Votronic::decode_battery_computer_info3_data_(const std::vector<uint8_t> &data) {
const uint32_t now = millis();
if (now - this->last_battery_computer_info3_data_ < this->throttle_) {
return;
}
this->last_battery_computer_info3_data_ = now;
auto votronic_get_16bit = [&](size_t i) -> uint16_t {
return (uint16_t(data[i + 1]) << 8) | (uint16_t(data[i + 0]) << 0);
};
// Example frame of a Votronic Smart Shunt 400 S:
// 0xAA 0xFA 0x2F 0x00 0x00 0x00 0xD2 0x02 0x00 0x0A 0x00 0x00 0x28 0xD0 0x00 0xF7
ESP_LOGI(TAG, "Battery computer info3 data received");
ESP_LOGD(TAG, " %s", format_hex_pretty(&data.front(), data.size()).c_str());
// Byte Len Payload Description Unit Precision
// 0 1 0xAA Sync Byte
// 1 1 0xFA Frame Type
// 2 2 0x2F 0x00
ESP_LOGD(TAG_INFO3, "Byte 2-3: 0x%02X 0x%02X / %d %d / %d", data[2], data[3], data[2], data[3],
votronic_get_16bit(2));
// 4 2 0x00 0x00
ESP_LOGD(TAG_INFO3, "Byte 4-5: 0x%02X 0x%02X / %d %d / %d", data[4], data[5], data[4], data[5],
votronic_get_16bit(4));
// 6 2 0xD2 0x02
ESP_LOGD(TAG_INFO3, "Byte 6-7: 0x%02X 0x%02X / %d %d / %d", data[6], data[7], data[6], data[7],
votronic_get_16bit(6));
// 8 2 0x00 0x0A
ESP_LOGD(TAG_INFO3, "Byte 8-9: 0x%02X 0x%02X / %d %d / %d", data[8], data[9], data[8], data[9],
votronic_get_16bit(8));
// 10 2 0x00 0x00
ESP_LOGD(TAG_INFO3, "Byte 10-11: 0x%02X 0x%02X / %d %d / %d", data[10], data[11], data[10], data[11],
votronic_get_16bit(10));
// 12 2 0x28 0xD0
ESP_LOGD(TAG_INFO3, "Byte 12-13: 0x%02X 0x%02X / %d %d / %d", data[12], data[13], data[12], data[13],
votronic_get_16bit(12));
// 14 1 0x00
ESP_LOGD(TAG_INFO3, "Byte 14: 0x%02X / %d", data[14], data[14]);
// 15 1 0xF7 CRC
}
void Votronic::dump_config() {
ESP_LOGCONFIG(TAG, "Votronic:");
ESP_LOGCONFIG(TAG, " RX timeout: %d ms", this->rx_timeout_);
LOG_BINARY_SENSOR("", "Charging", this->charging_binary_sensor_);
LOG_BINARY_SENSOR("", "Discharging", this->discharging_binary_sensor_);
LOG_BINARY_SENSOR("", "Charger controller active", this->charger_controller_active_binary_sensor_);
LOG_BINARY_SENSOR("", "Charger current reduction", this->charger_current_reduction_binary_sensor_);
LOG_BINARY_SENSOR("", "Charger AES active", this->charger_aes_active_binary_sensor_);
LOG_BINARY_SENSOR("", "Charging converter charging", this->charging_converter_charging_binary_sensor_);
LOG_BINARY_SENSOR("", "Charging converter discharging", this->charging_converter_discharging_binary_sensor_);
LOG_BINARY_SENSOR("", "Charging converter controller active",
this->charging_converter_controller_active_binary_sensor_);
LOG_BINARY_SENSOR("", "Charging converter current reduction",
this->charging_converter_current_reduction_binary_sensor_);
LOG_BINARY_SENSOR("", "Charging converter AES active", this->charging_converter_aes_active_binary_sensor_);
LOG_BINARY_SENSOR("", "PV controller active", this->pv_controller_active_binary_sensor_);
LOG_BINARY_SENSOR("", "PV current reduction", this->pv_current_reduction_binary_sensor_);
LOG_BINARY_SENSOR("", "PV AES active", this->pv_aes_active_binary_sensor_);
LOG_SENSOR("", "Battery voltage", this->battery_voltage_sensor_);
LOG_SENSOR("", "Secondary battery voltage", this->secondary_battery_voltage_sensor_);
LOG_SENSOR("", "Battery capacity remaining", this->battery_capacity_remaining_sensor_);
LOG_SENSOR("", "Battery nominal capacity", this->battery_nominal_capacity_sensor_);
LOG_SENSOR("", "State of charge", this->state_of_charge_sensor_);
LOG_SENSOR("", "Current", this->current_sensor_);
LOG_SENSOR("", "Power", this->power_sensor_);
LOG_SENSOR("", "Battery status bitmask", this->battery_status_bitmask_sensor_);
LOG_SENSOR("", "PV voltage", this->pv_voltage_sensor_);
LOG_SENSOR("", "PV current", this->pv_current_sensor_);
LOG_SENSOR("", "PV power", this->pv_power_sensor_);
LOG_SENSOR("", "PV battery status bitmask", this->pv_battery_status_bitmask_sensor_);
LOG_SENSOR("", "PV Controller status bitmask", this->pv_controller_status_bitmask_sensor_);
LOG_SENSOR("", "PV controller temperature", this->pv_controller_temperature_sensor_);
LOG_SENSOR("", "Charger battery status bitmask", this->charger_battery_status_bitmask_sensor_);
LOG_SENSOR("", "Charger Controller status bitmask", this->charger_controller_status_bitmask_sensor_);
LOG_SENSOR("", "Charger mode setting ID", this->charger_mode_setting_id_sensor_);
LOG_SENSOR("", "Charger controller temperature", this->charger_controller_temperature_sensor_);
LOG_SENSOR("", "Charger load", this->charger_load_sensor_);
LOG_SENSOR("", "Charging converter battery voltage", this->charging_converter_battery_voltage_sensor_);
LOG_SENSOR("", "Charging converter secondary battery voltage",
this->charging_converter_secondary_battery_voltage_sensor_);
LOG_SENSOR("", "Charging converter load", this->charging_converter_load_sensor_);
LOG_SENSOR("", "Charging converter current", this->charging_converter_current_sensor_);
LOG_SENSOR("", "Charging converter power", this->charging_converter_power_sensor_);
LOG_SENSOR("", "Charging converter battery status bitmask", this->charging_converter_battery_status_bitmask_sensor_);
LOG_SENSOR("", "Charging converter controller status bitmask",
this->charging_converter_controller_status_bitmask_sensor_);
LOG_SENSOR("", "Charging converter mode setting ID", this->charging_converter_mode_setting_id_sensor_);
LOG_SENSOR("", "Charging converter controller temperature", this->charging_converter_controller_temperature_sensor_);
LOG_SENSOR("", "Charging converter state of charge", this->charging_converter_state_of_charge_sensor_);
LOG_SENSOR("", "PV Mode Setting ID", this->pv_mode_setting_id_sensor_);
LOG_TEXT_SENSOR("", "Battery status", this->battery_status_text_sensor_);
LOG_TEXT_SENSOR("", "Charger battery status", this->charger_battery_status_text_sensor_);
LOG_TEXT_SENSOR("", "Charger controller status", this->charger_controller_status_text_sensor_);
LOG_TEXT_SENSOR("", "Charger mode setting", this->charger_mode_setting_text_sensor_);
LOG_TEXT_SENSOR("", "Charging converter battery status", this->charging_converter_battery_status_text_sensor_);
LOG_TEXT_SENSOR("", "Charging converter controller status", this->charging_converter_controller_status_text_sensor_);
LOG_TEXT_SENSOR("", "Charging converter mode setting", this->charging_converter_mode_setting_text_sensor_);
LOG_TEXT_SENSOR("", "PV battery status", this->pv_battery_status_text_sensor_);
LOG_TEXT_SENSOR("", "PV controller status", this->pv_controller_status_text_sensor_);
LOG_TEXT_SENSOR("", "PV Mode Setting", this->pv_mode_setting_text_sensor_);
this->check_uart_settings(1000);
}
float Votronic::get_setup_priority() const {
// After UART bus
return setup_priority::BUS - 1.0f;
}
void Votronic::publish_state_(binary_sensor::BinarySensor *binary_sensor, const bool &state) {
if (binary_sensor == nullptr)
return;
binary_sensor->publish_state(state);
}
void Votronic::publish_state_(sensor::Sensor *sensor, float value) {
if (sensor == nullptr)
return;
sensor->publish_state(value);
}
void Votronic::publish_state_(text_sensor::TextSensor *text_sensor, const std::string &state) {
if (text_sensor == nullptr)
return;
text_sensor->publish_state(state);
}
std::string Votronic::charging_mode_setting_to_string_(const uint8_t charging_mode_setting) {
switch (charging_mode_setting) {
case 24:
case 124:
return "Lead Acid";
case 53:
case 153:
return "Lead Gel";
case 34:
case 134:
return "AGM 14.4V";
case 47:
case 147:
return "AGM 14.7-14.8V";
case 89:
case 189:
return "LiFePo4 13.9V";
case 82:
case 182:
return "LiFePo4 14.2V";
case 84:
case 184:
return "LiFePo4 14.4V";
case 86:
case 186:
return "LiFePo4 14.6V";
case 88:
case 188:
return "LiFePo4 14.8V";
}
return str_snprintf("Unknown (0x%02X)", 15, charging_mode_setting);
}
std::string Votronic::battery_status_bitmask_to_string_(const uint8_t mask) {
if (mask == 0x00) {
return "Standby";
}
if (mask & (1 << 3)) {
return "U3 phase";
}
if (mask & (1 << 2)) {
return "U2 phase";
}
if (mask & (1 << 1)) {
return "U1 phase";
}
if (mask & (1 << 0)) {
return "I phase";
}
return str_snprintf("Unknown (0x%02X)", 15, mask);
}
std::string Votronic::solar_charger_status_bitmask_to_string_(const uint8_t mask) {
if (mask == 0x00) {
return "Standby";
}
if (mask & (1 << 5)) {
return "AES active";
}
if (mask & (1 << 4)) {
return "Reduced";
}
if (mask & (1 << 3)) {
return "Active";
}
return str_snprintf("Unknown (0x%02X)", 15, mask);
}
std::string Votronic::charger_status_bitmask_to_string_(const uint8_t mask) {
bool first = true;
std::string errors_list = "";
if (mask == 0x00) {
return "Standby";
}
if (mask) {
for (uint8_t i = 0; i < CHARGER_STATUS_SIZE; i++) {
if (mask & (1 << i)) {
if (first) {
first = false;
} else {
errors_list.append(";");
}
errors_list.append(CHARGER_STATUS[i]);
}
}
}
return errors_list;
}
} // namespace votronic
} // namespace esphome

View File

@@ -0,0 +1,300 @@
#pragma once
#include "esphome/core/component.h"
#include "esphome/components/binary_sensor/binary_sensor.h"
#include "esphome/components/sensor/sensor.h"
#include "esphome/components/text_sensor/text_sensor.h"
#include "esphome/components/uart/uart.h"
namespace esphome {
namespace votronic {
class Votronic : public uart::UARTDevice, public PollingComponent {
public:
void loop() override;
void dump_config() override;
void update() override;
float get_setup_priority() const override;
void set_charging_binary_sensor(binary_sensor::BinarySensor *charging_binary_sensor) {
charging_binary_sensor_ = charging_binary_sensor;
}
void set_discharging_binary_sensor(binary_sensor::BinarySensor *discharging_binary_sensor) {
discharging_binary_sensor_ = discharging_binary_sensor;
}
void set_charger_charging_binary_sensor(binary_sensor::BinarySensor *charger_charging_binary_sensor) {
charger_charging_binary_sensor_ = charger_charging_binary_sensor;
}
void set_charger_discharging_binary_sensor(binary_sensor::BinarySensor *charger_discharging_binary_sensor) {
charger_discharging_binary_sensor_ = charger_discharging_binary_sensor;
}
void set_charger_controller_active_binary_sensor(
binary_sensor::BinarySensor *charger_controller_active_binary_sensor) {
charger_controller_active_binary_sensor_ = charger_controller_active_binary_sensor;
}
void set_charger_aes_active_binary_sensor(binary_sensor::BinarySensor *charger_aes_active_binary_sensor) {
charger_aes_active_binary_sensor_ = charger_aes_active_binary_sensor;
}
void set_charger_current_reduction_binary_sensor(
binary_sensor::BinarySensor *charger_current_reduction_binary_sensor) {
charger_current_reduction_binary_sensor_ = charger_current_reduction_binary_sensor;
}
void set_pv_controller_active_binary_sensor(binary_sensor::BinarySensor *pv_controller_active_binary_sensor) {
pv_controller_active_binary_sensor_ = pv_controller_active_binary_sensor;
}
void set_pv_aes_active_binary_sensor(binary_sensor::BinarySensor *pv_aes_active_binary_sensor) {
pv_aes_active_binary_sensor_ = pv_aes_active_binary_sensor;
}
void set_pv_current_reduction_binary_sensor(binary_sensor::BinarySensor *pv_current_reduction_binary_sensor) {
pv_current_reduction_binary_sensor_ = pv_current_reduction_binary_sensor;
}
void set_charging_converter_charging_binary_sensor(
binary_sensor::BinarySensor *charging_converter_charging_binary_sensor) {
charging_converter_charging_binary_sensor_ = charging_converter_charging_binary_sensor;
}
void set_charging_converter_discharging_binary_sensor(
binary_sensor::BinarySensor *charging_converter_discharging_binary_sensor) {
charging_converter_discharging_binary_sensor_ = charging_converter_discharging_binary_sensor;
}
void set_charging_converter_controller_active_binary_sensor(
binary_sensor::BinarySensor *charging_converter_controller_active_binary_sensor) {
charging_converter_controller_active_binary_sensor_ = charging_converter_controller_active_binary_sensor;
}
void set_charging_converter_current_reduction_binary_sensor(
binary_sensor::BinarySensor *charging_converter_current_reduction_binary_sensor) {
charging_converter_current_reduction_binary_sensor_ = charging_converter_current_reduction_binary_sensor;
}
void set_charging_converter_aes_active_binary_sensor(
binary_sensor::BinarySensor *charging_converter_aes_active_binary_sensor) {
charging_converter_aes_active_binary_sensor_ = charging_converter_aes_active_binary_sensor;
}
void set_battery_voltage_sensor(sensor::Sensor *battery_voltage_sensor) {
battery_voltage_sensor_ = battery_voltage_sensor;
}
void set_secondary_battery_voltage_sensor(sensor::Sensor *secondary_battery_voltage_sensor) {
secondary_battery_voltage_sensor_ = secondary_battery_voltage_sensor;
}
void set_state_of_charge_sensor(sensor::Sensor *state_of_charge_sensor) {
state_of_charge_sensor_ = state_of_charge_sensor;
}
void set_current_sensor(sensor::Sensor *current_sensor) { current_sensor_ = current_sensor; }
void set_power_sensor(sensor::Sensor *power_sensor) { power_sensor_ = power_sensor; }
void set_charger_current_sensor(sensor::Sensor *charger_current_sensor) {
charger_current_sensor_ = charger_current_sensor;
}
void set_charger_power_sensor(sensor::Sensor *charger_power_sensor) { charger_power_sensor_ = charger_power_sensor; }
void set_charger_load_sensor(sensor::Sensor *charger_load_sensor) { charger_load_sensor_ = charger_load_sensor; }
void set_charger_battery_status_bitmask_sensor(sensor::Sensor *charger_battery_status_bitmask_sensor) {
charger_battery_status_bitmask_sensor_ = charger_battery_status_bitmask_sensor;
}
void set_pv_voltage_sensor(sensor::Sensor *pv_voltage_sensor) { pv_voltage_sensor_ = pv_voltage_sensor; }
void set_pv_current_sensor(sensor::Sensor *pv_current_sensor) { pv_current_sensor_ = pv_current_sensor; }
void set_pv_power_sensor(sensor::Sensor *pv_power_sensor) { pv_power_sensor_ = pv_power_sensor; }
void set_battery_status_bitmask_sensor(sensor::Sensor *battery_status_bitmask_sensor) {
battery_status_bitmask_sensor_ = battery_status_bitmask_sensor;
}
void set_pv_battery_status_bitmask_sensor(sensor::Sensor *pv_battery_status_bitmask_sensor) {
pv_battery_status_bitmask_sensor_ = pv_battery_status_bitmask_sensor;
}
void set_charger_controller_status_bitmask_sensor(sensor::Sensor *charger_controller_status_bitmask_sensor) {
charger_controller_status_bitmask_sensor_ = charger_controller_status_bitmask_sensor;
}
void set_pv_controller_status_bitmask_sensor(sensor::Sensor *pv_controller_status_bitmask_sensor) {
pv_controller_status_bitmask_sensor_ = pv_controller_status_bitmask_sensor;
}
void set_charger_mode_setting_id_sensor(sensor::Sensor *charger_mode_setting_id_sensor) {
charger_mode_setting_id_sensor_ = charger_mode_setting_id_sensor;
}
void set_charger_battery_status_text_sensor(text_sensor::TextSensor *charger_battery_status_text_sensor) {
charger_battery_status_text_sensor_ = charger_battery_status_text_sensor;
}
void set_charger_controller_temperature_sensor(sensor::Sensor *charger_controller_temperature_sensor) {
charger_controller_temperature_sensor_ = charger_controller_temperature_sensor;
}
void set_pv_controller_temperature_sensor(sensor::Sensor *pv_controller_temperature_sensor) {
pv_controller_temperature_sensor_ = pv_controller_temperature_sensor;
}
void set_pv_mode_setting_id_sensor(sensor::Sensor *pv_mode_setting_id_sensor) {
pv_mode_setting_id_sensor_ = pv_mode_setting_id_sensor;
}
void set_battery_capacity_remaining_sensor(sensor::Sensor *battery_capacity_remaining_sensor) {
battery_capacity_remaining_sensor_ = battery_capacity_remaining_sensor;
}
void set_battery_nominal_capacity_sensor(sensor::Sensor *battery_nominal_capacity_sensor) {
battery_nominal_capacity_sensor_ = battery_nominal_capacity_sensor;
}
void set_charging_converter_battery_voltage_sensor(sensor::Sensor *charging_converter_battery_voltage_sensor) {
charging_converter_battery_voltage_sensor_ = charging_converter_battery_voltage_sensor;
}
void set_charging_converter_secondary_battery_voltage_sensor(
sensor::Sensor *charging_converter_secondary_battery_voltage_sensor) {
charging_converter_secondary_battery_voltage_sensor_ = charging_converter_secondary_battery_voltage_sensor;
}
void set_charging_converter_current_sensor(sensor::Sensor *charging_converter_current_sensor) {
charging_converter_current_sensor_ = charging_converter_current_sensor;
}
void set_charging_converter_power_sensor(sensor::Sensor *charging_converter_power_sensor) {
charging_converter_power_sensor_ = charging_converter_power_sensor;
}
void set_charging_converter_load_sensor(sensor::Sensor *charging_converter_load_sensor) {
charging_converter_load_sensor_ = charging_converter_load_sensor;
}
void set_charging_converter_controller_temperature_sensor(
sensor::Sensor *charging_converter_controller_temperature_sensor) {
charging_converter_controller_temperature_sensor_ = charging_converter_controller_temperature_sensor;
}
void set_charging_converter_mode_setting_id_sensor(sensor::Sensor *charging_converter_mode_setting_id_sensor) {
charging_converter_mode_setting_id_sensor_ = charging_converter_mode_setting_id_sensor;
}
void set_charging_converter_battery_status_bitmask_sensor(
sensor::Sensor *charging_converter_battery_status_bitmask_sensor) {
charging_converter_battery_status_bitmask_sensor_ = charging_converter_battery_status_bitmask_sensor;
}
void set_charging_converter_controller_status_bitmask_sensor(
sensor::Sensor *charging_converter_controller_status_bitmask_sensor) {
charging_converter_controller_status_bitmask_sensor_ = charging_converter_controller_status_bitmask_sensor;
}
void set_battery_status_text_sensor(text_sensor::TextSensor *battery_status_text_sensor) {
battery_status_text_sensor_ = battery_status_text_sensor;
}
void set_pv_mode_setting_text_sensor(text_sensor::TextSensor *pv_mode_setting_text_sensor) {
pv_mode_setting_text_sensor_ = pv_mode_setting_text_sensor;
}
void set_pv_battery_status_text_sensor(text_sensor::TextSensor *pv_battery_status_text_sensor) {
pv_battery_status_text_sensor_ = pv_battery_status_text_sensor;
}
void set_charger_controller_status_text_sensor(text_sensor::TextSensor *charger_controller_status_text_sensor) {
charger_controller_status_text_sensor_ = charger_controller_status_text_sensor;
}
void set_pv_controller_status_text_sensor(text_sensor::TextSensor *pv_controller_status_text_sensor) {
pv_controller_status_text_sensor_ = pv_controller_status_text_sensor;
}
void set_charger_mode_setting_text_sensor(text_sensor::TextSensor *charger_mode_setting_text_sensor) {
charger_mode_setting_text_sensor_ = charger_mode_setting_text_sensor;
}
void set_charging_converter_mode_setting_text_sensor(
text_sensor::TextSensor *charging_converter_mode_setting_text_sensor) {
charging_converter_mode_setting_text_sensor_ = charging_converter_mode_setting_text_sensor;
}
void set_charging_converter_battery_status_text_sensor(
text_sensor::TextSensor *charging_converter_battery_status_text_sensor) {
charging_converter_battery_status_text_sensor_ = charging_converter_battery_status_text_sensor;
}
void set_charging_converter_controller_status_text_sensor(
text_sensor::TextSensor *charging_converter_controller_status_text_sensor) {
charging_converter_controller_status_text_sensor_ = charging_converter_controller_status_text_sensor;
}
void on_votronic_data(const std::vector<uint8_t> &data);
void set_throttle(uint32_t throttle) { this->throttle_ = throttle; }
void set_rx_timeout(uint16_t rx_timeout) { rx_timeout_ = rx_timeout; }
protected:
binary_sensor::BinarySensor *charging_binary_sensor_;
binary_sensor::BinarySensor *discharging_binary_sensor_;
binary_sensor::BinarySensor *charger_charging_binary_sensor_;
binary_sensor::BinarySensor *charger_discharging_binary_sensor_;
binary_sensor::BinarySensor *charger_controller_active_binary_sensor_;
binary_sensor::BinarySensor *charger_aes_active_binary_sensor_;
binary_sensor::BinarySensor *charger_current_reduction_binary_sensor_;
binary_sensor::BinarySensor *charging_converter_charging_binary_sensor_;
binary_sensor::BinarySensor *charging_converter_discharging_binary_sensor_;
binary_sensor::BinarySensor *charging_converter_controller_active_binary_sensor_;
binary_sensor::BinarySensor *charging_converter_current_reduction_binary_sensor_;
binary_sensor::BinarySensor *charging_converter_aes_active_binary_sensor_;
binary_sensor::BinarySensor *pv_controller_active_binary_sensor_;
binary_sensor::BinarySensor *pv_aes_active_binary_sensor_;
binary_sensor::BinarySensor *pv_current_reduction_binary_sensor_;
sensor::Sensor *battery_voltage_sensor_;
sensor::Sensor *secondary_battery_voltage_sensor_;
sensor::Sensor *state_of_charge_sensor_;
sensor::Sensor *current_sensor_;
sensor::Sensor *power_sensor_;
sensor::Sensor *battery_status_bitmask_sensor_;
sensor::Sensor *battery_capacity_remaining_sensor_;
sensor::Sensor *battery_nominal_capacity_sensor_;
sensor::Sensor *charger_current_sensor_;
sensor::Sensor *charger_power_sensor_;
sensor::Sensor *charger_load_sensor_;
sensor::Sensor *charger_controller_temperature_sensor_;
sensor::Sensor *charger_mode_setting_id_sensor_;
sensor::Sensor *charger_battery_status_bitmask_sensor_;
sensor::Sensor *charger_controller_status_bitmask_sensor_;
sensor::Sensor *charging_converter_battery_voltage_sensor_;
sensor::Sensor *charging_converter_secondary_battery_voltage_sensor_;
sensor::Sensor *charging_converter_current_sensor_;
sensor::Sensor *charging_converter_power_sensor_;
sensor::Sensor *charging_converter_load_sensor_;
sensor::Sensor *charging_converter_state_of_charge_sensor_;
sensor::Sensor *charging_converter_controller_temperature_sensor_;
sensor::Sensor *charging_converter_mode_setting_id_sensor_;
sensor::Sensor *charging_converter_battery_status_bitmask_sensor_;
sensor::Sensor *charging_converter_controller_status_bitmask_sensor_;
sensor::Sensor *pv_voltage_sensor_;
sensor::Sensor *pv_current_sensor_;
sensor::Sensor *pv_power_sensor_;
sensor::Sensor *pv_battery_status_bitmask_sensor_;
sensor::Sensor *pv_controller_status_bitmask_sensor_;
sensor::Sensor *pv_controller_temperature_sensor_;
sensor::Sensor *pv_mode_setting_id_sensor_;
text_sensor::TextSensor *battery_status_text_sensor_;
text_sensor::TextSensor *charger_mode_setting_text_sensor_;
text_sensor::TextSensor *charger_battery_status_text_sensor_;
text_sensor::TextSensor *charger_controller_status_text_sensor_;
text_sensor::TextSensor *charging_converter_mode_setting_text_sensor_;
text_sensor::TextSensor *charging_converter_battery_status_text_sensor_;
text_sensor::TextSensor *charging_converter_controller_status_text_sensor_;
text_sensor::TextSensor *pv_mode_setting_text_sensor_;
text_sensor::TextSensor *pv_battery_status_text_sensor_;
text_sensor::TextSensor *pv_controller_status_text_sensor_;
std::vector<uint8_t> rx_buffer_;
uint32_t last_byte_{0};
uint32_t last_solar_charger_data_{0};
uint32_t last_charger_data_{0};
uint32_t last_battery_computer_info1_data_{0};
uint32_t last_battery_computer_info2_data_{0};
uint32_t last_battery_computer_info3_data_{0};
uint32_t throttle_;
uint16_t rx_timeout_{150};
void decode_solar_charger_data_(const std::vector<uint8_t> &data);
void decode_charger_data_(const std::vector<uint8_t> &data);
void decode_charging_converter_data_(const std::vector<uint8_t> &data);
void decode_battery_computer_info1_data_(const std::vector<uint8_t> &data);
void decode_battery_computer_info2_data_(const std::vector<uint8_t> &data);
void decode_battery_computer_info3_data_(const std::vector<uint8_t> &data);
bool parse_votronic_byte_(uint8_t byte);
void publish_state_(binary_sensor::BinarySensor *binary_sensor, const bool &state);
void publish_state_(sensor::Sensor *sensor, float value);
void publish_state_(text_sensor::TextSensor *text_sensor, const std::string &state);
std::string charging_mode_setting_to_string_(uint8_t charging_mode_setting);
std::string battery_status_bitmask_to_string_(uint8_t mask);
std::string solar_charger_status_bitmask_to_string_(uint8_t mask);
std::string charger_status_bitmask_to_string_(uint8_t mask);
uint8_t chksum_(const uint8_t data[], const uint8_t len) {
uint8_t checksum = 0x00;
for (uint8_t i = 0; i < len; i++) {
checksum = checksum ^ data[i];
}
return checksum;
}
};
} // namespace votronic
} // namespace esphome

View File

@@ -1,14 +1,13 @@
import esphome.codegen as cg
import esphome.config_validation as cv
from esphome.components import ble_client
import esphome.config_validation as cv
from esphome.const import CONF_ID, CONF_THROTTLE
AUTO_LOAD = ["sensor", "text_sensor"]
AUTO_LOAD = ["binary_sensor", "sensor", "text_sensor"]
CODEOWNERS = ["@syssi"]
MULTI_CONF = True
CONF_VOTRONIC_BLE_ID = "votronic_ble_id"
CONF_ENABLE_FAKE_TRAFFIC = "enable_fake_traffic"
votronic_ble_ns = cg.esphome_ns.namespace("votronic_ble")
VotronicBle = votronic_ble_ns.class_(
@@ -22,13 +21,19 @@ CONFIG_SCHEMA = (
cv.Optional(
CONF_THROTTLE, default="2s"
): cv.positive_time_period_milliseconds,
cv.Optional(CONF_ENABLE_FAKE_TRAFFIC, default=False): cv.boolean,
}
)
.extend(ble_client.BLE_CLIENT_SCHEMA)
.extend(cv.polling_component_schema("2s"))
)
# Centralized schema for subcomponents
VOTRONIC_BLE_SCHEMA = cv.Schema(
{
cv.GenerateID(CONF_VOTRONIC_BLE_ID): cv.use_id(VotronicBle),
}
)
async def to_code(config):
var = cg.new_Pvariable(config[CONF_ID])
@@ -36,4 +41,3 @@ async def to_code(config):
await ble_client.register_ble_node(var, config)
cg.add(var.set_throttle(config[CONF_THROTTLE]))
cg.add(var.set_enable_fake_traffic(config[CONF_ENABLE_FAKE_TRAFFIC]))

View File

@@ -0,0 +1,60 @@
import esphome.codegen as cg
from esphome.components import binary_sensor
import esphome.config_validation as cv
from esphome.const import CONF_ID
from . import CONF_VOTRONIC_BLE_ID, VOTRONIC_BLE_SCHEMA
DEPENDENCIES = ["votronic_ble"]
CODEOWNERS = ["@syssi"]
CONF_CHARGING = "charging"
CONF_DISCHARGING = "discharging"
CONF_CONTROLLER_ACTIVE = "controller_active"
CONF_CURRENT_REDUCTION = "current_reduction"
CONF_AES_ACTIVE = "aes_active"
ICON_CHARGING = "mdi:battery-charging"
ICON_DISCHARGING = "mdi:power-plug"
ICON_CONTROLLER_ACTIVE = "mdi:power"
ICON_CURRENT_REDUCTION = "mdi:car-speed-limiter"
ICON_AES_ACTIVE = "mdi:export"
BINARY_SENSORS = [
CONF_CHARGING,
CONF_DISCHARGING,
CONF_CONTROLLER_ACTIVE,
CONF_CURRENT_REDUCTION,
CONF_AES_ACTIVE,
]
CONFIG_SCHEMA = VOTRONIC_BLE_SCHEMA.extend(
{
cv.Optional(CONF_CHARGING): binary_sensor.binary_sensor_schema(
binary_sensor.BinarySensor, icon=ICON_CHARGING
),
cv.Optional(CONF_DISCHARGING): binary_sensor.binary_sensor_schema(
binary_sensor.BinarySensor, icon=ICON_DISCHARGING
),
cv.Optional(CONF_CONTROLLER_ACTIVE): binary_sensor.binary_sensor_schema(
binary_sensor.BinarySensor, icon=ICON_CONTROLLER_ACTIVE
),
cv.Optional(CONF_CURRENT_REDUCTION): binary_sensor.binary_sensor_schema(
binary_sensor.BinarySensor, icon=ICON_CURRENT_REDUCTION
),
cv.Optional(CONF_AES_ACTIVE): binary_sensor.binary_sensor_schema(
binary_sensor.BinarySensor, icon=ICON_AES_ACTIVE
),
}
)
async def to_code(config):
hub = await cg.get_variable(config[CONF_VOTRONIC_BLE_ID])
for key in BINARY_SENSORS:
if key in config:
conf = config[key]
sens = cg.new_Pvariable(conf[CONF_ID])
await binary_sensor.register_binary_sensor(sens, conf)
cg.add(getattr(hub, f"set_{key}_binary_sensor")(sens))

View File

@@ -1,9 +1,10 @@
import esphome.codegen as cg
import esphome.config_validation as cv
from esphome.components import sensor
import esphome.config_validation as cv
from esphome.const import (
CONF_BATTERY_VOLTAGE,
CONF_CURRENT,
CONF_POWER,
DEVICE_CLASS_CURRENT,
DEVICE_CLASS_EMPTY,
DEVICE_CLASS_ENERGY,
@@ -19,62 +20,59 @@ from esphome.const import (
UNIT_WATT_HOURS,
)
from . import CONF_VOTRONIC_BLE_ID, VotronicBle
from . import CONF_VOTRONIC_BLE_ID, VOTRONIC_BLE_SCHEMA
DEPENDENCIES = ["votronic_ble"]
CODEOWNERS = ["@syssi"]
CONF_TOTAL_VOLTAGE = "total_voltage"
# CONF_BATTERY_VOLTAGE = "battery_voltage"
CONF_SECONDARY_BATTERY_VOLTAGE = "secondary_battery_voltage"
CONF_BATTERY_CAPACITY = "battery_capacity"
CONF_BATTERY_CAPACITY_REMAINING = "battery_capacity_remaining"
CONF_STATE_OF_CHARGE = "state_of_charge"
# CONF_CURRENT = "current"
CONF_BATTERY_NOMINAL_CAPACITY = "battery_nominal_capacity"
CONF_PV_VOLTAGE = "pv_voltage"
CONF_PV_CURRENT = "pv_current"
CONF_BATTERY_STATUS_BITMASK = "battery_status_bitmask"
CONF_CONTROLLER_STATUS_BITMASK = "controller_status_bitmask"
CONF_PV_CONTROLLER_STATUS_BITMASK = "pv_controller_status_bitmask"
CONF_CHARGED_CAPACITY = "charged_capacity"
CONF_CHARGED_ENERGY = "charged_energy"
CONF_PV_POWER = "pv_power"
ICON_CURRENT_DC = "mdi:current-dc"
UNIT_AMPERE_HOURS = "Ah"
ICON_BATTERY_CAPACITY = "mdi:battery-medium"
ICON_BATTERY_CAPACITY_REMAINING = "mdi:battery-50"
ICON_STATE_OF_CHARGE = "mdi:battery-50"
ICON_BATTERY_NOMINAL_CAPACITY = "mdi:battery-100"
ICON_CURRENT_DC = "mdi:current-dc"
ICON_BATTERY_NOMINAL_CAPACITY = "mdi:battery"
ICON_BATTERY_STATUS_BITMASK = "mdi:alert-circle-outline"
ICON_CONTROLLER_STATUS_BITMASK = "mdi:alert-circle-outline"
ICON_PV_CONTROLLER_STATUS_BITMASK = "mdi:alert-circle-outline"
ICON_CHARGED_CAPACITY = "mdi:battery-charging"
ICON_CHARGING_CYCLES = "mdi:battery-sync"
ICON_ERRORS_BITMASK = "mdi:alert-circle-outline"
UNIT_AMPERE_HOURS = "Ah"
SENSORS = [
CONF_BATTERY_VOLTAGE,
CONF_SECONDARY_BATTERY_VOLTAGE,
CONF_BATTERY_CAPACITY,
CONF_BATTERY_CAPACITY_REMAINING,
CONF_STATE_OF_CHARGE,
CONF_CURRENT,
CONF_POWER,
CONF_BATTERY_NOMINAL_CAPACITY,
CONF_PV_VOLTAGE,
CONF_PV_CURRENT,
CONF_PV_POWER,
CONF_BATTERY_STATUS_BITMASK,
CONF_CONTROLLER_STATUS_BITMASK,
CONF_PV_CONTROLLER_STATUS_BITMASK,
CONF_CHARGED_CAPACITY,
CONF_CHARGED_ENERGY,
CONF_PV_POWER,
]
CONFIG_SCHEMA = cv.Schema(
CONFIG_SCHEMA = VOTRONIC_BLE_SCHEMA.extend(
{
cv.GenerateID(CONF_VOTRONIC_BLE_ID): cv.use_id(VotronicBle),
cv.Optional(CONF_BATTERY_VOLTAGE): sensor.sensor_schema(
unit_of_measurement=UNIT_VOLT,
icon=ICON_EMPTY,
@@ -89,9 +87,9 @@ CONFIG_SCHEMA = cv.Schema(
device_class=DEVICE_CLASS_VOLTAGE,
state_class=STATE_CLASS_MEASUREMENT,
),
cv.Optional(CONF_BATTERY_CAPACITY): sensor.sensor_schema(
cv.Optional(CONF_BATTERY_CAPACITY_REMAINING): sensor.sensor_schema(
unit_of_measurement=UNIT_AMPERE_HOURS,
icon=ICON_BATTERY_CAPACITY,
icon=ICON_BATTERY_CAPACITY_REMAINING,
accuracy_decimals=0,
device_class=DEVICE_CLASS_EMPTY,
state_class=STATE_CLASS_MEASUREMENT,
@@ -110,6 +108,13 @@ CONFIG_SCHEMA = cv.Schema(
device_class=DEVICE_CLASS_CURRENT,
state_class=STATE_CLASS_MEASUREMENT,
),
cv.Optional(CONF_POWER): sensor.sensor_schema(
unit_of_measurement=UNIT_WATT,
icon=ICON_EMPTY,
accuracy_decimals=2,
device_class=DEVICE_CLASS_POWER,
state_class=STATE_CLASS_MEASUREMENT,
),
cv.Optional(CONF_BATTERY_NOMINAL_CAPACITY): sensor.sensor_schema(
unit_of_measurement=UNIT_AMPERE_HOURS,
icon=ICON_BATTERY_NOMINAL_CAPACITY,
@@ -127,10 +132,17 @@ CONFIG_SCHEMA = cv.Schema(
cv.Optional(CONF_PV_CURRENT): sensor.sensor_schema(
unit_of_measurement=UNIT_AMPERE,
icon=ICON_CURRENT_DC,
accuracy_decimals=2,
accuracy_decimals=1,
device_class=DEVICE_CLASS_CURRENT,
state_class=STATE_CLASS_MEASUREMENT,
),
cv.Optional(CONF_PV_POWER): sensor.sensor_schema(
unit_of_measurement=UNIT_WATT,
icon=ICON_EMPTY,
accuracy_decimals=1,
device_class=DEVICE_CLASS_POWER,
state_class=STATE_CLASS_MEASUREMENT,
),
cv.Optional(CONF_BATTERY_STATUS_BITMASK): sensor.sensor_schema(
unit_of_measurement=UNIT_EMPTY,
icon=ICON_BATTERY_STATUS_BITMASK,
@@ -138,9 +150,9 @@ CONFIG_SCHEMA = cv.Schema(
device_class=DEVICE_CLASS_EMPTY,
state_class=STATE_CLASS_MEASUREMENT,
),
cv.Optional(CONF_CONTROLLER_STATUS_BITMASK): sensor.sensor_schema(
cv.Optional(CONF_PV_CONTROLLER_STATUS_BITMASK): sensor.sensor_schema(
unit_of_measurement=UNIT_EMPTY,
icon=ICON_CONTROLLER_STATUS_BITMASK,
icon=ICON_PV_CONTROLLER_STATUS_BITMASK,
accuracy_decimals=0,
device_class=DEVICE_CLASS_EMPTY,
state_class=STATE_CLASS_MEASUREMENT,
@@ -159,13 +171,6 @@ CONFIG_SCHEMA = cv.Schema(
device_class=DEVICE_CLASS_ENERGY,
state_class=STATE_CLASS_MEASUREMENT,
),
cv.Optional(CONF_PV_POWER): sensor.sensor_schema(
unit_of_measurement=UNIT_WATT,
icon=ICON_EMPTY,
accuracy_decimals=0,
device_class=DEVICE_CLASS_POWER,
state_class=STATE_CLASS_MEASUREMENT,
),
}
)

View File

@@ -1,39 +1,34 @@
import esphome.codegen as cg
import esphome.config_validation as cv
from esphome.components import text_sensor
from esphome.const import CONF_ICON, CONF_ID
import esphome.config_validation as cv
from esphome.const import CONF_ID
from . import CONF_VOTRONIC_BLE_ID, VotronicBle
from . import CONF_VOTRONIC_BLE_ID, VOTRONIC_BLE_SCHEMA
DEPENDENCIES = ["votronic_ble"]
CODEOWNERS = ["@syssi"]
CONF_BATTERY_STATUS = "battery_status"
CONF_CONTROLLER_STATUS = "controller_status"
CONF_PV_CONTROLLER_STATUS = "pv_controller_status"
ICON_BATTERY_STATUS = "mdi:alert-circle-outline"
ICON_CONTROLLER_STATUS = "mdi:heart-pulse"
ICON_PV_CONTROLLER_STATUS = "mdi:heart-pulse"
TEXT_SENSORS = [
CONF_BATTERY_STATUS,
CONF_CONTROLLER_STATUS,
CONF_PV_CONTROLLER_STATUS,
]
CONFIG_SCHEMA = cv.Schema(
CONFIG_SCHEMA = VOTRONIC_BLE_SCHEMA.extend(
{
cv.GenerateID(CONF_VOTRONIC_BLE_ID): cv.use_id(VotronicBle),
cv.Optional(CONF_BATTERY_STATUS): text_sensor.TEXT_SENSOR_SCHEMA.extend(
{
cv.GenerateID(): cv.declare_id(text_sensor.TextSensor),
cv.Optional(CONF_ICON, default=ICON_BATTERY_STATUS): cv.icon,
}
cv.Optional(CONF_BATTERY_STATUS): text_sensor.text_sensor_schema(
class_=text_sensor.TextSensor,
icon=ICON_BATTERY_STATUS,
),
cv.Optional(CONF_CONTROLLER_STATUS): text_sensor.TEXT_SENSOR_SCHEMA.extend(
{
cv.GenerateID(): cv.declare_id(text_sensor.TextSensor),
cv.Optional(CONF_ICON, default=ICON_CONTROLLER_STATUS): cv.icon,
}
cv.Optional(CONF_PV_CONTROLLER_STATUS): text_sensor.text_sensor_schema(
class_=text_sensor.TextSensor,
icon=ICON_PV_CONTROLLER_STATUS,
),
}
)

View File

@@ -23,47 +23,67 @@ void VotronicBle::gattc_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_t
this->publish_state_(this->battery_voltage_sensor_, NAN);
this->publish_state_(this->secondary_battery_voltage_sensor_, NAN);
this->publish_state_(this->battery_capacity_sensor_, NAN);
this->publish_state_(this->battery_capacity_remaining_sensor_, NAN);
this->publish_state_(this->state_of_charge_sensor_, NAN);
this->publish_state_(this->current_sensor_, NAN);
this->publish_state_(this->power_sensor_, NAN);
this->publish_state_(this->battery_nominal_capacity_sensor_, NAN);
this->publish_state_(this->battery_voltage_sensor_, NAN);
this->publish_state_(this->pv_voltage_sensor_, NAN);
this->publish_state_(this->pv_current_sensor_, NAN);
this->publish_state_(this->battery_status_bitmask_sensor_, NAN);
this->publish_state_(this->controller_status_bitmask_sensor_, NAN);
this->publish_state_(this->pv_controller_status_bitmask_sensor_, NAN);
this->publish_state_(this->charged_capacity_sensor_, NAN);
this->publish_state_(this->charged_energy_sensor_, NAN);
this->publish_state_(this->pv_power_sensor_, NAN);
if (this->char_battery_computer_handle_ != 0) {
auto status = esp_ble_gattc_unregister_for_notify(
this->parent()->get_gattc_if(), this->parent()->get_remote_bda(), this->char_battery_computer_handle_);
if (status) {
ESP_LOGW(TAG, "esp_ble_gattc_unregister_for_notify failed, status=%d", status);
}
}
this->char_battery_computer_handle_ = 0;
if (this->char_solar_charger_handle_ != 0) {
auto status = esp_ble_gattc_unregister_for_notify(
this->parent()->get_gattc_if(), this->parent()->get_remote_bda(), this->char_solar_charger_handle_);
if (status) {
ESP_LOGW(TAG, "esp_ble_gattc_unregister_for_notify failed, status=%d", status);
}
}
this->char_solar_charger_handle_ = 0;
break;
}
case ESP_GATTC_SEARCH_CMPL_EVT: {
auto *char_battery = this->parent_->get_characteristic(this->service_monitoring_uuid_, this->char_battery_uuid_);
if (char_battery == nullptr) {
ESP_LOGW(TAG, "[%s] No battery characteristic found at device, no battery computer attached?",
auto *char_battery_computer =
this->parent_->get_characteristic(this->service_monitoring_uuid_, this->char_battery_computer_uuid_);
if (char_battery_computer == nullptr) {
ESP_LOGW(TAG, "[%s] No battery computer characteristic found at device. No battery computer attached?",
this->parent_->address_str().c_str());
break;
}
this->char_battery_handle_ = char_battery->handle;
this->char_battery_computer_handle_ = char_battery_computer->handle;
auto status = esp_ble_gattc_register_for_notify(this->parent()->get_gattc_if(), this->parent()->get_remote_bda(),
char_battery->handle);
char_battery_computer->handle);
if (status) {
ESP_LOGW(TAG, "esp_ble_gattc_register_for_notify failed, status=%d", status);
}
auto *char_photovoltaic =
this->parent_->get_characteristic(this->service_monitoring_uuid_, this->char_photovoltaic_uuid_);
if (char_photovoltaic == nullptr) {
ESP_LOGW(TAG, "[%s] No Photovoltaic characteristic found at device, no Photovoltaic solar charger attached?",
auto *char_solar_charger =
this->parent_->get_characteristic(this->service_monitoring_uuid_, this->char_solar_charger_uuid_);
if (char_solar_charger == nullptr) {
ESP_LOGW(TAG, "[%s] No solar charger characteristic found at device. No solar charger attached?",
this->parent_->address_str().c_str());
break;
}
this->char_photovoltaic_handle_ = char_photovoltaic->handle;
this->char_solar_charger_handle_ = char_solar_charger->handle;
auto status2 = esp_ble_gattc_register_for_notify(this->parent()->get_gattc_if(), this->parent()->get_remote_bda(),
char_photovoltaic->handle);
char_solar_charger->handle);
if (status2) {
ESP_LOGW(TAG, "esp_ble_gattc_register_for_notify failed, status=%d", status2);
}
@@ -80,7 +100,7 @@ void VotronicBle::gattc_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_t
std::vector<uint8_t> data(param->notify.value, param->notify.value + param->notify.value_len);
this->on_votronic_ble_data_(param->notify.handle, data);
this->on_votronic_ble_data(param->notify.handle, data);
break;
}
default:
@@ -89,140 +109,155 @@ void VotronicBle::gattc_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_t
}
void VotronicBle::update() {
if (this->enable_fake_traffic_) {
this->char_photovoltaic_handle_ = 0x25;
this->char_battery_handle_ = 0x22;
// Photovoltaic status frame
this->on_votronic_ble_data_(0x25, {0xE8, 0x04, 0x76, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x56, 0x00, 0x09,
0x18, 0x00, 0x22, 0x00, 0x00, 0x00});
// Battery status frame
this->on_votronic_ble_data_(0x22, {0xE8, 0x04, 0xBF, 0x04, 0x09, 0x01, 0x60, 0x00, 0x5F, 0x00,
0x9A, 0xFE, 0xFF, 0xF0, 0x0A, 0x5E, 0x14, 0x54, 0x02, 0x04});
}
if (this->node_state != espbt::ClientState::ESTABLISHED) {
ESP_LOGW(TAG, "[%s] Not connected", this->parent_->address_str().c_str());
return;
}
}
void VotronicBle::on_votronic_ble_data_(const uint8_t &handle, const std::vector<uint8_t> &data) {
if (handle == this->char_photovoltaic_handle_) {
this->decode_photovoltaic_data_(data);
void VotronicBle::on_votronic_ble_data(const uint8_t &handle, const std::vector<uint8_t> &data) {
if (handle == this->char_solar_charger_handle_) {
this->decode_solar_charger_data_(data);
return;
}
if (handle == this->char_battery_handle_) {
this->decode_battery_data_(data);
if (handle == this->char_battery_computer_handle_) {
this->decode_battery_computer_data_(data);
return;
}
ESP_LOGW(TAG, "Unhandled frame received: %s", format_hex_pretty(&data.front(), data.size()).c_str());
ESP_LOGW(TAG, "Your device is probably not supported. Please create an issue here: "
"https://github.com/syssi/esphome-votronic/issues");
ESP_LOGW(TAG, "Please provide the following unhandled message data: %s",
format_hex_pretty(&data.front(), data.size()).c_str());
}
void VotronicBle::decode_battery_data_(const std::vector<uint8_t> &data) {
void VotronicBle::decode_battery_computer_data_(const std::vector<uint8_t> &data) {
if (data.size() != 20) {
ESP_LOGW(TAG, "Invalid frame size: %zu", data.size());
return;
}
const uint32_t now = millis();
if (now - this->last_battery_info_ < this->throttle_) {
if (now - this->last_battery_computer_data_ < this->throttle_) {
return;
}
this->last_battery_info_ = now;
this->last_battery_computer_data_ = now;
this->last_photovoltaic_info_ = now;
auto votronic_get_16bit = [&](size_t i) -> uint16_t {
return (uint16_t(data[i + 1]) << 8) | (uint16_t(data[i + 0]) << 0);
};
ESP_LOGI(TAG, "Battery data frame received");
ESP_LOGD(TAG, " Unknown (Byte 6): %d (0x%02X)", data[6], data[6]);
ESP_LOGD(TAG, " Unknown (Byte 7): %d (0x%02X)", data[7], data[7]);
ESP_LOGD(TAG, " Unknown (Byte 9): %d (0x%02X)", data[9], data[9]);
ESP_LOGD(TAG, " Unknown (Byte 12): %d (0x%02X)", data[12], data[12]);
ESP_LOGD(TAG, " Unknown (Byte 15): %d (0x%02X)", data[15], data[15]);
auto votronic_get_24bit_signed = [&](size_t i) -> int32_t {
uint32_t val = (uint32_t(data[i + 2]) << 16) | (uint32_t(data[i + 1]) << 8) | (uint32_t(data[i + 0]) << 0);
if (val & 0x800000) {
val |= ~0xffffff;
}
return (int32_t) val;
};
ESP_LOGI(TAG, "Battery computer data received");
ESP_LOGD(TAG, " Unknown (Byte 6): %d (0x%02X)", data[6], data[6]);
ESP_LOGD(TAG, " Unknown (Byte 7): %d (0x%02X)", data[7], data[7]);
ESP_LOGD(TAG, " Unknown (Byte 9): %d (0x%02X)", data[9], data[9]);
ESP_LOGD(TAG, " Unknown (Byte 15): %d (0x%02X)", data[15], data[15]);
ESP_LOGD(TAG, " Unknown (Byte 16-17): %d (0x%02X 0x%02X)", votronic_get_16bit(16), data[16], data[17]);
ESP_LOGD(TAG, " Unknown (Byte 18-19): %d (0x%02X 0x%02X)", votronic_get_16bit(18), data[18], data[19]);
this->publish_state_(this->battery_voltage_sensor_, votronic_get_16bit(0) * 0.01f);
float battery_voltage = votronic_get_16bit(0) * 0.01f;
this->publish_state_(this->battery_voltage_sensor_, battery_voltage);
this->publish_state_(this->secondary_battery_voltage_sensor_, votronic_get_16bit(2) * 0.01f);
this->publish_state_(this->battery_capacity_sensor_, (float) votronic_get_16bit(4));
this->publish_state_(this->battery_capacity_remaining_sensor_, (float) votronic_get_16bit(4));
this->publish_state_(this->state_of_charge_sensor_, (float) data[8]);
this->publish_state_(this->current_sensor_, (float) ((int16_t) votronic_get_16bit(10)) * 0.001f);
float current = votronic_get_24bit_signed(10) * 0.001f;
ESP_LOGV(TAG, " Current (raw): 0x%02X%02X%02X (%.3f A)", data[12], data[11], data[10], current);
this->publish_state_(this->current_sensor_, current);
this->publish_state_(this->power_sensor_, current * battery_voltage);
this->publish_state_(this->charging_binary_sensor_, (current > 0.0f));
this->publish_state_(this->discharging_binary_sensor_, (current < 0.0f));
this->publish_state_(this->battery_nominal_capacity_sensor_, votronic_get_16bit(13) * 0.1f);
}
void VotronicBle::decode_photovoltaic_data_(const std::vector<uint8_t> &data) {
void VotronicBle::decode_solar_charger_data_(const std::vector<uint8_t> &data) {
if (data.size() != 19) {
ESP_LOGW(TAG, "Invalid frame size: %zu", data.size());
return;
}
const uint32_t now = millis();
if (now - this->last_photovoltaic_info_ < this->throttle_) {
if (now - this->last_solar_charger_data_ < this->throttle_) {
return;
}
this->last_photovoltaic_info_ = now;
this->last_solar_charger_data_ = now;
auto votronic_get_16bit = [&](size_t i) -> uint16_t {
return (uint16_t(data[i + 1]) << 8) | (uint16_t(data[i + 0]) << 0);
};
ESP_LOGI(TAG, "Photovoltaic data frame received");
ESP_LOGI(TAG, "Solar charger data received");
this->publish_state_(this->battery_voltage_sensor_, votronic_get_16bit(0) * 0.01f);
this->publish_state_(this->pv_voltage_sensor_, votronic_get_16bit(2) * 0.01f);
this->publish_state_(this->pv_current_sensor_, votronic_get_16bit(4) * 0.01f);
this->publish_state_(this->pv_current_sensor_, votronic_get_16bit(4) * 0.1f);
this->publish_state_(this->battery_status_bitmask_sensor_, data[8]);
this->publish_state_(this->controller_status_bitmask_sensor_, data[12]);
// this->publish_state_(this->battery_status_text_sensor_, data[8]);
// this->publish_state_(this->controller_status_text_sensor_, data[12]);
this->publish_state_(this->battery_status_text_sensor_, this->battery_status_bitmask_to_string_(data[8]));
this->publish_state_(this->pv_controller_status_bitmask_sensor_, data[12]);
this->publish_state_(this->pv_controller_status_text_sensor_,
this->solar_charger_status_bitmask_to_string_(data[12]));
this->publish_state_(this->controller_active_binary_sensor_, (data[12] & (1 << 3)));
this->publish_state_(this->current_reduction_binary_sensor_, (data[12] & (1 << 4)));
this->publish_state_(this->aes_active_binary_sensor_, (data[12] & (1 << 5)));
this->publish_state_(this->charged_capacity_sensor_, (float) votronic_get_16bit(13));
this->publish_state_(this->charged_energy_sensor_, votronic_get_16bit(15) * 10.0f);
this->publish_state_(this->pv_power_sensor_, (float) votronic_get_16bit(17));
this->publish_state_(this->pv_power_sensor_, (float) votronic_get_16bit(17) * 0.1f);
ESP_LOGD(TAG, " Unknown (Byte 6): %d (0x%02X)", data[6], data[6]);
ESP_LOGD(TAG, " Unknown (Byte 7): %d (0x%02X)", data[7], data[7]);
ESP_LOGD(TAG, " Unknown (Byte 6): %d (0x%02X)", data[6], data[6]);
ESP_LOGD(TAG, " Unknown (Byte 7): %d (0x%02X)", data[7], data[7]);
ESP_LOGD(TAG, " Battery status bitmask: %d (0x%02X)", data[8], data[8]);
ESP_LOGD(TAG, " Controller status bitmask: %d (0?: Active, 1?: Standby, 2?: Reduce)", data[9]);
ESP_LOGD(TAG, " Unknown (Byte 9): %d (0x%02X)", data[9], data[9]);
ESP_LOGD(TAG, " Unknown (Byte 10): %d (0x%02X)", data[10], data[10]);
ESP_LOGD(TAG, " Unknown (Byte 11): %d (0x%02X)", data[11], data[11]);
// Bit0: Standby, Bit1: Active, Bit2: Reduce
ESP_LOGD(TAG, " Controller status bitmask? (Byte 12): %d (0x%02X) (8/9: Active, 25?: Standby, 2?: Reduce)", data[12],
data[12]);
ESP_LOGD(TAG, " PV power? (Byte 16): %d W? (0x%02X)", data[16], data[16]);
ESP_LOGD(TAG, " PV power? (Byte 17): %d W? (0x%02X)", data[17], data[17]);
ESP_LOGD(TAG, " PV power? (Byte 18): %d W? (0x%02X)", data[18], data[18]);
ESP_LOGD(TAG, " PV power? (Bytes 17-18: %d W", votronic_get_16bit(17));
}
void VotronicBle::dump_config() {
ESP_LOGCONFIG(TAG, "VotronicBle:");
ESP_LOGCONFIG(TAG, " MAC address : %s", this->parent_->address_str().c_str());
ESP_LOGCONFIG(TAG, " Monitoring Service UUID : %s", this->service_monitoring_uuid_.to_string().c_str());
ESP_LOGCONFIG(TAG, " Battery Characteristic UUID : %s", this->char_battery_uuid_.to_string().c_str());
ESP_LOGCONFIG(TAG, " Photovoltaic Characteristic UUID : %s", this->char_photovoltaic_uuid_.to_string().c_str());
ESP_LOGCONFIG(TAG, " Fake traffic enabled: %s", YESNO(this->enable_fake_traffic_));
ESP_LOGCONFIG(TAG, " MAC address : %s", this->parent_->address_str().c_str());
ESP_LOGCONFIG(TAG, " Monitoring Service UUID : %s", this->service_monitoring_uuid_.to_string().c_str());
ESP_LOGCONFIG(TAG, " Battery Computer Characteristic UUID: %s",
this->char_battery_computer_uuid_.to_string().c_str());
ESP_LOGCONFIG(TAG, " Solar Charger Characteristic UUID : %s", this->char_solar_charger_uuid_.to_string().c_str());
LOG_BINARY_SENSOR("", "Charging", this->charging_binary_sensor_);
LOG_BINARY_SENSOR("", "Discharging", this->discharging_binary_sensor_);
LOG_BINARY_SENSOR("", "Controller active", this->controller_active_binary_sensor_);
LOG_BINARY_SENSOR("", "Current reduction", this->current_reduction_binary_sensor_);
LOG_BINARY_SENSOR("", "AES active", this->aes_active_binary_sensor_);
LOG_SENSOR("", "Battery voltage", this->battery_voltage_sensor_);
LOG_SENSOR("", "Secondary battery voltage", this->secondary_battery_voltage_sensor_);
LOG_SENSOR("", "Battery capacity", this->battery_capacity_sensor_);
LOG_SENSOR("", "Battery capacity remaining", this->battery_capacity_remaining_sensor_);
LOG_SENSOR("", "State of charge", this->state_of_charge_sensor_);
LOG_SENSOR("", "Current", this->current_sensor_);
LOG_SENSOR("", "Power", this->power_sensor_);
LOG_SENSOR("", "Battery nominal capacity", this->battery_nominal_capacity_sensor_);
LOG_SENSOR("", "PV voltage", this->pv_voltage_sensor_);
LOG_SENSOR("", "PV current", this->pv_current_sensor_);
LOG_SENSOR("", "PV power", this->pv_power_sensor_);
LOG_SENSOR("", "Battery status bitmask", this->battery_status_bitmask_sensor_);
LOG_SENSOR("", "Controller status bitmask", this->controller_status_bitmask_sensor_);
LOG_SENSOR("", "PV controller status bitmask", this->pv_controller_status_bitmask_sensor_);
LOG_SENSOR("", "Charged capacity", this->charged_capacity_sensor_);
LOG_SENSOR("", "Charged energy", this->charged_energy_sensor_);
LOG_SENSOR("", "PV power", this->pv_power_sensor_);
LOG_TEXT_SENSOR("", "Battery status", this->battery_status_text_sensor_);
LOG_TEXT_SENSOR("", "Controller Status", this->controller_status_text_sensor_);
LOG_TEXT_SENSOR("", "PV controller status", this->pv_controller_status_text_sensor_);
}
void VotronicBle::publish_state_(binary_sensor::BinarySensor *binary_sensor, const bool &state) {
if (binary_sensor == nullptr)
return;
binary_sensor->publish_state(state);
}
void VotronicBle::publish_state_(sensor::Sensor *sensor, float value) {
@@ -239,5 +274,49 @@ void VotronicBle::publish_state_(text_sensor::TextSensor *text_sensor, const std
text_sensor->publish_state(state);
}
std::string VotronicBle::battery_status_bitmask_to_string_(const uint8_t mask) {
if (mask == 0x00) {
return "Standby";
}
if (mask & (1 << 3)) {
return "U3 phase";
}
if (mask & (1 << 2)) {
return "U2 phase";
}
if (mask & (1 << 1)) {
return "U1 phase";
}
if (mask & (1 << 0)) {
return "I phase";
}
return str_snprintf("Unknown (0x%02X)", 15, mask);
}
std::string VotronicBle::solar_charger_status_bitmask_to_string_(const uint8_t mask) {
if (mask == 0x00) {
return "Standby";
}
if (mask & (1 << 5)) {
return "AES active";
}
if (mask & (1 << 4)) {
return "Reduced";
}
if (mask & (1 << 3)) {
return "Active";
}
return str_snprintf("Unknown (0x%02X)", 15, mask);
}
} // namespace votronic_ble
} // namespace esphome

View File

@@ -4,6 +4,7 @@
#include "esphome/core/hal.h"
#include "esphome/components/ble_client/ble_client.h"
#include "esphome/components/esp32_ble_tracker/esp32_ble_tracker.h"
#include "esphome/components/binary_sensor/binary_sensor.h"
#include "esphome/components/sensor/sensor.h"
#include "esphome/components/text_sensor/text_sensor.h"
@@ -24,19 +25,36 @@ class VotronicBle : public esphome::ble_client::BLEClientNode, public PollingCom
void update() override;
float get_setup_priority() const override { return setup_priority::DATA; }
void set_charging_binary_sensor(binary_sensor::BinarySensor *charging_binary_sensor) {
charging_binary_sensor_ = charging_binary_sensor;
}
void set_discharging_binary_sensor(binary_sensor::BinarySensor *discharging_binary_sensor) {
discharging_binary_sensor_ = discharging_binary_sensor;
}
void set_controller_active_binary_sensor(binary_sensor::BinarySensor *controller_active_binary_sensor) {
controller_active_binary_sensor_ = controller_active_binary_sensor;
}
void set_current_reduction_binary_sensor(binary_sensor::BinarySensor *current_reduction_binary_sensor) {
current_reduction_binary_sensor_ = current_reduction_binary_sensor;
}
void set_aes_active_binary_sensor(binary_sensor::BinarySensor *aes_active_binary_sensor) {
aes_active_binary_sensor_ = aes_active_binary_sensor;
}
void set_battery_voltage_sensor(sensor::Sensor *battery_voltage_sensor) {
battery_voltage_sensor_ = battery_voltage_sensor;
}
void set_secondary_battery_voltage_sensor(sensor::Sensor *secondary_battery_voltage_sensor) {
secondary_battery_voltage_sensor_ = secondary_battery_voltage_sensor;
}
void set_battery_capacity_sensor(sensor::Sensor *battery_capacity_sensor) {
battery_capacity_sensor_ = battery_capacity_sensor;
void set_battery_capacity_remaining_sensor(sensor::Sensor *battery_capacity_remaining_sensor) {
battery_capacity_remaining_sensor_ = battery_capacity_remaining_sensor;
}
void set_state_of_charge_sensor(sensor::Sensor *state_of_charge_sensor) {
state_of_charge_sensor_ = state_of_charge_sensor;
}
void set_current_sensor(sensor::Sensor *current_sensor) { current_sensor_ = current_sensor; }
void set_power_sensor(sensor::Sensor *power_sensor) { power_sensor_ = power_sensor; }
void set_battery_nominal_capacity_sensor(sensor::Sensor *battery_nominal_capacity_sensor) {
battery_nominal_capacity_sensor_ = battery_nominal_capacity_sensor;
}
@@ -45,8 +63,8 @@ class VotronicBle : public esphome::ble_client::BLEClientNode, public PollingCom
void set_battery_status_bitmask_sensor(sensor::Sensor *battery_status_bitmask_sensor) {
battery_status_bitmask_sensor_ = battery_status_bitmask_sensor;
}
void set_controller_status_bitmask_sensor(sensor::Sensor *controller_status_bitmask_sensor) {
controller_status_bitmask_sensor_ = controller_status_bitmask_sensor;
void set_pv_controller_status_bitmask_sensor(sensor::Sensor *pv_controller_status_bitmask_sensor) {
pv_controller_status_bitmask_sensor_ = pv_controller_status_bitmask_sensor;
}
void set_charged_capacity_sensor(sensor::Sensor *charged_capacity_sensor) {
charged_capacity_sensor_ = charged_capacity_sensor;
@@ -59,37 +77,43 @@ class VotronicBle : public esphome::ble_client::BLEClientNode, public PollingCom
void set_battery_status_text_sensor(text_sensor::TextSensor *battery_status_text_sensor) {
battery_status_text_sensor_ = battery_status_text_sensor;
}
void set_controller_status_text_sensor(text_sensor::TextSensor *controller_status_text_sensor) {
controller_status_text_sensor_ = controller_status_text_sensor;
void set_pv_controller_status_text_sensor(text_sensor::TextSensor *pv_controller_status_text_sensor) {
pv_controller_status_text_sensor_ = pv_controller_status_text_sensor;
}
void set_throttle(uint16_t throttle) { this->throttle_ = throttle; }
void set_enable_fake_traffic(bool enable_fake_traffic) { enable_fake_traffic_ = enable_fake_traffic; }
void on_votronic_ble_data(const uint8_t &handle, const std::vector<uint8_t> &data);
void set_throttle(uint32_t throttle) { this->throttle_ = throttle; }
protected:
binary_sensor::BinarySensor *charging_binary_sensor_;
binary_sensor::BinarySensor *discharging_binary_sensor_;
binary_sensor::BinarySensor *controller_active_binary_sensor_;
binary_sensor::BinarySensor *current_reduction_binary_sensor_;
binary_sensor::BinarySensor *aes_active_binary_sensor_;
sensor::Sensor *battery_voltage_sensor_;
sensor::Sensor *secondary_battery_voltage_sensor_;
sensor::Sensor *battery_capacity_sensor_;
sensor::Sensor *battery_capacity_remaining_sensor_;
sensor::Sensor *state_of_charge_sensor_;
sensor::Sensor *current_sensor_;
sensor::Sensor *power_sensor_;
sensor::Sensor *battery_nominal_capacity_sensor_;
sensor::Sensor *pv_voltage_sensor_;
sensor::Sensor *pv_current_sensor_;
sensor::Sensor *battery_status_bitmask_sensor_;
sensor::Sensor *controller_status_bitmask_sensor_;
sensor::Sensor *pv_controller_status_bitmask_sensor_;
sensor::Sensor *charged_capacity_sensor_;
sensor::Sensor *charged_energy_sensor_;
sensor::Sensor *pv_power_sensor_;
text_sensor::TextSensor *battery_status_text_sensor_;
text_sensor::TextSensor *controller_status_text_sensor_;
text_sensor::TextSensor *pv_controller_status_text_sensor_;
uint16_t char_battery_handle_;
uint16_t char_photovoltaic_handle_;
uint32_t last_battery_info_{0};
uint32_t last_photovoltaic_info_{0};
uint16_t throttle_;
bool enable_fake_traffic_;
uint16_t char_battery_computer_handle_{0x22};
uint16_t char_solar_charger_handle_{0x25};
uint32_t last_battery_computer_data_{0};
uint32_t last_solar_charger_data_{0};
uint32_t throttle_;
esp32_ble_tracker::ESPBTUUID service_bond_uuid_ =
esp32_ble_tracker::ESPBTUUID::from_raw("70521e61-022d-f899-d046-4885a76acbd0");
@@ -98,9 +122,9 @@ class VotronicBle : public esphome::ble_client::BLEClientNode, public PollingCom
esp32_ble_tracker::ESPBTUUID service_log_data_uuid_ =
esp32_ble_tracker::ESPBTUUID::from_raw("ae64a924-1184-4554-8bbc-295db9f2324a");
esp32_ble_tracker::ESPBTUUID char_battery_uuid_ =
esp32_ble_tracker::ESPBTUUID char_battery_computer_uuid_ =
esp32_ble_tracker::ESPBTUUID::from_raw("9a082a4e-5bcc-4b1d-9958-a97cfccfa5ec");
esp32_ble_tracker::ESPBTUUID char_photovoltaic_uuid_ =
esp32_ble_tracker::ESPBTUUID char_solar_charger_uuid_ =
esp32_ble_tracker::ESPBTUUID::from_raw("971ccec2-521d-42fd-b570-cf46fe5ceb65");
esp32_ble_tracker::ESPBTUUID char_management_uuid_ =
@@ -108,11 +132,13 @@ class VotronicBle : public esphome::ble_client::BLEClientNode, public PollingCom
esp32_ble_tracker::ESPBTUUID char_bulk_data_uuid_ =
esp32_ble_tracker::ESPBTUUID::from_raw("b8a37ffe-c57b-4007-b3c1-ca05a6b7f0c6");
void on_votronic_ble_data_(const uint8_t &handle, const std::vector<uint8_t> &data);
void decode_photovoltaic_data_(const std::vector<uint8_t> &data);
void decode_battery_data_(const std::vector<uint8_t> &data);
void decode_solar_charger_data_(const std::vector<uint8_t> &data);
void decode_battery_computer_data_(const std::vector<uint8_t> &data);
void publish_state_(binary_sensor::BinarySensor *binary_sensor, const bool &state);
void publish_state_(sensor::Sensor *sensor, float value);
void publish_state_(text_sensor::TextSensor *text_sensor, const std::string &state);
std::string battery_status_bitmask_to_string_(uint8_t mask);
std::string solar_charger_status_bitmask_to_string_(uint8_t mask);
};
} // namespace votronic_ble

Binary file not shown.

View File

@@ -1,170 +0,0 @@
E8.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
E8.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
E8.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
E6.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
E6.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.82.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.82.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.82.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.82.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.82.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.82.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.82.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.82.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.82.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.82.FE.FF.F0.0A.5E.14.54.02.04
ED.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
ED.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
E8.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
E8.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.82.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.82.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.82.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.82.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.CA.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.CA.FE.FF.F0.0A.5E.14.54.02.04
E8.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
E8.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.82.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.82.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.82.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.82.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.82.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.82.FE.FF.F0.0A.5E.14.54.02.04
E8.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
E8.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BD.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BD.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BD.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BD.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
E8.04.BD.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
E8.04.BD.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
E6.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
E6.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
ED.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
ED.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
E8.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
E8.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
E6.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
E6.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
E8.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
E8.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.82.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.82.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.CA.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.CA.FE.FF.F0.0A.5E.14.54.02.04
E8.04.BF.04.09.01.60.00.5F.00.82.FE.FF.F0.0A.5E.14.54.02.04
E8.04.BF.04.09.01.60.00.5F.00.82.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.82.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.82.FE.FF.F0.0A.5E.14.54.02.04
EA.04.C3.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
EA.04.C3.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
E8.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
E8.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.82.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.82.FE.FF.F0.0A.5E.14.54.02.04
E6.04.BF.04.09.01.60.00.5F.00.82.FE.FF.F0.0A.5E.14.54.02.04
E6.04.BF.04.09.01.60.00.5F.00.82.FE.FF.F0.0A.5E.14.54.02.04
EA.04.C3.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
EA.04.C3.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.CA.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.CA.FE.FF.F0.0A.5E.14.54.02.04
E8.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
E8.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.C3.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.C3.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
E8.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
E8.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04

View File

@@ -0,0 +1,20 @@
0 Battery voltage: 2D 2D 2C 2C 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2C 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2C 2C 2D 2D 2D 2D 2D 2C 2D 2D 2D 2D 2D 2D 2D 2D 2C 2C 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2C 2D 2D 2D 2D 2D 2C 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2C 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2C 2D 2D 2C 2C 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 1C 18 18 1C 18 18 18 18 18 15 18 15 18 15 18 15 15 18 15 18 15 18 15 15 18 15 15 15 0A 0A 03 0A 06 0A 0A 06 0A 06 06 06 06 06 06 0A 03 06 06 06 0A 06 0A 06 06 06 0A 06 0A 06 04 04 04 06 03 06 03 0A 04 06 06 06 03 06 04 06 03 06 06 04 06 06 06 04 03 0A 03 06 06 04 03 06 03 06 03 06 03 04 03 06 06 03 06 04 06 03 06 06 03 06 04 06 06 03 04 06 03 06 03 04 03 03 06 03 03 06 03 03 06 03 06 03 06 03 06 03 06 03 04 03 03 03 03 06 03 06 03 03 03 03 06 03 03 03 06 03 06 03 06 03 03 03 06 03 03 03 03 06 03 06 03 03 03 06 03 03 03 06 03 06 03 03 06 03 03 03 03 03 06 03 06 03 06 03 03 06 06 03 03 06 03 06 03 03 03 06 03 03 03 03 06 03 06 03 03 03 03 06 03 03 06 03 03 03 06 03 03 FF 06 03 03 03 03 06 06 03 03 03 06 03 03 03 03 FF 03 03 03 06 03 06 FF 03 03 01 01 FF 03 FF 01 03 FF 03 FF 03 01 01 03 03 FF 01 01 01 03 FF 03 03 03 01 03 03 03 FF 01 03 03 03 FF 01 01 01 FF 03 03 01 01 03 03 06 01 01 06 FF 01 01 FF 06 01 FF 03 03 FF 01 FF 03 03 01 01 03 FF FF 03 FF 01 01 01 FF 03 FF 01 01 FF 03 FF 03 01 01 FF 03 03 03 01 03 FF 03 03 FF 03 01 03 FF FF 01 FF FF 03 FF 01 03 FF 03 03 FF 01 FF 03 FF 01 FF FF 03 FF 01 FF FF FF 03 FF 03 FF FF 03 FF 03 FF FF 03 03 FF 03 FF FF FF 03 FF 03 FF FF 03 FC FF 03 FF FF FF FC FF FF FF 03 FF 03 03 FF 03 FF FF 03 FC 03 FF FF 03 FF 03 03 FF FF 03 FF FF 03 FF 03 FF FC FF FC FF FF FD 03 FF FF FD FD FC FF 03 FF FF FF FD FF FF 03 FF FF FD FC 03 FF FF FF FF FD FC FC FC FF FD FD FD FC 03 FC FD FD FC FC FF FC FD FD FF FC FF FD 03 FF FF FC FF FD FF FC 03 FC FF FD FC FF FF FC FF FC FC FF FC FF FC FD FF FC FF FD FC FF FC FF FD FC FC FC FF FC FC FF FC FC FC FF F8 FF FC FC FC FF FC FC FC FF FC FF FC FC FF FC FC FC FC FF FF FF FC FC FC F8 FF FC FC FC F8 FC FC FC FC FC FC FC FC FF F8 FC FC F8 FF F8 FC FC FC FF FF FC FF FC FA FC FC FC FC FA FA FC F8 FC F8 FA FC F8 FC F8 FA FA FA FC FC FF F8 FA F8 F8 FC FC FA FA FA FC FC FC F8 FC FA FC FC F8 FC FC FC FA F8 FC F8 FC F8 FA FA FC F8 FC FA FA F8 FC F8 FC FA FC FC F8 F8 F8 F8 F8 FC FC F8 F8 FA FC F8 FC F8 FC F8 FA F8 FC F8 F8 FA F8 F8 FC F8 FC F8 F8 FC F8 F8 FA F8 FC F8 FC FC F8 F8 F8 F8 FC F8 FC F8 FC F8 FC F8 FC F8 F8 FC FC F8 F8 F8 FC F8 F8 FC F8 F8 F8 F8 F4 FC F8 F8 FC F8 F8 FC F8 F8 F8 FC F8 F4 F8 F8 F8 F8 FC F4 FC F8 F8 FC F4 F8 F8 F8 F8 F8 F8 F4 FC F4 F8 F8 FC F8 F4 F8 FC F8 F4 FC F6 F6 F6 F4 F8 F8 F6 F6 F8 F4 FC F8 F6 F6 F6 F8 F4 F8 FC F6 F4 FC F8 F8 F8 F6 FC F8 F8 F8 F8 F6 F6 F4 FC F4 F8 F6 F6 F8 F8 F4 F8 F6 F8 F4 F8 F6 F6 F4 F8 F4 F8 F8 F4 F6 F8 F4 F8 F8 F6 F8 F4 F8 F8 F6 F8 F8 F4 F8 F4 F6 F8 F8 F4 F8 F6 F8 F4 FC F4 F6 F6 FC F8 F8 F6 F8 F8 F4 F4 F8 F6 F6 F4 F8 F8 F4 F8 F4 F6 F8 F8 F4 F8 F6 F6 F4 F8 F8 F6
1 Battery voltage: 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 04 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 04 05 05 05 05 05 05 04 05 05 05 05 04 05 04 05 05 04 05 04 05 05 05 05 05 04 05 05 05 05 04 05 05 05 05 05 05 05 04 05 05 05 05 04 05 05 05 04 05 05 05 05 05 05 05 05 05 05 04 05 05 04 05 05 04 05 05 04 05 04 05 05 05 05 05 04 04 05 04 05 05 05 04 05 04 05 05 04 05 04 05 05 05 04 05 05 05 05 05 04 05 05 04 05 05 05 04 04 05 04 04 05 04 05 05 04 05 05 04 05 04 05 04 05 04 04 05 04 05 04 04 04 05 04 05 04 04 05 04 05 04 04 05 05 04 05 04 04 04 05 04 05 04 04 05 04 04 05 04 04 04 04 04 04 04 05 04 05 05 04 05 04 04 05 04 05 04 04 05 04 05 05 04 04 05 04 04 05 04 05 04 04 04 04 04 04 04 05 04 04 04 04 04 04 05 04 04 04 04 04 04 05 04 04 04 04 05 04 04 04 04 04 04 04 04 04 04 04 04 04 05 04 04 04 04 04 04 04 04 04 04 04 04 04 05 04 04 04 04 04 04 04 05 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
2 Secondary battery voltage: BC BD BD BD BF BF BF BD BD BF BD BD BF BF BF BD BF BF BF BD BF BF BF BF BD BD BF BF BF BF BF BF BF BF BF BD BF BF BF BF BF BF BF BD BD BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BD BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF C3 BF BF BF BF BF BF C3 BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF C3 BF BF C3 C3 BF BF BF BF BF BF BF BF BF BF BF C3 BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF C3 BF BF BF C3 BF BF BF BF BF C3 BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BC BC BC BC BC BC BC BC BC BC BC BC BC BC BC BC BC BC BC BC BC BC BC BC BC BC BA BA B8 B8 BC B8 B8 B8 B8 B8 B8 BC B8 B8 B8 B8 B8 B8 B8 B8 BA B8 B8 BC BC BC B8 BA B8 BC B8 B8 BC BC BA BC BC BC BC B8 BC BC BC BC BC BC BC BC BC BC BC BC BC BC BC BA BA BC BC BC BC BC BC BC BC BC BC BC BC BC BC BC BC BC BC BC BC BC BC BC BC BC BC BC BC BC BC BC BC BC BC BA BA BC BC BC BC BC BC BC BC BC BC BC BC BC BC BC BC BC BC BF BF BC BC BF BC BC BC BC BC BC BF BC BC BC BC BC BF BC BC BD BC BF BF BF BD BC BF BF BF BC BD BF BF BF BF BD BF BF BF BF BF BD BF BF BF BD BD BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF C3 BF BF BF BF BF BF BF C3 BF C3 BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF C3 C3 BF BF C3 BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF C3 BF BF BF C3 BF BF C3 BF BF BF C3 C3 BF BF BF C3 BF C3 BF BF BF BF C3 BF BF BF BF BF C3 C3 C3 BF C3 BF BF C3 C3 C3 BF BF BF BF C3 C3 BF BF BF BF C3 C3 C3 BF BF C3 BF BF BF BF BF C3 BF BF C3 BF C1 BF C3 C3 BF BF BF BF BF BF BF BF BF BF C3 BF BF BF BF C3 C3 C3 C1 BF BF BF BF C3 BF BF BF C3 BF BF C3 BF BF BF BF C1 BF C3 BF C3 C3 C1 C1 C1 C3 C3 C3 C3 C1 C3 C3 BF C3 C1 C3 C3 C3 BF C1 BF BF BF C1 BF BF C3 BF C3 BF C3 C3 C3 C3 C1 C3 C3 BF BF C3 BF C1 C3 BF BF C3 BF C1 C3 BF C3 BF C3 C1 C1 C3 BF BF BF C1 C1 C3 BF BF C1 C1 C1 BF C3 BF BF C1 BF C3 C3 C3 BF C1 BF BF C3 BF C3 C1 C1 BF C3 C3 C1 C1 C1 C3 BF C3 BF BF C1 BF BF C3 C3 BF C3 C1 BF BF BF C3 C3 BF C1 C3 C3 BF C1 BF C3 C3 C3 BF C1 BF C3 C3 C1 C1 C1 BF C3 C3 C3 C3 C1 BF BF BF C3 C3 C1 C1 C3 C3 BF BF C1 C1 BF C3 BF C3 C1 C1 BF BF C3 C1 BF C3 C3 BF C3 C1 C1 C3 BF C3 C3 BF C1 C3 BF BF BF BF C1 BF C3 C3 C3 C1 C1 BF C3 BF C3 C1 C1 C1 C3 BF BF C3 C1 C3 C3 C3 C3 C1 C1 C3 BF C3 C3 C1 C1 C1 C1 C3 BF C3 BF C1 C3 C3 C3 C3 C1 C1 BF BF C3 BF C3 C3 C1 C3 C3 C3 C3 C3 BF C3 BF C1 C1 C1 C3 C3 C3 C1 C1 C3 BF BF C3 C1 C1 C1 C3 C3 C3 C3 C1 C3 BF C3 C3 BF C1 BF BF BF C3 C3 C1 C1 C3 BF C3 BF C1 C1 C3 C3 BF C3 C1 C3 C3 BF C1 C1 C3 C3 BF C3 BF C3 C1 C3 C3 C3 BF C1 C3 C3 C3 C3 C1 C3 C3 C3 BF C3 C1 BF C3 C3 C3 C1 BF C3 C3 C3 C1 C1 BF C3 C3 C1 BF C3 C3 BF C3 C1 C1 C1 C3 C3 BF C3 C3 C1 C3 C3 C3 C3 C1 C1 C3 C3 BF C1
3 Secondary battery voltage: 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
4 Battery capacity: 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 16 16 16 16 16 16 16 16 16 16 16 16 16 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED EA EA EA EA EA EA EA EA EA EA EA EA EA EA EA EA EA EA EA EA EA EA EA EA EA EA E7 E7 E7 E7 E7 E7 E7 E7 E7 E7 E7 E7 E7 E7 E7 E7 E7 E7 E7 E7 E7 E7 E7 E7 E7 E7 E7 E7 E7 E7 E4 E4 E4 E4 E4 E4 E4 E4 E4 E4 E4 E4 E4 E4 E4 E4 E4 E4 E4 E4 E4 E4 E4 E4 E4 E4 E4 E4 E4 E4 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 DE DE DE DE DE DE DE DE DE DE DE DE DE DE DE DE DE DE DE DE DE DE DE DE DE DE DE DE DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB D8 D8 D8 D8 D8 D8 D8 D8 D8 D8 D8 D8 D8 D8 D8 D8 D8 D8 D7 D7 D7 D7 D5 D5 D5 D5 D5 D5 D5 D5 D5 D5 D5 D5 D5 D5 D5 D5 D5 D5 D5 D5 D5 D5 D5 D5 D5 D5 D4 D4 D4 D4 D4 D4 D4 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D1 D1 D1 D1 D1 D1 D1 D1 D1 D1 D1 D1 D1 D1 D1 D1 D1 CF CF CF CF CF CF CF CF CF CF CF CF CF CF CE CE CE CE CE CE CE CE CE CE CE CE CE CE CE CE CE CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB C8 C8 C8 C8 C8 C8 C8 C8 C8 C8 C8 C8 C8 C8 C8 C8 C8 C8 C8 C8 C8 C8 C8 C8 C8 C8 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB B7 B7 B7 B7 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6
5 Battery capacity: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
6 Unknown: 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60
7 Unknown: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
8 State of charge: 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5D 5D 5D 5D 5D 5D 5D 5D 5D 5D 5D 5D 5D 5D 5D 5D 5D 5D 5D 5D 5D 5D 5D 5D 5D 5D 5D 5D 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5B 5B 5B 5B 5B 5B 5B 5B 5B 5B 5B 5B 5B 5B 5B 5B 5B 5B 5B 5B 5B 5B 5B 5B 5B 5B 5B 5B 5B 5B 5A 5A 5A 5A 5A 5A 5A 5A 5A 5A 5A 5A 5A 5A 5A 5A 5A 5A 5A 5A 5A 5A 5A 5A 5A 5A 5A 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 53 53 53 53 53 53 53 53 53 53 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 48 48 48 48 48 48 48 48 48 48 48 48 48 48 47 47 47 47 47 47 47 47 47 47 47 47 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 44 44 44 44 44 44 44 44 44 44 44 44 44 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41
9 Unknown: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
10 Current: 3A 52 22 0B 0B 22 3A 3A 22 52 52 22 3A 22 3A 52 6A 82 6A 6A 0B 22 0B 3A 52 6A 6A 52 22 3A 22 3A 6A 52 22 22 0B 22 3A 82 3A 52 3A 3A 52 52 3A 22 0B 22 3A 52 52 52 3A 6A 82 6A 52 3A 52 82 6A 52 3A 22 6A 3A 52 3A 52 6A 82 52 82 6A 52 3A 52 6A 82 52 3A 52 3A 52 82 6A 52 6A 52 6A 82 52 3A 52 82 6A 82 52 6A 3A 52 82 52 52 6A 52 6A 82 6A 52 3A 6A 82 22 3A 3A 22 82 52 52 3A 3A 52 6A 82 6A 82 52 6A 3A 52 22 3A 6A 52 3A 22 0B 22 3A 3A 6A 82 6A 22 52 6A 6A 52 3A 22 3A 22 3A 52 6A 52 3A 22 3A 82 52 6A 52 22 52 3A 22 3A 22 0B 22 6A 52 3A 22 3A 6A 82 6A 52 52 3A 52 52 6A 9A 82 6A 82 52 3A 6A 22 52 82 6A 6A 6A 52 6A 82 52 3A 52 82 6A 82 52 3A 52 52 82 6A 52 6A 82 6A 52 52 52 3A 6A 6A 6A 82 6A 52 6A 52 3A 52 82 6A 52 52 52 3A 6A 82 82 3A 52 6A 82 6A 3A 52 3A 52 6A 82 6A 52 6A 3A 52 82 6A 52 3A 52 82 3A 52 7A E3 05 05 9F 50 D2 24 D5 6F 6F C0 5A 5A 0B 0B 75 75 3E 3E F3 F3 F3 EC EC 56 E2 BC 2F 77 2F 2F 5F 5F 8F 47 47 2F 2F E7 47 E7 CF CF 17 E7 E7 47 47 E7 E7 88 A0 A0 88 88 88 B8 EB 73 EB 8B 8B 73 73 D3 A3 5B A3 D3 D3 8B BB A3 43 43 8B 8B 43 8B 5B 43 BB BB 5B 5B 73 BB 1E 65 65 65 65 65 06 65 D6 D6 EE EE 4D 4D 06 06 06 4D 4D 06 35 1E D6 1E EE E7 E7 E7 2F 46 E7 17 FF FF B7 B7 E7 17 CF CF 17 17 FF FF 17 E7 E7 E7 E7 57 28 28 6F 6F 28 28 40 6F F8 28 40 40 57 10 6F 10 40 40 6F 10 28 40 40 F8 F8 40 40 10 10 6F 21 21 39 39 F1 09 09 09 09 68 68 51 80 80 39 39 09 09 21 21 68 68 68 21 80 80 F1 09 91 C1 C1 C1 79 32 4A 4A A9 62 91 A9 A9 62 62 79 91 62 4A 4A A9 62 A9 A9 62 4A 02 02 D2 D2 4A 02 4A 32 D2 D2 1A 1A D2 32 32 02 1A 4A EA EA D2 1A D2 1A 1A 32 32 D2 02 8A 72 72 BA 8A 5B BA BA 72 72 5B EA 8A 8A BA 02 8A 43 BA 72 72 72 5B D2 72 A2 D2 13 13 13 FB 5B 43 FB 72 5B E3 E3 43 2B 2B 5B 5B 43 13 13 2B 2B 5B 2B 5B 5B 5B CB 2B E3 B3 FB B3 83 83 E3 E3 CB E3 E3 B3 B3 CB E3 FB 9B 9B E3 B3 83 FB FB B3 B3 E3 CB 54 DC 24 3C 24 0C 3C 3C 3C F4 F4 3C DC DC 24 0C 54 54 0C 0C 3C 54 24 24 54 54 54 0C 3C 3C 24 3C F4 3C 3C 6C 6C 3C C4 F4 0C 0C 54 54 3C 3C C4 C4 94 F4 AC F4 F4 24 0C C4 7D 94 94 DC DC 94 65 4D C4 65 65 65 C4 C4 C4 AC DC DC 7D 7D 35 AC C4 65 7D 4D 4D 65 4D 7D C4 C4 65 65 4D 94 ED ED 05 4D 4D 35 35 35 35 1D 1D 4D 7D 65 65 05 05 35 ED ED ED 4D 4D 4D 1D 4D 4D 1D 1D 1D 1D 1D 1D 1D 35 35 65 05 4D 4D 35 35 1D BD BD 05 05 ED ED 1D 1D BD BD ED 35 D5 1D 1D D5 D5 35 ED A5 A5 ED 1D ED ED 1D 1D ED ED A5 76 46 46 BD D5 BD BD ED ED 8E 76 A5 46 76 5E 5E A5 A5 8E 8E BD 5E 46 5E 5E 8E 8E 46 2E 16 16 16 CE FE E6 E6 76 76 5E 76 76 2E 16 16 E6 E6 2E 46 FE 76 46 46 16 5E 5E B6 87 87 E6 CE B6 CE CE 2E 2E E6 16 16 16 B6 B6 B6 FE 9F 9F E6 E6 FE CE 2E 2E FE FE B6 46 B6 B6 B6 16 16 CE 9F 57 B6 B6 CE CE FE FE B6 9F FE E6 87 87 9F 9F 9F 87 FE FE CE 87 87 3F 9F 87 87 6F 6F CE 9F 6F B6 B6 9F 9F 57 B6 6F 6F 27 27 57 9F 87 87 CE 9F 57 9F 9F 3F 3F 57 9F 0F 0F F7 F7 27 DF 27 27 0F 0F C7 F7 6F 0F 27 27 57 0F 0F 0F 27 27 C7 C7 F7 F7 C7 C7 F7 6F F7 F7 57 57 DF B0 B0 B0 B0 68 0F DF B0 B0 0F 0F 0F 0F C7 DF 80 80 80 DF 98 98 DF 27 27 DF 0F 0F F7 80 DF B0 C7 80 80 DF DF DF 98 C7 80 68 C7 80 80 B0 B0 DF 98 80 38 98 98 80 80 C7 B0 B0 C7 C7 50 98 68 68 38 38 98 98 98 98 80 98 98 38 38 20 20 08 50 68 F0 F0 08 20 F0 80 80 38 38 08 20 50 C1 20 20 20 D8 D8 68 20 20 F0 38 08 08 08 C1 C1 08 08 50 50 80 80 08 F0 50 50 F0 F0 20 08 68 68 50 08 80 F0 F0 D8 D8 D8 20 D8 D8 38 38 38 D8 38 38 D8 A9 A9 A9 C1 C1 F0 F0 08 08 08 08 D8 D8 D8 91 91 F0 F0 C1 08 08 F0 20 91 C1 A9 A9 61 F0 C1 91 91 C1 C1 C1 C1 D8 D8 91 91 79 79 91 91 A9 08 C1
11 Current: FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE 95 93 92 92 90 8F 8D 8C 8A 89 89 87 86 86 85 85 83 83 82 82 84 84 84 83 83 82 7E 7C 45 45 45 45 45 45 45 45 45 45 45 44 45 44 44 44 45 44 44 45 45 44 44 44 44 44 44 44 44 44 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 3F 3F 3F 3F 3F 3F 3F 3F 3E 3E 3E 3E 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3E 3F 3E 3D 3D 3D 3E 3E 3D 3E 3D 3D 3D 3D 3D 3E 3D 3D 3E 3E 3D 3D 3E 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3C 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3C 3C 3D 3D 3D 3D 3D 3C 3C 3C 3C 3B 3C 3C 3C 3C 3C 3C 3C 3C 3C 3C 3C 3C 3C 3C 3C 3C 3C 3C 3C 3C 3C 3B 3C 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3A 3A 3B 3B 3B 3B 3A 3A 3B 3B 3A 3B 3B 3B 3B 3B 3A 3A 3A 3B 3A 3B 3B 3B 3B 3A 3B 3A 3A 3A 3A 3A 3A 3A 3A 3A 3A 3A 3A 3A 3A 3A 3B 3A 3A 3A 3A 3A 3A 3A 3A 3A 3A 3A 3A 3A 3A 39 3A 3A 39 3A 3A 39 39 3A 3A 3A 3A 3A 3A 3A 3A 3A 3A 3A 3A 3A 3A 3A 39 3A 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 38 39 39 39 39 39 39 39 38 38 39 38 38 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 38 39 39 39 39 39 38 38 39 39 39 39 39 39 38 38 38 38 38 38 38 39 39 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 37 37 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 37 37 37 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 37 37 38 38 37 37 38 38 37 37 37 38 37 38 38 37 37 38 37 37 37 37 38 37 37 38 38 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 36 36 36 36 37 37 37 37 37 37 37 37 36 36 37 37 36 37 37 37 37 37 37 36 36 36 36 36 36 36 36 37 37 36 37 37 37 36 36 36 36 36 36 36 36 36 36 37 37 36 36 36 37 36 36 36 37 37 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 35 35 36 35 36 36 36 36 35 35 36 36 36 36 36 36 36 36 36 36 35 35 35 35 35 35 35 36 35 35 36 36 35 35 35 35 35 35 36 35 35 35 36 36 36 36 35 35 35 35 35 35 35 35 35 36 36 35 36 36 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 34 34 35 35 34 35 35 35 35 35 35 35 34 35 35 35 34 34 35 35 35 34 35 35 35 35 34 34 35 35 35 35 35 35 35 34 35 35 34 34 35 35 35 35 35 35 35 34 34 34 34 34 35 34 34 35 35 35 34 35 35 34 34 34 34 34 34 34 34 35 35 35 35 34 34 34 34 34 34 34 34 35 35 34 35 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 35 34
12 Current: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
13 Battery nominal capacity: F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0
14 Battery nominal capacity: 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A
15 Unknown: 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E
16 Unknown: 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14
17 Unknown: 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54
18 Unknown: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
19 Unknown: 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,20 @@
0 Battery voltage: 4A 46 48 46 46 4A 48 46 4A 4A 4A 48 4A 46 4A 4A 48 4A 4A 48 4E 4A 46 48 48 46 4A 46 4A 46 48 4A 46 4A 46 4A 48 4A 46 4A 46 4A 4A 46 4A 46 48 46 48 48 4A 46 4A 46 4A 48 4A 4A 46 48 46 4A 48 4A 4A 48 48 4A 46 4A 48 46 4A 48 48 46 4A 4A 48 4A 4A 46 4A 48 48 4A 46 4A 4A 48 4A 4A 4E 46 48 48 48 46 4A 4A 4A 48 4A 46 48 4A 4A 4A 4A 55 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4E 4A 4A 4A 4E 4A 4A 4A 4A 4A 4C 4A 4A 4E 4A 4E 4C 4A 4E 4E 4A 4A 4A 4E 4E 4A 4A 4A 4A 4E 4E 4A 4E 4A 4E 4E 4A 4E 4A 4E 4A 4A 4C 4A 4A 4E 4A 4A 4E 4E 4C 4E 4A 4E 4E 4C 4E 4E 4E 4E 4C 4A 4E 4E 4A 4E 4C 4A 4E 4A 4E 4A 4C 4C 4C 4C 4C 4E 4A 4E 4C 4E 4E 4A 4E 4E 4E 4E 4A 4C 51 4E 4E 4E 4C 4E 4E 51 4E 4C 4C 4E 4E 55 51 4E 51 4E 4E 51 51 4E 4E 51 4E 4E 4E 4F 4E 51 4E 51 4F 4F 4E 51 4E 4F 4E 4E 51 4E 51 4F 51 4E 4E 51 51 4F 4F 51 51 4E 4F 4F 51 51 51 4F 4F 51 4E 4E 4F 51 51 51 4F 51 4E 51 51 4F 51 51 55 51 51 51 51 55 51 55 51 51 51 51 51 51 55 51 51 55 51 51 51 55 51 51 53 51 55 51 51 53 53 53 55 51 51 55 51 51 55 55 55 55 55 55 53 55 53 53 51 51 51 55 53 53 51 55 55 55 53 53 53 55 55 53 55 58 55 55 55 55 58 51 55 53 55 58 53 55 53 55 55 55 55 58 55 58 55 55 55 55 55 58 55 55 55 55 55 58 55 58 55 55 55 58 55 58 55 56 55 58 55 55 55 56 55 58 55 58 55 55 56 58 58 55 55 58 58 56 58 55 55 56 56 58 58 55 58 55 53 55 55 51 51 55 58 51 56 55 55 58 58 55 55 58 55 58 53 53 55 55 58 55 55 58 55 55 55 55 58 55 58 55 55 55 58 51 55 55 56 58 55 58 55 56 56 56 58 58 58 55 56 58 58 58 55 56 55 58 55 58 56 55 58 58 55 58 56 58 58 58 56 58 56 56 55 58 58 56 56 58 58 5C 58 56 55 58 55 58 56 58 55 58 58 5C 56 58 58 55 56 55 56 58 56 55 55 58 58 55 55 56 58 55 58 55 55 55 58 55 58 58 55 55 55 55 55 58 55 58 55 58 55 58 55 58 56 56 58 58 56 55 55 53 58 55 58 55 56 58 55 58 56 56 58 55 58 55 58 56 55 58 55 55 58 56 58 58 55 56 58 55 58 56 58 55 58 55 56 56 55 55 58 56 56 58 55 58 56 58 58 58 56 58 58 5C 58 58 58 56 58 56 56 5C 55 55 58 58 56 56 58 58 58 58 5C 58 56 56 58 5C 58 56 58 56 58 58 58 58 56 58 56 55 55 55 56 56 58 55 56 55 58 55 56 55 55 56 58 58 58 58 56 55 55 51 55 56 58 58 56 56 58 58 58 56 56 55 58 58 56 58 58 55 58 58 58 58 56 58 55 58 58 58 58 55 58 58 58 5C 5C 5C 58 58 58 58 58 58 5C 58 58 58 58 58 5C 58 58 58 58 58 5C 58 58 58 58 58 5C 58 5C 58 5C 5C 58 58 5C 55 58 58 58 5C 58 5C 58 58 56 58 58 58 58 58 5C 58 58 5C 5C 58 58 58 58 58 56 58 55 58 56 58 58 58 58 5C 5C 58 5C 58 58 58 58 58 56 56 58 5C 58 5C 58 5C 58 5C 58 5C 58 5A 58 5C 58 58 58 58 55 58 56 58 58 58 58 58 58 58 58 58 58 5C 58 58 5C 58 5C 58 58 58 5C 58 5C 5C 58 55 58 58 5C 58 58 5C 5A 58 5C 5C 58 5C 5A 5A 5A 5C 5C 58 5A 5C 58 5C 5C 5C 5C 5A 5C 58 5C 5A 5A 58 5C 58 5C 5A 58 5C 5C 5A 5A 58 5C 5C 5A 5A 58 5C 58 5A 5A 5C 58 5C 58 5C 58 5C 5C 58 5C 5C 58 5A 5A 5C 58 5C 5C 5A 5A 5C 5C 5C 5A 5A 58 5C 5C 58 5A 58 5C 58 58 5A 58 58 58 5C 5C 5A 58 5C 58 5A 5C 5C 58 58 5C 5C 58 58 58 5A 5C 58 58 5A 5C 5C 5A 58 58 58 5C 58 58 58 58 58 58 5A 5C 58 5C 5C 58 5A 5C 5C 5C 5A 5A 5A 5C 5C 5C 5C 5A 5A 5A 5A 5C 5C 58 58 5A 58 5C 5C 5C 5C 58 5C 58 5C 5A 5C 5C 5C 5A 5A 5A 5C 5C 58 5A 5A 5C 58 5A 5A 5C 5C 58 5C 5A 5C 5C 5C 5A 5C 5C 5C 5A 58 5F 5C 58 58 5A 5A 5A 5C 5C 5A 5A 5C 5C 5C 5C 5A 5C 5C 5C 5C 5A 5C 58 5C 5C 5A 58 5C 58 58 5C 5A 5A 5C 5C 5C 5A 5C 5C 58 5C 5A 58 58 5C 5C 5A 5C 5C 5C 5A 5A 5A 5C 5C 58 58 5A 5A 5C 58 5C 58 5A 58 5C 5C 5C 5F 5A 5C 5C 5C 5A 5C 5C 5C 5C 58 5A 5A 5C 5C 58 5C 5C 5C 5C 5C 5C 5A 5A 5A 5C 5C 5C 58 5C 5A 5C 5C 5C 5C 5C 5A 5C 5A 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5A 5C 5C 5C 5C 5C 5C 5F 5C 5C 5F 5C 5C 5C 5C 5C 5A 5A 5A 5C 5C 58 5C
1 Battery voltage: 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
2 Secondary battery voltage: BF BF BF BF C3 BF BF C3 BF BF C3 BF BF BF BF BF BF BF BF BF C3 BF BF BF BF BF BF BF C3 BF BF BF BF BF BF BF BF BF BF BF C3 BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF C3 BF BF BF BF BF BF C3 BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF C3 BF BF BF BF BF BF C3 BF BF BF BF C3 BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF C3 BF BF C3 BF BF BF BF C3 BF BF BF BF BF BF BF BF BF BF BF C3 BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF C3 BF BF BF BF BF BF BF BF BF C3 BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF C3 BF BF BF C3 BF C3 BF BF BF C3 BF BF BF BF BF BF BF BF BF BF BF BF BF C3 BF BF BF C3 BF BF BF BF BF BF BF BF BF BF BF BF BF BF C3 BF BF BF BF BF BF BF BF C3 BF C3 BF C3 BF BF BF C3 BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF C3 BF C3 BF BF BF C3 BF BF BF BF BF BF C3 BF C3 BF C3 BF BF BF C3 BF C3 BF BF BF BF C3 BF BF BF C3 BF C3 BF BF BF BF C3 BF C3 BF BF BF BF BF BF BF BF C3 BF BF BF BF BF C3 BF BF BF BF BF BF BF BF BF BF BF BF BF C3 BF BF BF BF BF BF BF BF C3 BF BF BF BF BF BF BF BF BF BF C3 BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF C3 BF BF C3 BF C3 BF BF BF BF C3 BF BF BF BF BF BF BF BF BF BF BF BF BF C3 BF BF BF BF C3 BF BF BF BF BF BF BF BF BF C3 BF BF BF BF BF BF BF BF BF BF BF BF C3 BF BF BF BF BF C3 BF BF BF C3 BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF C3 BF BF BF BF BF BF BF BF C3 BF C3 BF BF BF BF BF BF BF BF BF BF BF C3 BF BF BF BF BF BF BF C3 BF BF BF BF BF BF C3 BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF C3 BF C3 BF C3 BF C3 BF BF BF BF BF BF BF C3 BF BF BF BF BF BF BF BF BF BF BF BF BF BF C3 BF BF BF BF BF BF BF BF C3 BF C3 BF BF BF BF BF BF BF BF C3 BF C3 BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF C3 BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF C3 BF C3 BF BF BF C3 BF BF BF C3 BF BF BF BF BF C3 BF BF BF BF BF BF BF BF BF BF BF BF BF C3 BF BF BF BF BF C3 C3 BF BF BF BF BF BF BF C3 BF BF BF C3 BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF C3 BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF C3 BF BF C3 C3 BF BF BF BF BF BF BF BF BF C3 BF BF BF BF BF BF C3 BF BF BF BF BF BF BF C3 BF BF BF BF BF BF BF BF BF BF BF C3 BF BF BF BF C3 BF BF BF BF BF BF BF C3 BF BF BF BF BF BF C3 BF BF BF BF C3 BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF C3 C3 BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF C3 BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF C3 BF BF BF BF BF BF BF BF BF C3 BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF C3 C3 BF BF BF BF BF BF BF BF BF BF BF C3 BF BF BF C3 BF BF BF BF BF BF BF BF BF BF BF C3 BF BF BF BF BF BF BF BF BF C3 BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF C3 BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF C3 BF BF BF BF BF BF BF BF BF C6 BF BF BF BF BF BF BF BF BF BF BF BF C3 BF BF BF BF BF BF BF BF BF BF BF C3 BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF
3 Secondary battery voltage: 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
4 Battery capacity: 97 97 97 97 97 97 97 97 97 97 97 97 97 97 97 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 99 99 99 99 99 99 99 99 99 99 99 9A 9A 9A 9A 9A 9A 9A 9A 9A 9A 9A 9A 9A 9A 9A 9A 9A 9A 9A 9C 9C 9C 9C 9C 9C 9C 9C 9C 9C 9C 9C 9C 9C 9C 9C 9C 9C 9C 9C 9C 9C 9C 9D 9D 9D 9D 9D 9D 9D 9D 9D 9D 9D 9E 9E 9E 9E 9E 9E 9E 9E 9E 9E 9F 9F 9F 9F 9F 9F 9F 9F 9F 9F 9F 9F 9F 9F 9F 9F A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A2 A2 A2 A2 A2 A3 A3 A3 A3 A3 A3 A3 A3 A3 A3 A3 A3 A3 A3 A3 A3 A3 A3 A3 A3 A3 A3 A3 A3 A3 A3 A4 A4 A4 A4 A4 A4 A4 A4 A4 A4 A4 A4 A4 A4 A4 A4 A4 A4 A4 A4 A4 A4 A4 A4 A4 A4 A4 A4 A6 A6 A6 A6 A6 A6 A6 A6 A6 A6 A6 A6 A6 A6 A6 A6 A6 A6 A6 A6 A6 A6 A6 A6 A6 A6 A8 A8 A8 A8 A8 A8 A8 A8 A8 A8 A8 A8 A8 A8 A8 A9 A9 A9 A9 A9 A9 A9 A9 A9 A9 A9 A9 A9 A9 A9 A9 A9 A9 A9 A9 A9 A9 A9 A9 A9 A9 A9 A9 A9 AB AB AB AB AB AB AB AB AB AB AB AB AB AB AB AB AB AB AB AD AD AD AD AD AD AD AD AD AD AD AD AD AD AD AD AD AD AD AD AD AD AD AD AD AD AE AE AE AE AE AE AE AE AE AE AE AE AE AE AE AE B0 B0 B0 B0 B0 B0 B0 B0 B0 B0 B0 B0 B0 B0 B0 B0 B0 B0 B0 B0 B0 B0 B0 B2 B2 B2 B2 B2 B2 B2 B2 B2 B2 B2 B2 B2 B2 B2 B2 B2 B3 B3 B3 B3 B3 B3 B3 B3 B3 B3 B3 B3 B3 B3 B3 B4 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B7 B7 B7 B7 B7 B7 B7 B7 B7 B7 B7 B7 B7 B7 B7 B7 B7 B7 B7 B7 B7 B7 B7 B7 B7 B7 B8 B8 B8 B8 B8 B8 B8 B8 B8 B8 B8 B8 B8 B8 B8 B8 B9 B9 B9 B9 B9 B9 BA BA BA BA BA BA BA BA BA BA BA BA BA BA BA BA BA BA BA BA BA BC BC BC BC BC BC BC BC BC BC BC BC BC BC BC BC BC BC BC BC BC BC BC BD BD BD BD BD BD BD BD BD BD BD BD BD BD BD BE BE BE BE BE BE BE BE BE BE BE BE BE BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF C1 C1 C1 C1 C1 C1 C1 C1 C1 C1 C1 C1 C1 C1 C1 C1 C1 C2 C2 C2 C2 C3 C3 C3 C3 C3 C3 C3 C3 C3 C3 C3 C3 C3 C3 C3 C3 C3 C3 C3 C3 C3 C3 C3 C3 C3 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C6 C6 C6 C6 C6 C6 C6 C6 C6 C6 C6 C6 C6 C6 C6 C6 C6 C6 C6 C6 C6 C6 C8 C8 C8 C8 C8 C8 C8 C8 C8 C8 C8 C8 C9 C9 C9 C9 C9 C9 C9 C9 C9 C9 C9 C9 C9 CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CE CE CE CE CE CE CE CE CE CE CE CE CE CE CE CE CE D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D3 D3 D3 D3 D3 D3 D3 D3 D3 D3 D3 D3 D3 D3 D3 D3 D3 D3 D3 D3 D3 D3 D3 D4 D4 D4 D4 D4 D5 D5 D5 D5 D5 D5 D5 D5 D5 D5 D5 D5 D5 D5 D5 D5 D5 D5 D5 D5 D5 D5 D5 D5 D5 D5 D5 D5 D7 D7 D7 D7 D7 D7 D7 D7 D7 D7 D7 D7 D7 D7 D7 D7 D7 D7 D7 D7 D7 D7 D7 D7 D7 D7 D7 D7 D7 D8 D8 D8 D8 D8 D8 D8 D8 D8 D8 D8 D8 D8 D8 D8 D8 D8 D8 D8 D9 D9 D9 D9 D9 D9 D9 D9 D9 D9 D9 D9 D9 D9 DA DA DA DA DA DA DA DA DA DA DA DA DA DA DA DA DA DA DA DA DA DA DA DA DA DA DA DA DA DA DC DC DC DC DC DC DC DC DC DC DC DC DC DC DC DC DC DC DC DC DC DC DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DE DE DE DE DE DE DE DE DF DF DF DF DF DF DF DF DF DF DF DF DF DF DF DF DF DF DF DF DF DF DF DF DF DF E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E4 E4 E4 E4 E4 E4 E4 E4 E4 E4 E4 E4 E4 E4 E4 E4 E4 E4 E4 E4 E4 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E6 E6 E6 E6 E6 E6 E6 E6 E6 E6 E6 E6 E6 E6 E6 E7 E7 E7 E7 E7 E7 E7 E7 E7 E7 E7 E7 E7 E7 E7 E7 E7 E7 E7 E7 E7 E7 E7 E7 E7 E7 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 EA EA EA EA EA EA EA EA EA EA EA EA EA EA EA EA EA EC EC EC EC EC EC EC EC EC EC EC EC EC EC EC EC EC EC
5 Battery capacity: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
6 Unknown: 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60
7 Unknown: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
8 State of charge: 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 3A 3A 3A 3A 3A 3A 3A 3A 3A 3A 3A 3A 3A 3A 3A 3A 3A 3A 3A 3A 3A 3A 3A 3A 3A 3A 3A 3A 3A 3A 3A 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3C 3C 3C 3C 3C 3C 3C 3C 3C 3C 3C 3C 3C 3C 3C 3C 3C 3C 3C 3C 3C 3C 3C 3C 3C 3C 3C 3C 3C 3C 3C 3C 3C 3C 3C 3C 3C 3C 3C 3C 3C 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4B 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4C 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 53 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54
9 Unknown: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
10 Current: 4D 4D 95 7D 7D 65 65 1D 1D 35 4D 4D 4D 4D 4D 1D 35 35 4D 4D 4D 65 4D 4D 1D 1D 1D 35 35 1D 1D 35 65 65 4D 4D 65 65 65 1D 1D 4D 1D 35 35 35 35 1D 35 4D 35 35 1D 1D 05 05 1D 05 1D 65 4D 65 35 1D 35 35 7D 4D 4D 4D 35 35 35 35 1D 35 35 1D 65 35 1D 1D 1D 1D 4D 4D 4D 4D 65 7D 4D 65 65 4D 4D 65 7D 7D 7D 65 7D 4D 35 4D 4D 35 4D 65 7D 65 65 4D 65 4D 65 7D 65 7D 4D 4D 4D 35 35 4D 7D AD 65 65 65 65 4D 35 35 35 1D 4D 7D 65 65 65 65 65 65 65 65 35 35 4D 4D 4D 35 35 7D 7D 65 7D 65 65 35 4D 4D 35 35 4D 4D 4D 4D 4D 4D 65 65 65 35 35 35 35 35 4D 65 65 65 7D 4D 4D 4D 35 35 4D 4D 65 65 7D 7D 65 7D 65 65 4D 4D 35 4D 35 7D 65 35 35 35 35 65 4D 65 7D 7D 65 65 35 4D 35 35 35 4D 35 65 7D 7D 7D 65 65 4D 35 4D 4D 65 65 7D 95 4D 7D 7D 35 1D 4D 65 65 1D 05 05 05 05 1D 35 65 65 65 65 4D 4D 4D 4D 4D 35 35 65 65 7D 7D 65 7D 7D 7D 7D 35 4D 35 35 35 1D 35 4D 4D 4D 65 65 4D 35 1D 35 05 35 35 05 05 35 05 05 1D 4D 4D 35 35 4D 4D 65 35 1D 35 1D 35 4D 4D 4D 4D 65 4D 35 35 1D 1D 1D 1D 1D 1D 4D 35 4D 1D 35 35 35 1D 05 4D 4D 4D 35 65 65 4D 35 4D 4D 95 95 65 65 65 35 4D 35 35 35 4D 65 7D 65 7D 4D 65 65 65 65 35 65 4D 65 65 7D 65 65 65 4D 4D 35 4D 65 35 4D 4D 4D 35 7D 4D 35 4D 4D 35 4D 65 7D 7D 35 1D 1D 65 65 4D 65 65 65 7D 4D 65 4D 7D 7D 65 7D 65 4D 4D 4D 4D 4D 65 65 35 1D 1D 4D 4D 35 65 1D 1D 65 65 7D 4D 65 65 35 4D 65 65 65 65 7D 65 65 35 35 65 4D 4D 65 65 4D 35 35 35 35 4D 35 65 65 7D 4D 4D 35 35 4D 35 1D 1D 4D 4D 65 4D 7D 4D 4D 65 65 1D 1D 35 35 4D 65 4D 4D 65 4D 35 4D 65 65 65 65 65 4D 35 35 35 35 35 35 35 35 35 65 65 4D 65 35 35 35 1D 05 05 1D 1D 35 4D 1D 1D 35 4D 4D 4D 65 65 35 1D 1D 1D 1D 4D 4D 35 7D 4D 65 35 1D 1D 1D 35 4D 4D 65 65 4D 65 35 35 1D 1D 35 1D 1D 1D 1D 05 35 1D 05 1D 05 05 1D 1D 4D 4D 4D 35 35 4D 4D 35 1D 4D 4D 35 65 65 65 4D 4D 4D 35 35 4D 4D 65 7D 65 65 65 65 65 65 4D 35 4D 4D 35 4D 1D 35 65 4D 4D 1D 1D 4D 4D 4D 4D 4D 4D 65 65 7D 7D 65 35 35 4D 4D 35 35 4D 65 65 7D 65 65 65 65 95 4D 4D 4D 65 4D 4D 7D 7D 7D 7D 65 65 4D 65 7D 7D 7D 35 4D 4D 4D 4D 4D 7D 4D 4D 35 35 4D 4D 4D 7D 7D 65 4D 4D 35 35 35 65 4D 65 65 7D 65 4D 4D 7D 4D 65 4D 4D 65 7D 7D 65 65 65 4D 4D 65 65 4D 35 35 4D 4D 7D 65 7D 4D 35 35 65 95 7D 4D 4D 35 65 65 4D 65 7D 7D 65 95 4D 4D 4D 4D 35 4D 65 4D 65 65 65 7D 7D 65 7D 65 4D 4D 4D 65 7D 95 4D 4D 35 4D 35 4D 4D 4D 7D 35 65 65 4D 65 65 65 65 7D 7D 65 65 4D 4D 65 95 95 7D 35 1D 1D 1D 1D 4D 4D 65 35 1D 35 1D 35 4D 7D 4D 65 4D 4D 35 35 35 35 4D 4D 4D 65 4D 35 1D 35 35 65 4D 4D 4D 4D 65 1D 1D 1D 1D 35 35 35 35 1D 1D 4D 65 35 35 35 4D 65 65 65 7D 65 1D 05 1D 1D ED ED 1D 35 4D 4D 4D 4D 7D 65 4D 35 35 1D 65 65 4D 7D 7D 65 65 35 35 4D 4D 35 35 35 4D 7D 65 65 35 35 35 4D 4D 4D 35 35 4D 7D 65 35 1D 1D 35 35 35 35 1D 4D 4D 35 4D 5E 76 76 5E E6 C8 80 57 57 08 E0 57 98 98 8E 8E A6 76 76 76 8E 98 6F FE 50 B7 B7 A9 A9 F1 B0 6F 6F E6 80 80 5E 5E 5E 5E 5E 46 5E 5E 5E 76 4D 4D 35 65 7D 68 38 20 27 3F E0 E6 FE FE 05 05 35 35 4D 4D ED 4D 4D FE FE FE CF 87 50 50 B0 B0 B0 E0 16 5E 76 1D 4D 57 57 57 3F 3F 3F 3F 6F A9 08 61 79 79 61 61 80 3F E0 6F 57 F1 27 27 3F 0F F7 F1 F1 F1 61 61 61 19 19 B0 31 F1 19 D9 2A 8A 8A 6B 8A 72 B3 A9 D9 91 2A 12 2A 2A 12 B3 5A 19 61 CB 42 CB 42 79 DC DC 3B 3B 64 CB C4 23 5A CB 3F 97 94 AC 9B 75 E6 72 72 5A 0C 0C 01 01 31 38 38 80 80 E6 46 7F 8D F4 BA B3 9B 42 2A E3 E3 98 79 16 05 05 76 7C 8A 53 2A E3 3F 42 42 5D 5D 1D A5 FB C1 C1 D9 27 86 6E 2E 2E 50 86 E6 9B 05 D8 D8 C7 E6 E6 6E F1 94 C7 C7 9E 9E 05 53 0C 3F 3F 3A 45 1D 67 B6 61 A8 A8 61 08 A8 72 72 90 78 61 B2 01 01 2A B9 A1 D1 5A 2A 42 5A 42 89 12 89 CA 2A 42 D1 6B C3 23 83 3B 53 89 B2 CA 72 FA 61 67 AF A5 B0 A9 7F 1C 1C 1C 34 34 B6 C3 6B 53 6B 2A 61 08 08 49 49 76
11 Current: 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 72 72 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 72 72 72 72 71 70 70 71 71 70 70 71 70 70 72 72 72 72 72 72 72 70 71 71 70 71 71 6F 6F 6F 70 71 71 71 70 70 72 72 72 72 72 72 72 72 72 72 73 73 73 73 73 70 70 70 71 71 70 71 71 71 73 73 73 73 73 73 72 73 73 71 71 71 71 71 70 70 70 70 70 70 72 72 72 73 73 71 71 71 71 71 71 71 71 6F 70 6F 6F 6F 6F 6F 70 71 70 71 71 6F 71 71 71 71 70 6F 6F 6F 6F 6F 6F 6F 6F 70 6F 6F 6F 6F 6E 6E 6E 6D 6E 6E 6D 6F 6F 6F 6E 6E 6E 6E 6E 6D 6E 6F 6F 6D 6E 6D 6E 6F 6C 6C 6D 6D 6C 6D 6C 6D 6E 6D 6A 69 6C 6C 6D 6B 6A 6E 6E 6E 6D 6D 6F 6F 6F 70 70 70 70 71 72 69 6B 6C 6E 6D 6D 6E 6E 6D 6D 70 6F 72 73 73 72 6C 6E 6D 6E 6D 6A 6E 6E 6B 6B 6C 6B 6D 6F 6F 6F 71 6A 6A 6B 6B 69 6A 6A 6D 6C 68 68 69 6A 6A 6A 6F 6C 69 69 6A 6A 6C 6D 6D 6A 6A 6B 6B 6C 69 6A 68 68 68 68 69 68 67 67 68 68 68 66 68 68 67 67 67 67 67 67 67 67 67 67 67 67 66 67 67 67 66 65 66 66 66 66 67 66 66 67 66 68 69 69 6B 70 6F 62 65 65 65 65 65 63 65 66 66 66 67 68 69 69 6F 6F 72
12 Current: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
13 Battery nominal capacity: F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0
14 Battery nominal capacity: 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A
15 Unknown: 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E
16 Unknown: 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14
17 Unknown: 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54
18 Unknown: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
19 Unknown: 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,20 @@
0 Battery voltage: 3E 3F 3F 3F 3F 3F 3F 3F 3F 3E 3F 3F 3F 3E 3F 3F 3F 3E 3F 3F 3F 3E 3F 3F 3F 3F 3F 3F 3E 3F 3F 3E 3E 3F 3E 3E 3F 3F 3E 3F 3F 3F 3F 3F 3F 3F 3F 3F 3E 3F 3F 3F 3E 3F 3F 3F 3E 3F 3F 3F 3E 3F 3F 3F 3E 3F 3F 3F 3F 3F 3F 3E 3F 3F 3F 3F 3E 3E 3F 3F 3F 3F 3F 3E 3E 3E 3F 3F 3F 3E 3F 3F 3E 3E 3F 3F 3F 3F 3E 3F 3F 3F 3E 3F 3F 3F 3F 3F 3F 3F 3E 3F 3F 3E 3F 3F 3E 3F 3F 3F 3E 3F 3F 3E 3F 3F 3F 3E 3F 3E 3F 3F 3F 3E 3F 3E 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3E 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3E 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3E 3E 3F 3F 43 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 43 3F 43 3F 3F 3F 3F 3F 3F 3F 3F 3F 43 3F 3F 3F 3F 3F 43 43 3F 3F 3F 43 3F 3F 3F 43 3F 3F 3F 43 3F 3F 3F 3F 43 3F 3F 3F 3F 3F 3F 43 3F 3F 3F 3F 3F 3F 3F 3F 43 3F 43 3F 3F 3F 3F 41 3F 43 43 41 43 3F 43 43 41 41 43 41 41 43 3F 43 43 41 43 46 43 43 46 48 43 43 43 43 43 43 43 43 43 43 43 45 43 46 45 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 41 43 43 43 43 43 45 43 43 46 43 46 43 43 46 43 43 46 43 43 43 43 43 4A 45 43 43 46 43 45 46 46 4A 46 46 45 46 46 46 46 46 45 46 46 4A 46 46 46 46 46 46 46 48 46 46 4A 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 4A 46 46 46 46 4A 46 4A 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 4A 46 46 46 46 46 4A 46 46 46 46 46 46 46 46 46 46 4A 46 46 46 46 46 46 46 46 46 46 46 46 4A 46 46 46 46 46 46 46 46 46 4A 46 46 46 46 46 46 46 46 46 43 46 4A 46 46 4E 46 46 46 46 4A 4A 46 4A 46 46 4A 46 4A 4A 46 48 46 48 4A 46 48 46 4A 46 4A 4C 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 51 4E 4E 4E 4C 4E 4E 4E 51 51 51 51 4F 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 55 51 51 51 55 55 51 51 51 51 51 51 51 51 55 55 55 55 55 55 55 55 53 55 53 55 55 55 55 55 55 55 55 55 55 55 55 55 55 58 58 55 55 55 55 56 56 58 58 56 56 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 5A 58 5C 58 58 5A 58 5C 58 5C 5C 5A 5A 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5E 5F 5F 5F 5E 5F 5F 5F 5F 5F 5F 5F 5E 5E 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5E 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5E 5E 5F 5F 5E 5E 5E 5F 5F 5F 5F 5F 5E 5F 5F 5F 5C 5C 5F 5C 5C 5C 5F 5C 5C 5C 5C 5F 5C 5C 5C 5C 5F 5C 5C 5C 5C 5C 5C 5A 5C 5C 5C 5C 5C 5C 5C 5C 5C 5A 5C 5C 5C 5C 5C 5C 5C 58 58 58 58 58 58 58 56 58 58 58 56 58 58 55 55 55 55 53 55 55 55 55 55 55 53 55 55 55 55 55 55 53 55 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 4F 51 4F 51 4E 51 4F 51 51 51 4F 4F 51 51 4F 4F 51 51 4F 51 51 51 4F 51 51 51 51 4F 4E 51 51 4E 4F 4E 51 51 51 4F 4E 51 51 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 51 4E 4E 4E 4E 4E 4E 51 4F 4F 4E 4E 4E 51 4E 51 51 4E 4E 51 4E 4E 51 4E 51 4E 51 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 51 51 4E 4E 4E 51 4E 51 4E 4E 4E 4E 51 4E 4E 4E 51 4E 4E 4E 4E 4E 4F 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4F 4E 4E 4E 4E 4E 4E 4E 51 4E 51 4F 4E 4E 4E 51 4E 4E 4E 4E 4E 51 4E 4E 4E 4E 4E 4E 4E 4E 4F 4E 4E 4E 4E 4E 51 4E 51 4E 4E 4E 4E 4E 51 4E 4E
1 Battery voltage: 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
2 Secondary battery voltage: BF BF BF BF BF BF BF BF BF BF BF BF BD BD BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BD BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BD BD BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF C3 BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BD BD BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BD BD BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BD BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF C3 BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF C3 BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BD BD BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF
3 Secondary battery voltage: 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
4 Battery capacity: F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7
5 Battery capacity: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
6 Unknown: 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60
7 Unknown: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
8 State of charge: 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58
9 Unknown: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
10 Current: 5F 5F 77 5F 77 8F 77 5F 77 5F 5F 77 8F 8F 8F 77 8F 77 77 5F 77 5F 5F 77 5F 77 8F 77 77 77 5F 5F 8F 77 77 5F 5F 77 77 77 8F 77 5F 77 5F 8F 77 5F 77 8F 77 8F 77 77 8F 77 77 77 8F 77 77 77 8F 77 77 77 5F 77 5F 77 8F 5F 5F 77 8F 77 8F 77 77 8F 77 8F 77 77 8F 77 77 8F 77 8F 5F 77 8F 77 8F 77 8F 77 77 77 5F 77 5F 5F 77 8F 77 5F 77 77 77 77 5F 5F 5F 77 77 5F 77 5F 5F 5F 77 77 77 5F 77 77 77 77 77 5F 77 77 77 77 77 5F 77 8F 77 8F 77 8F 77 5F 77 8F 77 8F 77 77 77 8F BF A7 77 BF A7 8F A7 D7 BF 8F 77 5F BF 8F 5F 8F 8F 5F 5F 77 A7 77 EF D7 BF 8F 5F 77 8F 77 A7 77 8F D7 A7 EF D7 A7 A7 77 BF EF 06 D7 EF BF 77 8F 5F 2F BF D7 06 D7 BF A7 8F 8F A7 8F 77 BF A7 BF D7 8F A7 A7 8F 47 2F 47 47 17 17 2F 47 2F 2F 17 2F 17 47 8F 77 77 5F 47 00 77 5F 5F 47 BF EF BF 06 EF EF BF D7 EF 06 8F 1E 06 06 06 EF EF 66 4E 36 8F 2F 2F D7 BF BF BF A7 8F A7 EF EF D7 BF A7 A7 A7 8F D7 3E 25 25 7B C6 FC F5 EF 4E 1E 36 1E 36 1E D7 25 5C 8F B5 5F F8 D7 8F A7 BF 06 4E EF D7 EF A7 D7 06 8F 15 D7 BF D7 BF 8F 77 5F 77 47 7E 47 2F 2F 47 77 2F 17 2F 2F 5F 00 9A 17 00 17 2F 7E AE 25 2F 2F 17 47 17 77 77 59 EF F5 77 A7 77 5F 55 47 77 A7 A7 0F 5F 55 2F BF 1E 47 47 17 48 BF 00 17 8F 77 BF DE 55 5F 4E 6E 77 5F F5 36 77 DE 1E CD 8F 5F 8F D7 8F 1E A7 EF AE AE 5F 2F AE BF 2F 17 2F 77 2F 77 77 A7 17 5F 17 2F 2F 96 2F 17 5F 29 29 00 17 41 2F 7E 59 2F 89 B9 B9 64 A1 D1 6D E9 29 00 C6 B9 5F A1 D1 71 71 00 59 77 9D 17 47 00 D1 D1 D1 56 D1 47 66 B5 E9 2F 00 00 47 47 7E E9 59 59 06 4E 1E 1E 36 36 1E 74 1E 1E 1E 1E AE 36 96 C6 C6 36 06 06 22 1E 1E AE 14 E4 2C D4 E4 FC A8 FC 1F FC E4 E4 1F FC E4 2C 2C FC 14 85 71 85 CD A0 CD A4 B5 CD FC 9D D3 B5 9D A0 B5 FC E4 CD 9D AB B5 9D 55 6D 14 9D B5 9D B5 CD CD FC 9D 9D B5 B5 85 CD B5 CD 44 CD 14 0D 85 0D F5 6D 55 6D 85 85 55 9D 9D 6D 25 6D 55 3D 85 25 3D 25 B5 3D 0D 3D 55 3D 3D 55 9D 6D 85 6D CD 6D 85 B5 B5 9D 85 6D 9D FC B5 CD E4 FC CD 14 B5 6D 2C CD FC CD E4 14 9D B5 85 85 3D 85 85 6D 9D 9D 9D CD 9D 6D 55 9D 85 9D 6D B5 85 9D B5 9D 6D B5 55 3D 85 B5 E4 9D E4 FC 2C 14 FC 14 14 44 14 2C 14 2C FC FC E4 85 6D 3D 6D 3D 25 3D 55 3D 55 3D DE DE 25 DE F5 DE F5 DE 0D 3D 55 3D 6D 25 6D 55 6D 55 6D 3D 6D 55 85 55 85 3D 6D 55 DE C6 DE C6 AE C6 25 F5 DE F5 C6 DE F5 DE DE DE 06 D7 4E 36 66 4E 4E 7E 36 4E 66 4E 4E 7E 96 4E 4E 66 7E 06 36 8F A7 EF D7 8F BF 8F 77 06 EF D7 77 77 77 5F 77 8F 77 8F A7 A1 00 A1 89 E9 A1 D1 E9 E9 00 89 A1 A1 B9 B9 A1 00 A1 89 41 A1 D1 A1 B9 A1 B9 71 41 B9 A1 E9 89 A1 D1 A1 89 71 A1 7E B9 89 B9 A1 B9 96 89 71 89 29 B9 A7 D1 17 E9 3A E9 25 A1 D1 D1 E9 E9 A1 A1 7E A1 A1 B9 B9 3A 00 8C DD D1 17 E9 C6 17 00 F5 E9 D1 F9 B9 29 29 D1 00 2F D1 D1 F2 B9 B9 E9 E9 A1 17 00 96 E9 5C A1 B9 66 E9 B9 89 E4 C5 B9 E9 0A DD D1 B9 78 E9 00 00 BC E9 E9 30 C5 B9 B9 D1 D1 D1 E9 B9 B9 6A 6A E9 8F 44 D1 E9 60 00 E9 B9 11 D1 D1 30 D1 17 00 E9 00 D1 6D E9 9D D1 D1 E8 B9 E9 B9 B9 D1 17 D1 A1 B9 60 A1 A1 EF 89 A1 FC D1 00 D1 E9 D1 D1 89 B9 DE D1 E9 3D B9 B9 B9 1E 05 E9 D1 00 25 25 E9 B8 A1 B9 B9 82 B9 22 00 B9 71 44 89 A1 B9 EB D1 7B D1 D1 B9 89 07 89 B9 E9 B9 B9 EF D1
11 Current: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 01 00 01 01 01 01 00 00 01 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 09 02 02 04 08 02 01 00 01 01 01 01 01 01 00 02 03 00 09 00 11 00 00 00 00 01 01 00 00 00 00 00 01 00 0A 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 05 00 00 00 00 01 01 02 00 00 00 00 00 00 00 0D 00 01 00 00 00 00 02 00 00 00 00 17 00 02 00 00 01 00 00 00 07 00 07 00 00 00 00 01 02 00 01 10 00 00 01 01 00 01 01 02 00 00 00 00 00 01 00 00 01 01 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 06 06 00 00 FF 00 01 FF 00 FF FF FF 12 FF FF 02 FF FF 00 01 FF 00 FF FF FF FF 00 FF 00 02 00 00 00 FF FF FF 09 FF 00 01 02 FF 00 00 00 00 00 08 FF 06 06 01 01 01 01 01 01 01 0A 01 01 01 01 01 01 01 01 01 01 01 01 05 01 01 01 03 02 03 0A 02 02 0E 02 0F 02 02 02 0F 02 02 03 03 02 03 02 06 02 02 06 02 03 02 02 02 02 03 02 02 06 02 02 02 02 02 04 02 02 02 02 03 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 03 02 03 02 02 02 01 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 03 02 02 03 02 02 02 02 03 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 03 03 02 03 03 03 03 03 03 03 02 02 02 02 02 02 02 02 02 02 02 02 02 02 01 01 02 01 01 01 01 01 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 01 01 01 01 01 01 02 01 01 01 01 01 01 01 01 01 01 00 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 FF 00 FF FF FF FF FF FF FF 00 FF FF FF FF FF FF 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 01 FF FF FF FF FF 01 FF FF FF FF FF 00 FF 00 FF 05 FF 02 FF FF FF FF FF FF FF 01 FF FF FF FF 05 00 03 FF FF 00 FF 01 00 00 FF FF FF 05 FF 06 06 FF 00 00 FF FF 04 FF FF FF FF FF 00 00 01 FF 03 FF FF 01 FF FF FF 02 FF FF FF 05 FF FF FF 07 FF 00 00 03 FF FF 07 FF FF FF FF FF FF FF FF FF 05 05 FF 07 03 FF FF 07 00 FF FF 06 FF FF 07 FF 00 00 FF 00 FF 02 FF 02 FF FF 06 FF FF FF FF FF 00 FF FF FF 07 FF FF 00 FF FF 02 FF 00 FF FF FF FF FF FF 08 FF FF 02 FF FF FF 01 06 FF FF 00 02 02 FF 06 FF FF FF 05 FF 05 00 FF FF 03 FF FF FF 03 FF 04 FF FF FF FF 08 FF FF FF FF FF 07 FF
12 Current: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF 00 00 FF 00 FF FF FF 00 FF FF 00 FF FF 00 00 FF 00 FF FF FF FF 00 FF 00 00 00 00 00 FF FF FF 00 FF 00 00 00 FF 00 00 00 00 00 00 FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF 00 FF FF FF FF FF FF FF 00 FF FF FF FF FF FF 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 FF FF FF FF FF 00 FF FF FF FF FF 00 FF 00 FF 00 FF 00 FF FF FF FF FF FF FF 00 FF FF FF FF 00 00 00 FF FF 00 FF 00 00 00 FF FF FF 00 FF 00 00 FF 00 00 FF FF 00 FF FF FF FF FF 00 00 00 FF 00 FF FF 00 FF FF FF 00 FF FF FF 00 FF FF FF 00 FF 00 00 00 FF FF 00 FF FF FF FF FF FF FF FF FF 00 00 FF 00 00 FF FF 00 00 FF FF 00 FF FF 00 FF 00 00 FF 00 FF 00 FF 00 FF FF 00 FF FF FF FF FF 00 FF FF FF 00 FF FF 00 FF FF 00 FF 00 FF FF FF FF FF FF 00 FF FF 00 FF FF FF 00 00 FF FF 00 00 00 FF 00 FF FF FF 00 FF 00 00 FF FF 00 FF FF FF 00 FF 00 FF FF FF FF 00 FF FF FF FF FF 00 FF
13 Battery nominal capacity: F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0
14 Battery nominal capacity: 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A
15 Unknown: 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E
16 Unknown: 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14
17 Unknown: 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54
18 Unknown: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
19 Unknown: 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04

View File

@@ -0,0 +1,995 @@
3E.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3E.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BD.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
3E.05.BD.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
3E.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3E.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3E.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
3E.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
3E.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3E.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3E.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3E.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
3E.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
3E.05.BD.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3E.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3E.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3E.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
3E.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3E.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
3E.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3E.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3E.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
3E.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3E.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3E.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
3E.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3E.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3E.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BD.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3E.05.BD.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
3E.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3E.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
3E.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3E.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3E.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3E.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3E.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3E.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3E.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.BF.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.A7.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.BF.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.A7.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.A7.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.D7.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.BF.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.BF.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
3E.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
3F.05.C3.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.A7.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.EF.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.D7.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.BF.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.A7.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.D7.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.A7.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.EF.00.00.F0.0A.5E.14.54.02.04
3E.05.BF.04.F7.00.60.00.58.00.D7.00.00.F0.0A.5E.14.54.02.04
3E.05.BF.04.F7.00.60.00.58.00.A7.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.A7.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.BF.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.EF.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.06.01.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.D7.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.EF.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.BF.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.2F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.BF.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.D7.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.06.01.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.D7.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.BF.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.A7.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.A7.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.BF.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.A7.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.BF.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.D7.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.A7.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.A7.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.47.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.2F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.47.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.47.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.17.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.17.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.2F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.47.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.2F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.2F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.17.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.2F.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.17.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.47.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.47.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.00.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.47.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.BF.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.EF.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.BF.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.06.01.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.EF.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.EF.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.BF.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.D7.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.EF.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.06.01.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.1E.01.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.06.01.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.06.01.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.06.01.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.EF.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.EF.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.66.01.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.4E.01.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.36.01.00.F0.0A.5E.14.54.02.04
41.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.2F.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.2F.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.D7.00.00.F0.0A.5E.14.54.02.04
41.05.BF.04.F7.00.60.00.58.00.BF.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.BF.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.BF.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.A7.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
41.05.BF.04.F7.00.60.00.58.00.A7.00.00.F0.0A.5E.14.54.02.04
41.05.BF.04.F7.00.60.00.58.00.EF.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.EF.00.00.F0.0A.5E.14.54.02.04
41.05.BD.04.F7.00.60.00.58.00.D7.00.00.F0.0A.5E.14.54.02.04
41.05.BD.04.F7.00.60.00.58.00.BF.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.A7.00.00.F0.0A.5E.14.54.02.04
3F.05.BF.04.F7.00.60.00.58.00.A7.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.A7.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
41.05.BF.04.F7.00.60.00.58.00.D7.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.3E.09.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.25.02.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.25.02.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.7B.04.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.C6.08.00.F0.0A.5E.14.54.02.04
48.05.BF.04.F7.00.60.00.58.00.FC.02.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.F5.01.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.EF.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.4E.01.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.1E.01.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.36.01.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.1E.01.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.36.01.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.1E.01.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.D7.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.25.02.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.5C.03.00.F0.0A.5E.14.54.02.04
45.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.B5.09.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
45.05.BF.04.F7.00.60.00.58.00.F8.11.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.D7.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.A7.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.BF.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.06.01.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.4E.01.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.EF.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.D7.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.EF.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.A7.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.D7.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.06.01.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.15.0A.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.D7.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.BF.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.D7.00.00.F0.0A.5E.14.54.02.04
41.05.BF.04.F7.00.60.00.58.00.BF.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.47.00.00.F0.0A.5E.14.54.02.04
45.05.BF.04.F7.00.60.00.58.00.7E.01.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.47.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.2F.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.2F.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.47.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.2F.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.17.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.2F.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.2F.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.00.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.9A.05.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.17.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.00.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.17.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.2F.00.00.F0.0A.5E.14.54.02.04
4A.05.BF.04.F7.00.60.00.58.00.7E.01.00.F0.0A.5E.14.54.02.04
45.05.BF.04.F7.00.60.00.58.00.AE.01.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.25.02.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.2F.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.2F.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.17.00.00.F0.0A.5E.14.54.02.04
45.05.BF.04.F7.00.60.00.58.00.47.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.17.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
4A.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.59.0D.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.EF.00.00.F0.0A.5E.14.54.02.04
45.05.BF.04.F7.00.60.00.58.00.F5.01.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.A7.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.55.02.00.F0.0A.5E.14.54.02.04
45.05.BF.04.F7.00.60.00.58.00.47.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.A7.00.00.F0.0A.5E.14.54.02.04
4A.05.BF.04.F7.00.60.00.58.00.A7.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.0F.17.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.55.02.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.2F.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.BF.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.1E.01.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.47.00.00.F0.0A.5E.14.54.02.04
48.05.BF.04.F7.00.60.00.58.00.47.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.17.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.48.07.00.F0.0A.5E.14.54.02.04
4A.05.BF.04.F7.00.60.00.58.00.BF.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.00.07.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.17.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.BF.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.DE.01.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.55.02.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.4E.01.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.6E.10.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.F5.01.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.36.01.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.DE.01.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.1E.01.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.CD.02.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
4A.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.D7.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.1E.01.00.F0.0A.5E.14.54.02.04
4A.05.BF.04.F7.00.60.00.58.00.A7.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.EF.00.00.F0.0A.5E.14.54.02.04
4A.05.BF.04.F7.00.60.00.58.00.AE.01.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.AE.01.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.2F.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.AE.01.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.BF.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.2F.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.17.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.2F.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
46.05.BD.04.F7.00.60.00.58.00.2F.00.00.F0.0A.5E.14.54.02.04
46.05.BD.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.A7.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.17.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.17.00.00.F0.0A.5E.14.54.02.04
4A.05.BF.04.F7.00.60.00.58.00.2F.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.2F.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.96.01.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.2F.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.17.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
4A.05.BF.04.F7.00.60.00.58.00.29.06.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.29.06.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.00.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.17.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.41.FF.FF.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.2F.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.7E.01.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.59.FF.FF.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.2F.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.89.FF.FF.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.B9.FF.FF.F0.0A.5E.14.54.02.04
4A.05.BF.04.F7.00.60.00.58.00.B9.FF.FF.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.64.12.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.A1.FF.FF.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.D1.FF.FF.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.6D.02.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.E9.FF.FF.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.29.FF.FF.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.00.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.C6.01.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.B9.FF.FF.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.A1.FF.FF.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.D1.FF.FF.F0.0A.5E.14.54.02.04
4A.05.BF.04.F7.00.60.00.58.00.71.FF.FF.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.71.FF.FF.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.00.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.59.FF.FF.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.9D.02.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.17.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.47.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.00.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.D1.FF.FF.F0.0A.5E.14.54.02.04
4A.05.BF.04.F7.00.60.00.58.00.D1.FF.FF.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.D1.FF.FF.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.56.09.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.D1.FF.FF.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.47.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.66.01.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.B5.02.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.E9.FF.FF.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.2F.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.00.00.00.F0.0A.5E.14.54.02.04
43.05.BF.04.F7.00.60.00.58.00.00.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.47.00.00.F0.0A.5E.14.54.02.04
4A.05.BF.04.F7.00.60.00.58.00.47.00.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.7E.08.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.E9.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.59.06.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.59.06.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.06.01.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.4E.01.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.1E.01.00.F0.0A.5E.14.54.02.04
4A.05.BF.04.F7.00.60.00.58.00.1E.01.00.F0.0A.5E.14.54.02.04
4A.05.BF.04.F7.00.60.00.58.00.36.01.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.36.01.00.F0.0A.5E.14.54.02.04
4A.05.BF.04.F7.00.60.00.58.00.1E.01.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.74.0A.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.1E.01.00.F0.0A.5E.14.54.02.04
4A.05.BF.04.F7.00.60.00.58.00.1E.01.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.1E.01.00.F0.0A.5E.14.54.02.04
4A.05.BF.04.F7.00.60.00.58.00.1E.01.00.F0.0A.5E.14.54.02.04
4A.05.BF.04.F7.00.60.00.58.00.AE.01.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.36.01.00.F0.0A.5E.14.54.02.04
48.05.BF.04.F7.00.60.00.58.00.96.01.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.C6.01.00.F0.0A.5E.14.54.02.04
48.05.BF.04.F7.00.60.00.58.00.C6.01.00.F0.0A.5E.14.54.02.04
4A.05.BF.04.F7.00.60.00.58.00.36.01.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.06.01.00.F0.0A.5E.14.54.02.04
48.05.BF.04.F7.00.60.00.58.00.06.01.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.22.05.00.F0.0A.5E.14.54.02.04
4A.05.BF.04.F7.00.60.00.58.00.1E.01.00.F0.0A.5E.14.54.02.04
46.05.BF.04.F7.00.60.00.58.00.1E.01.00.F0.0A.5E.14.54.02.04
4A.05.BF.04.F7.00.60.00.58.00.AE.01.00.F0.0A.5E.14.54.02.04
4C.05.BF.04.F7.00.60.00.58.00.14.03.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.E4.02.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.2C.03.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.D4.0A.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.E4.02.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.FC.02.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.A8.0E.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.FC.02.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.1F.0F.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.FC.02.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.E4.02.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F7.00.60.00.58.00.E4.02.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.1F.0F.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.FC.02.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.E4.02.00.F0.0A.5E.14.54.02.04
4C.05.BF.04.F7.00.60.00.58.00.2C.03.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.2C.03.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.FC.02.00.F0.0A.5E.14.54.02.04
4E.05.BD.04.F7.00.60.00.58.00.14.03.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F7.00.60.00.58.00.85.02.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F7.00.60.00.58.00.71.06.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F7.00.60.00.58.00.85.02.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F7.00.60.00.58.00.CD.02.00.F0.0A.5E.14.54.02.04
4F.05.BF.04.F7.00.60.00.58.00.A0.06.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F7.00.60.00.58.00.CD.02.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F7.00.60.00.58.00.A4.03.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F7.00.60.00.58.00.B5.02.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F7.00.60.00.58.00.CD.02.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F7.00.60.00.58.00.FC.02.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F7.00.60.00.58.00.9D.02.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F7.00.60.00.58.00.D3.03.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F7.00.60.00.58.00.B5.02.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F7.00.60.00.58.00.9D.02.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F7.00.60.00.58.00.A0.06.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F7.00.60.00.58.00.B5.02.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F7.00.60.00.58.00.FC.02.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F7.00.60.00.58.00.E4.02.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F7.00.60.00.58.00.CD.02.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F7.00.60.00.58.00.9D.02.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F7.00.60.00.58.00.AB.04.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F7.00.60.00.58.00.B5.02.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F7.00.60.00.58.00.9D.02.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F7.00.60.00.58.00.55.02.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F7.00.60.00.58.00.6D.02.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F7.00.60.00.58.00.14.03.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F7.00.60.00.58.00.9D.02.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F7.00.60.00.58.00.B5.02.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F7.00.60.00.58.00.9D.02.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F7.00.60.00.58.00.B5.02.00.F0.0A.5E.14.54.02.04
55.05.BF.04.F7.00.60.00.58.00.CD.02.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F7.00.60.00.58.00.CD.02.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F7.00.60.00.58.00.FC.02.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F7.00.60.00.58.00.9D.02.00.F0.0A.5E.14.54.02.04
55.05.BF.04.F7.00.60.00.58.00.9D.02.00.F0.0A.5E.14.54.02.04
55.05.BF.04.F7.00.60.00.58.00.B5.02.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F7.00.60.00.58.00.B5.02.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F7.00.60.00.58.00.85.02.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F7.00.60.00.58.00.CD.02.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F7.00.60.00.58.00.B5.02.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F7.00.60.00.58.00.CD.02.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F7.00.60.00.58.00.44.03.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F7.00.60.00.58.00.CD.02.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F7.00.60.00.58.00.14.03.00.F0.0A.5E.14.54.02.04
55.05.BF.04.F7.00.60.00.58.00.0D.02.00.F0.0A.5E.14.54.02.04
55.05.BF.04.F7.00.60.00.58.00.85.02.00.F0.0A.5E.14.54.02.04
55.05.BF.04.F7.00.60.00.58.00.0D.02.00.F0.0A.5E.14.54.02.04
55.05.BF.04.F7.00.60.00.58.00.F5.01.00.F0.0A.5E.14.54.02.04
55.05.BF.04.F7.00.60.00.58.00.6D.02.00.F0.0A.5E.14.54.02.04
55.05.BF.04.F7.00.60.00.58.00.55.02.00.F0.0A.5E.14.54.02.04
55.05.BF.04.F7.00.60.00.58.00.6D.02.00.F0.0A.5E.14.54.02.04
55.05.BF.04.F7.00.60.00.58.00.85.02.00.F0.0A.5E.14.54.02.04
53.05.BF.04.F7.00.60.00.58.00.85.02.00.F0.0A.5E.14.54.02.04
55.05.BF.04.F7.00.60.00.58.00.55.02.00.F0.0A.5E.14.54.02.04
53.05.BF.04.F7.00.60.00.58.00.9D.02.00.F0.0A.5E.14.54.02.04
55.05.BF.04.F7.00.60.00.58.00.9D.02.00.F0.0A.5E.14.54.02.04
55.05.BF.04.F7.00.60.00.58.00.6D.02.00.F0.0A.5E.14.54.02.04
55.05.BF.04.F7.00.60.00.58.00.25.02.00.F0.0A.5E.14.54.02.04
55.05.BF.04.F7.00.60.00.58.00.6D.02.00.F0.0A.5E.14.54.02.04
55.05.BF.04.F7.00.60.00.58.00.55.02.00.F0.0A.5E.14.54.02.04
55.05.BF.04.F7.00.60.00.58.00.3D.02.00.F0.0A.5E.14.54.02.04
55.05.BF.04.F7.00.60.00.58.00.85.02.00.F0.0A.5E.14.54.02.04
55.05.BF.04.F7.00.60.00.58.00.25.02.00.F0.0A.5E.14.54.02.04
55.05.BF.04.F7.00.60.00.58.00.3D.02.00.F0.0A.5E.14.54.02.04
55.05.BF.04.F7.00.60.00.58.00.25.02.00.F0.0A.5E.14.54.02.04
55.05.BF.04.F7.00.60.00.58.00.B5.02.00.F0.0A.5E.14.54.02.04
55.05.BF.04.F7.00.60.00.58.00.3D.02.00.F0.0A.5E.14.54.02.04
55.05.BF.04.F7.00.60.00.58.00.0D.02.00.F0.0A.5E.14.54.02.04
55.05.BF.04.F7.00.60.00.58.00.3D.02.00.F0.0A.5E.14.54.02.04
58.05.BF.04.F7.00.60.00.58.00.55.02.00.F0.0A.5E.14.54.02.04
58.05.BF.04.F7.00.60.00.58.00.3D.02.00.F0.0A.5E.14.54.02.04
55.05.BF.04.F7.00.60.00.58.00.3D.02.00.F0.0A.5E.14.54.02.04
55.05.BF.04.F7.00.60.00.58.00.55.02.00.F0.0A.5E.14.54.02.04
55.05.BF.04.F7.00.60.00.58.00.9D.02.00.F0.0A.5E.14.54.02.04
55.05.BF.04.F7.00.60.00.58.00.6D.02.00.F0.0A.5E.14.54.02.04
56.05.BF.04.F7.00.60.00.58.00.85.02.00.F0.0A.5E.14.54.02.04
56.05.BF.04.F7.00.60.00.58.00.6D.02.00.F0.0A.5E.14.54.02.04
58.05.BF.04.F7.00.60.00.58.00.CD.02.00.F0.0A.5E.14.54.02.04
58.05.BF.04.F7.00.60.00.58.00.6D.02.00.F0.0A.5E.14.54.02.04
56.05.BF.04.F7.00.60.00.58.00.85.02.00.F0.0A.5E.14.54.02.04
56.05.BF.04.F7.00.60.00.58.00.B5.02.00.F0.0A.5E.14.54.02.04
58.05.BF.04.F7.00.60.00.58.00.B5.02.00.F0.0A.5E.14.54.02.04
58.05.BF.04.F7.00.60.00.58.00.9D.02.00.F0.0A.5E.14.54.02.04
58.05.BF.04.F7.00.60.00.58.00.85.02.00.F0.0A.5E.14.54.02.04
58.05.BF.04.F7.00.60.00.58.00.6D.02.00.F0.0A.5E.14.54.02.04
58.05.BF.04.F7.00.60.00.58.00.9D.02.00.F0.0A.5E.14.54.02.04
58.05.BF.04.F7.00.60.00.58.00.FC.02.00.F0.0A.5E.14.54.02.04
58.05.BF.04.F7.00.60.00.58.00.B5.02.00.F0.0A.5E.14.54.02.04
58.05.BF.04.F7.00.60.00.58.00.CD.02.00.F0.0A.5E.14.54.02.04
58.05.BF.04.F7.00.60.00.58.00.E4.02.00.F0.0A.5E.14.54.02.04
58.05.BF.04.F7.00.60.00.58.00.FC.02.00.F0.0A.5E.14.54.02.04
58.05.BF.04.F7.00.60.00.58.00.CD.02.00.F0.0A.5E.14.54.02.04
58.05.BF.04.F7.00.60.00.58.00.14.03.00.F0.0A.5E.14.54.02.04
58.05.BF.04.F7.00.60.00.58.00.B5.02.00.F0.0A.5E.14.54.02.04
58.05.BF.04.F7.00.60.00.58.00.6D.02.00.F0.0A.5E.14.54.02.04
58.05.BF.04.F7.00.60.00.58.00.2C.03.00.F0.0A.5E.14.54.02.04
58.05.BF.04.F7.00.60.00.58.00.CD.02.00.F0.0A.5E.14.54.02.04
58.05.BF.04.F7.00.60.00.58.00.FC.02.00.F0.0A.5E.14.54.02.04
58.05.BF.04.F7.00.60.00.58.00.CD.02.00.F0.0A.5E.14.54.02.04
58.05.BF.04.F7.00.60.00.58.00.E4.02.00.F0.0A.5E.14.54.02.04
58.05.BF.04.F7.00.60.00.58.00.14.03.00.F0.0A.5E.14.54.02.04
58.05.BF.04.F7.00.60.00.58.00.9D.02.00.F0.0A.5E.14.54.02.04
5A.05.BF.04.F7.00.60.00.58.00.B5.02.00.F0.0A.5E.14.54.02.04
58.05.BF.04.F7.00.60.00.58.00.85.02.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F7.00.60.00.58.00.85.02.00.F0.0A.5E.14.54.02.04
58.05.BF.04.F7.00.60.00.58.00.3D.02.00.F0.0A.5E.14.54.02.04
58.05.BF.04.F7.00.60.00.58.00.85.02.00.F0.0A.5E.14.54.02.04
5A.05.BF.04.F7.00.60.00.58.00.85.02.00.F0.0A.5E.14.54.02.04
58.05.BF.04.F7.00.60.00.58.00.6D.02.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F7.00.60.00.58.00.9D.02.00.F0.0A.5E.14.54.02.04
58.05.BF.04.F7.00.60.00.58.00.9D.02.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F7.00.60.00.58.00.9D.02.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F7.00.60.00.58.00.CD.02.00.F0.0A.5E.14.54.02.04
5A.05.BF.04.F7.00.60.00.58.00.9D.02.00.F0.0A.5E.14.54.02.04
5A.05.BF.04.F7.00.60.00.58.00.6D.02.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F7.00.60.00.58.00.55.02.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F7.00.60.00.58.00.9D.02.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F7.00.60.00.58.00.85.02.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F8.00.60.00.58.00.9D.02.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F8.00.60.00.58.00.6D.02.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F8.00.60.00.58.00.B5.02.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F8.00.60.00.58.00.85.02.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F8.00.60.00.58.00.9D.02.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F8.00.60.00.58.00.B5.02.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F8.00.60.00.58.00.9D.02.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F8.00.60.00.58.00.6D.02.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F8.00.60.00.58.00.B5.02.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F8.00.60.00.58.00.55.02.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F8.00.60.00.58.00.3D.02.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F8.00.60.00.58.00.85.02.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F8.00.60.00.58.00.B5.02.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F8.00.60.00.58.00.E4.02.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F8.00.60.00.58.00.9D.02.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F8.00.60.00.58.00.E4.02.00.F0.0A.5E.14.54.02.04
5E.05.BF.04.F8.00.60.00.58.00.FC.02.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.2C.03.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.14.03.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.FC.02.00.F0.0A.5E.14.54.02.04
5E.05.BF.04.F8.00.60.00.58.00.14.03.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.14.03.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.44.03.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.14.03.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.2C.03.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.14.03.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.2C.03.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.FC.02.00.F0.0A.5E.14.54.02.04
5E.05.BF.04.F8.00.60.00.58.00.FC.02.00.F0.0A.5E.14.54.02.04
5E.05.BF.04.F8.00.60.00.58.00.E4.02.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.85.02.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.6D.02.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.3D.02.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.6D.02.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.3D.02.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.25.02.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.3D.02.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.55.02.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.3D.02.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.55.02.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.3D.02.00.F0.0A.5E.14.54.02.04
5E.05.BF.04.F8.00.60.00.58.00.DE.01.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.DE.01.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.25.02.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.DE.01.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.F5.01.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.DE.01.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.F5.01.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.DE.01.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.0D.02.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.3D.02.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.55.02.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.3D.02.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.6D.02.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.25.02.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.6D.02.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.55.02.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.6D.02.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.55.02.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.6D.02.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.3D.02.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.6D.02.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.55.02.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.85.02.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.55.02.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.85.02.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.3D.02.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.6D.02.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.55.02.00.F0.0A.5E.14.54.02.04
5E.05.BF.04.F8.00.60.00.58.00.DE.01.00.F0.0A.5E.14.54.02.04
5E.05.BF.04.F8.00.60.00.58.00.C6.01.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.DE.01.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.C6.01.00.F0.0A.5E.14.54.02.04
5E.05.BF.04.F8.00.60.00.58.00.AE.01.00.F0.0A.5E.14.54.02.04
5E.05.BF.04.F8.00.60.00.58.00.C6.01.00.F0.0A.5E.14.54.02.04
5E.05.BF.04.F8.00.60.00.58.00.25.02.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.F5.01.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.DE.01.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.F5.01.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.C6.01.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.DE.01.00.F0.0A.5E.14.54.02.04
5E.05.BF.04.F8.00.60.00.58.00.F5.01.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.DE.01.00.F0.0A.5E.14.54.02.04
5F.05.C3.04.F8.00.60.00.58.00.DE.01.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.DE.01.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F8.00.60.00.58.00.06.01.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F8.00.60.00.58.00.D7.00.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.4E.01.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F8.00.60.00.58.00.36.01.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F8.00.60.00.58.00.66.01.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F8.00.60.00.58.00.4E.01.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.4E.01.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F8.00.60.00.58.00.7E.01.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F8.00.60.00.58.00.36.01.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F8.00.60.00.58.00.4E.01.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F8.00.60.00.58.00.66.01.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.4E.01.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F8.00.60.00.58.00.4E.01.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F8.00.60.00.58.00.7E.01.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F8.00.60.00.58.00.96.01.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F8.00.60.00.58.00.4E.01.00.F0.0A.5E.14.54.02.04
5F.05.BF.04.F8.00.60.00.58.00.4E.01.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F8.00.60.00.58.00.66.01.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F8.00.60.00.58.00.7E.01.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F8.00.60.00.58.00.06.01.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F8.00.60.00.58.00.36.01.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F8.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F8.00.60.00.58.00.A7.00.00.F0.0A.5E.14.54.02.04
5A.05.BF.04.F8.00.60.00.58.00.EF.00.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F8.00.60.00.58.00.D7.00.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F8.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F8.00.60.00.58.00.BF.00.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F8.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F8.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F8.00.60.00.58.00.06.01.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F8.00.60.00.58.00.EF.00.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F8.00.60.00.58.00.D7.00.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F8.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
5A.05.BF.04.F8.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F8.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F8.00.60.00.58.00.5F.00.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F8.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F8.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F8.00.60.00.58.00.77.00.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F8.00.60.00.58.00.8F.00.00.F0.0A.5E.14.54.02.04
5C.05.BF.04.F8.00.60.00.58.00.A7.00.00.F0.0A.5E.14.54.02.04
58.05.BF.04.F8.00.60.00.58.00.A1.FF.FF.F0.0A.5E.14.54.02.04
58.05.BF.04.F8.00.60.00.58.00.00.00.00.F0.0A.5E.14.54.02.04
58.05.BF.04.F8.00.60.00.58.00.A1.FF.FF.F0.0A.5E.14.54.02.04
58.05.BF.04.F8.00.60.00.58.00.89.FF.FF.F0.0A.5E.14.54.02.04
58.05.BF.04.F8.00.60.00.58.00.E9.FF.FF.F0.0A.5E.14.54.02.04
58.05.BF.04.F8.00.60.00.58.00.A1.FF.FF.F0.0A.5E.14.54.02.04
58.05.BF.04.F8.00.60.00.58.00.D1.FF.FF.F0.0A.5E.14.54.02.04
56.05.BF.04.F8.00.60.00.58.00.E9.FF.FF.F0.0A.5E.14.54.02.04
58.05.BF.04.F8.00.60.00.58.00.E9.FF.FF.F0.0A.5E.14.54.02.04
58.05.BF.04.F8.00.60.00.58.00.00.00.00.F0.0A.5E.14.54.02.04
58.05.BF.04.F8.00.60.00.58.00.89.FF.FF.F0.0A.5E.14.54.02.04
56.05.BF.04.F8.00.60.00.58.00.A1.FF.FF.F0.0A.5E.14.54.02.04
58.05.BF.04.F8.00.60.00.58.00.A1.FF.FF.F0.0A.5E.14.54.02.04
58.05.BF.04.F8.00.60.00.58.00.B9.FF.FF.F0.0A.5E.14.54.02.04
55.05.BF.04.F8.00.60.00.58.00.B9.FF.FF.F0.0A.5E.14.54.02.04
55.05.BF.04.F8.00.60.00.58.00.A1.FF.FF.F0.0A.5E.14.54.02.04
55.05.BF.04.F8.00.60.00.58.00.00.00.00.F0.0A.5E.14.54.02.04
55.05.BF.04.F8.00.60.00.58.00.A1.FF.FF.F0.0A.5E.14.54.02.04
53.05.BF.04.F8.00.60.00.58.00.89.FF.FF.F0.0A.5E.14.54.02.04
55.05.BF.04.F8.00.60.00.58.00.41.FF.FF.F0.0A.5E.14.54.02.04
55.05.BF.04.F8.00.60.00.58.00.A1.FF.FF.F0.0A.5E.14.54.02.04
55.05.BF.04.F8.00.60.00.58.00.D1.FF.FF.F0.0A.5E.14.54.02.04
55.05.BF.04.F8.00.60.00.58.00.A1.FF.FF.F0.0A.5E.14.54.02.04
55.05.BF.04.F8.00.60.00.58.00.B9.FF.FF.F0.0A.5E.14.54.02.04
55.05.BF.04.F8.00.60.00.58.00.A1.FF.FF.F0.0A.5E.14.54.02.04
53.05.BF.04.F8.00.60.00.58.00.B9.FF.FF.F0.0A.5E.14.54.02.04
55.05.BF.04.F8.00.60.00.58.00.71.FF.FF.F0.0A.5E.14.54.02.04
55.05.BF.04.F8.00.60.00.58.00.41.FF.FF.F0.0A.5E.14.54.02.04
55.05.BF.04.F8.00.60.00.58.00.B9.FF.FF.F0.0A.5E.14.54.02.04
55.05.BF.04.F8.00.60.00.58.00.A1.FF.FF.F0.0A.5E.14.54.02.04
55.05.BF.04.F8.00.60.00.58.00.E9.FF.FF.F0.0A.5E.14.54.02.04
55.05.BF.04.F8.00.60.00.58.00.89.FF.FF.F0.0A.5E.14.54.02.04
53.05.BF.04.F8.00.60.00.58.00.A1.FF.FF.F0.0A.5E.14.54.02.04
55.05.BF.04.F8.00.60.00.58.00.D1.FF.FF.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.A1.FF.FF.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.89.FF.FF.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.71.FF.FF.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.A1.FF.FF.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.7E.01.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.B9.FF.FF.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.89.FF.FF.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.B9.FF.FF.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.A1.FF.FF.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.B9.FF.FF.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.96.01.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.89.FF.FF.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.71.FF.FF.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.89.FF.FF.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.29.FF.FF.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.B9.FF.FF.F0.0A.5E.14.54.02.04
51.05.C3.04.F8.00.60.00.58.00.A7.00.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.D1.FF.FF.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.17.00.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.E9.FF.FF.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.3A.05.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.E9.FF.FF.F0.0A.5E.14.54.02.04
4F.05.BF.04.F8.00.60.00.58.00.25.02.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.A1.FF.FF.F0.0A.5E.14.54.02.04
4F.05.BF.04.F8.00.60.00.58.00.D1.FF.FF.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.D1.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.E9.FF.FF.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.E9.FF.FF.F0.0A.5E.14.54.02.04
4F.05.BF.04.F8.00.60.00.58.00.A1.FF.FF.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.A1.FF.FF.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.7E.01.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.A1.FF.FF.F0.0A.5E.14.54.02.04
4F.05.BF.04.F8.00.60.00.58.00.A1.FF.FF.F0.0A.5E.14.54.02.04
4F.05.BF.04.F8.00.60.00.58.00.B9.FF.FF.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.B9.FF.FF.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.3A.05.00.F0.0A.5E.14.54.02.04
4F.05.BF.04.F8.00.60.00.58.00.00.00.00.F0.0A.5E.14.54.02.04
4F.05.BF.04.F8.00.60.00.58.00.8C.03.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.DD.FF.FF.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.D1.FF.FF.F0.0A.5E.14.54.02.04
4F.05.BF.04.F8.00.60.00.58.00.17.00.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.E9.FF.FF.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.C6.01.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.17.00.00.F0.0A.5E.14.54.02.04
4F.05.BF.04.F8.00.60.00.58.00.00.00.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.F5.FF.FF.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.E9.FF.FF.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.D1.FF.FF.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.F9.05.00.F0.0A.5E.14.54.02.04
4F.05.BF.04.F8.00.60.00.58.00.B9.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.29.06.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.29.06.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.D1.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.00.00.00.F0.0A.5E.14.54.02.04
4F.05.BF.04.F8.00.60.00.58.00.2F.00.00.F0.0A.5E.14.54.02.04
4E.05.BD.04.F8.00.60.00.58.00.D1.FF.FF.F0.0A.5E.14.54.02.04
51.05.BD.04.F8.00.60.00.58.00.D1.FF.FF.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.F2.04.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.B9.FF.FF.F0.0A.5E.14.54.02.04
4F.05.BF.04.F8.00.60.00.58.00.B9.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.E9.FF.FF.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.E9.FF.FF.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.A1.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.17.00.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.00.00.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.96.01.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.E9.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.5C.03.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.A1.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.B9.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.66.01.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.E9.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.B9.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.89.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.E4.02.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.C5.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.B9.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.E9.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.0A.05.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.DD.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.D1.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.B9.FF.FF.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.78.07.00.F0.0A.5E.14.54.02.04
4F.05.BF.04.F8.00.60.00.58.00.E9.FF.FF.F0.0A.5E.14.54.02.04
4F.05.BF.04.F8.00.60.00.58.00.00.00.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.00.00.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.BC.03.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.E9.FF.FF.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.E9.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.30.07.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.C5.FF.FF.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.B9.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.B9.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.D1.FF.FF.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.D1.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.D1.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.E9.FF.FF.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.B9.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.B9.FF.FF.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.6A.05.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.6A.05.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.E9.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.8F.07.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.44.03.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.D1.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.E9.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.60.07.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.00.00.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.E9.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.B9.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.11.06.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.D1.FF.FF.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.D1.FF.FF.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.30.07.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.D1.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.17.00.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.00.00.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.E9.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.00.00.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.D1.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.6D.02.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.E9.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.9D.02.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.D1.FF.FF.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.D1.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.E8.06.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.B9.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.E9.FF.FF.F0.0A.5E.14.54.02.04
51.05.BF.04.F8.00.60.00.58.00.B9.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.B9.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.D1.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.17.00.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.D1.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.A1.FF.FF.F0.0A.5E.14.54.02.04
4F.05.BF.04.F8.00.60.00.58.00.B9.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.60.07.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F8.00.60.00.58.00.A1.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.A1.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.EF.00.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.89.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.A1.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.FC.02.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.D1.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.00.00.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.D1.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.E9.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.D1.FF.FF.F0.0A.5E.14.54.02.04
4F.05.BF.04.F7.00.60.00.58.00.D1.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.89.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.B9.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.DE.08.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.D1.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.E9.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.3D.02.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.B9.FF.FF.F0.0A.5E.14.54.02.04
51.05.BF.04.F7.00.60.00.58.00.B9.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.B9.FF.FF.F0.0A.5E.14.54.02.04
51.05.BF.04.F7.00.60.00.58.00.1E.01.00.F0.0A.5E.14.54.02.04
4F.05.BF.04.F7.00.60.00.58.00.05.06.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.E9.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.D1.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.00.00.00.F0.0A.5E.14.54.02.04
51.05.BF.04.F7.00.60.00.58.00.25.02.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.25.02.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.E9.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.B8.06.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.A1.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.B9.FF.FF.F0.0A.5E.14.54.02.04
51.05.BF.04.F7.00.60.00.58.00.B9.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.82.05.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.B9.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.22.05.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.00.00.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.B9.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.71.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.44.03.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.89.FF.FF.F0.0A.5E.14.54.02.04
4F.05.BF.04.F7.00.60.00.58.00.A1.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.B9.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.EB.03.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.D1.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.7B.04.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.D1.FF.FF.F0.0A.5E.14.54.02.04
51.05.BF.04.F7.00.60.00.58.00.D1.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.B9.FF.FF.F0.0A.5E.14.54.02.04
51.05.BF.04.F7.00.60.00.58.00.89.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.07.08.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.89.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.B9.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.E9.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.B9.FF.FF.F0.0A.5E.14.54.02.04
51.05.BF.04.F7.00.60.00.58.00.B9.FF.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.EF.07.00.F0.0A.5E.14.54.02.04
4E.05.BF.04.F7.00.60.00.58.00.D1.FF.FF.F0.0A.5E.14.54.02.04

View File

@@ -0,0 +1,20 @@
0 Battery voltage: 0A 0A 0A 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 13 13 13 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 16 18 18 18 3E 3F 3F 3F 3F 3F 3F 3F 3F 3F 48 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4E 61 61 61 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 E6 E6 E6 E8 E8 E8 E8 EA EA EA EA EA EA EA EA ED
1 Battery voltage: 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
2 Secondary battery voltage: BC BC BC BA BA BC BC BC BC BC BC BC BC BC BC BC BC BC BC B8 B8 B8 B8 B8 B8 B8 B8 B8 B8 B8 B8 B8 B8 B8 B8 B8 B8 BC BC BC BC BC BC BC BC B8 B8 B8 B8 B8 B8 B8 B8 B8 B8 B8 B8 B8 B8 B8 B8 B8 B8 B8 B8 B8 B8 B8 B8 B8 B8 BC BC BC BC BC BC BC BC BC BF BD BC BD BD BD BD BD BD BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF BF C3 C3 C3 C3 C3 BF BF BF BD BF BF BF BD BD BF BF BF BF C3 C3 BF
3 Secondary battery voltage: 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
4 Battery capacity: 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 14 14 14 14 14 14 14 14 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09
5 Battery capacity: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
6 Unknown: 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60
7 Unknown: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
8 State of charge: 62 63 63 63 63 62 62 62 62 63 63 63 63 63 63 63 63 63 63 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 62 62 62 63 63 63 63 63 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F
9 Unknown: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
10 Current: 57 57 FE 87 9F 0F 3F 57 6F 16 2E 57 6F 87 9F B6 CE E6 FE 07 0A 2C 2F 37 3D 4E 59 6D 70 81 88 92 AA B1 C9 EE F8 0F 27 3F 16 2E 9F CE FE A0 BB C2 04 07 30 36 37 43 44 59 71 85 9A AA AB B1 BF C0 C9 DA FD 15 04 30 FD 7E 0E 66 7E 96 AE C6 DE F6 96 DE 0E 0E 26 96 AE C6 DE 0E 7E 96 AE C6 DE F6 F6 01 61 E9 01 12 2A 31 42 49 4F 5A 72 8A 9B B3 B9 D1 E9 FA 2A 5A 72 B3 E9 82 9A B2 9A 82 9A B2 9A B2 82 9A B2 CA 9A B2 9A
11 Current: 36 36 36 36 36 36 36 36 36 37 37 36 36 36 36 36 36 36 36 4D 4A 48 45 4D 47 46 4B 47 44 43 44 42 42 43 4A 45 43 36 36 36 37 37 36 36 36 4B 48 49 50 4D 53 46 4D 4D 4F 4B 52 47 51 42 50 43 4C 53 4A 42 4E 56 50 53 4E FA FB FA FA FA FA FA FA FA FA FA FB FB FB FA FA FA FA FB FA FA FA FA FA FA FA 15 15 14 15 14 14 15 14 15 0F 14 14 14 13 13 14 14 14 13 14 14 14 13 14 FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE
12 Current: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
13 Battery nominal capacity: F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0 F0
14 Battery nominal capacity: 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A
15 Unknown: 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E
16 Unknown: 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14
17 Unknown: 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54
18 Unknown: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
19 Unknown: 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04

View File

@@ -0,0 +1,137 @@
0A.05.BC.04.14.01.60.00.62.00.57.36.FF.F0.0A.5E.14.54.02.04
0A.05.BC.04.14.01.60.00.63.00.57.36.FF.F0.0A.5E.14.54.02.04
0A.05.BC.04.14.01.60.00.63.00.FE.36.FF.F0.0A.5E.14.54.02.04
0D.05.BA.04.14.01.60.00.63.00.87.36.FF.F0.0A.5E.14.54.02.04
0D.05.BA.04.14.01.60.00.63.00.9F.36.FF.F0.0A.5E.14.54.02.04
0D.05.BC.04.14.01.60.00.62.00.0F.36.FF.F0.0A.5E.14.54.02.04
0D.05.BC.04.14.01.60.00.62.00.3F.36.FF.F0.0A.5E.14.54.02.04
0D.05.BC.04.14.01.60.00.62.00.57.36.FF.F0.0A.5E.14.54.02.04
0D.05.BC.04.14.01.60.00.62.00.6F.36.FF.F0.0A.5E.14.54.02.04
0D.05.BC.04.14.01.60.00.63.00.16.37.FF.F0.0A.5E.14.54.02.04
0D.05.BC.04.14.01.60.00.63.00.2E.37.FF.F0.0A.5E.14.54.02.04
0D.05.BC.04.14.01.60.00.63.00.57.36.FF.F0.0A.5E.14.54.02.04
0D.05.BC.04.14.01.60.00.63.00.6F.36.FF.F0.0A.5E.14.54.02.04
0D.05.BC.04.14.01.60.00.63.00.87.36.FF.F0.0A.5E.14.54.02.04
0D.05.BC.04.14.01.60.00.63.00.9F.36.FF.F0.0A.5E.14.54.02.04
0D.05.BC.04.14.01.60.00.63.00.B6.36.FF.F0.0A.5E.14.54.02.04
0D.05.BC.04.14.01.60.00.63.00.CE.36.FF.F0.0A.5E.14.54.02.04
0D.05.BC.04.14.01.60.00.63.00.E6.36.FF.F0.0A.5E.14.54.02.04
0D.05.BC.04.14.01.60.00.63.00.FE.36.FF.F0.0A.5E.14.54.02.04
11.05.B8.04.17.01.60.00.64.00.07.4D.FF.F0.0A.5E.14.54.02.04
11.05.B8.04.17.01.60.00.64.00.0A.4A.FF.F0.0A.5E.14.54.02.04
11.05.B8.04.17.01.60.00.64.00.2C.48.FF.F0.0A.5E.14.54.02.04
11.05.B8.04.17.01.60.00.64.00.2F.45.FF.F0.0A.5E.14.54.02.04
11.05.B8.04.17.01.60.00.64.00.37.4D.FF.F0.0A.5E.14.54.02.04
11.05.B8.04.17.01.60.00.64.00.3D.47.FF.F0.0A.5E.14.54.02.04
11.05.B8.04.17.01.60.00.64.00.4E.46.FF.F0.0A.5E.14.54.02.04
11.05.B8.04.17.01.60.00.64.00.59.4B.FF.F0.0A.5E.14.54.02.04
11.05.B8.04.17.01.60.00.64.00.6D.47.FF.F0.0A.5E.14.54.02.04
11.05.B8.04.17.01.60.00.64.00.70.44.FF.F0.0A.5E.14.54.02.04
11.05.B8.04.17.01.60.00.64.00.81.43.FF.F0.0A.5E.14.54.02.04
11.05.B8.04.17.01.60.00.64.00.88.44.FF.F0.0A.5E.14.54.02.04
11.05.B8.04.17.01.60.00.64.00.92.42.FF.F0.0A.5E.14.54.02.04
11.05.B8.04.17.01.60.00.64.00.AA.42.FF.F0.0A.5E.14.54.02.04
11.05.B8.04.17.01.60.00.64.00.B1.43.FF.F0.0A.5E.14.54.02.04
11.05.B8.04.17.01.60.00.64.00.C9.4A.FF.F0.0A.5E.14.54.02.04
11.05.B8.04.17.01.60.00.64.00.EE.45.FF.F0.0A.5E.14.54.02.04
11.05.B8.04.17.01.60.00.64.00.F8.43.FF.F0.0A.5E.14.54.02.04
11.05.BC.04.14.01.60.00.62.00.0F.36.FF.F0.0A.5E.14.54.02.04
11.05.BC.04.14.01.60.00.62.00.27.36.FF.F0.0A.5E.14.54.02.04
11.05.BC.04.14.01.60.00.62.00.3F.36.FF.F0.0A.5E.14.54.02.04
11.05.BC.04.14.01.60.00.63.00.16.37.FF.F0.0A.5E.14.54.02.04
11.05.BC.04.14.01.60.00.63.00.2E.37.FF.F0.0A.5E.14.54.02.04
11.05.BC.04.14.01.60.00.63.00.9F.36.FF.F0.0A.5E.14.54.02.04
11.05.BC.04.14.01.60.00.63.00.CE.36.FF.F0.0A.5E.14.54.02.04
11.05.BC.04.14.01.60.00.63.00.FE.36.FF.F0.0A.5E.14.54.02.04
13.05.B8.04.17.01.60.00.64.00.A0.4B.FF.F0.0A.5E.14.54.02.04
13.05.B8.04.17.01.60.00.64.00.BB.48.FF.F0.0A.5E.14.54.02.04
13.05.B8.04.17.01.60.00.64.00.C2.49.FF.F0.0A.5E.14.54.02.04
15.05.B8.04.17.01.60.00.64.00.04.50.FF.F0.0A.5E.14.54.02.04
15.05.B8.04.17.01.60.00.64.00.07.4D.FF.F0.0A.5E.14.54.02.04
15.05.B8.04.17.01.60.00.64.00.30.53.FF.F0.0A.5E.14.54.02.04
15.05.B8.04.17.01.60.00.64.00.36.46.FF.F0.0A.5E.14.54.02.04
15.05.B8.04.17.01.60.00.64.00.37.4D.FF.F0.0A.5E.14.54.02.04
15.05.B8.04.17.01.60.00.64.00.43.4D.FF.F0.0A.5E.14.54.02.04
15.05.B8.04.17.01.60.00.64.00.44.4F.FF.F0.0A.5E.14.54.02.04
15.05.B8.04.17.01.60.00.64.00.59.4B.FF.F0.0A.5E.14.54.02.04
15.05.B8.04.17.01.60.00.64.00.71.52.FF.F0.0A.5E.14.54.02.04
15.05.B8.04.17.01.60.00.64.00.85.47.FF.F0.0A.5E.14.54.02.04
15.05.B8.04.17.01.60.00.64.00.9A.51.FF.F0.0A.5E.14.54.02.04
15.05.B8.04.17.01.60.00.64.00.AA.42.FF.F0.0A.5E.14.54.02.04
15.05.B8.04.17.01.60.00.64.00.AB.50.FF.F0.0A.5E.14.54.02.04
15.05.B8.04.17.01.60.00.64.00.B1.43.FF.F0.0A.5E.14.54.02.04
15.05.B8.04.17.01.60.00.64.00.BF.4C.FF.F0.0A.5E.14.54.02.04
15.05.B8.04.17.01.60.00.64.00.C0.53.FF.F0.0A.5E.14.54.02.04
15.05.B8.04.17.01.60.00.64.00.C9.4A.FF.F0.0A.5E.14.54.02.04
15.05.B8.04.17.01.60.00.64.00.DA.42.FF.F0.0A.5E.14.54.02.04
15.05.B8.04.17.01.60.00.64.00.FD.4E.FF.F0.0A.5E.14.54.02.04
16.05.B8.04.17.01.60.00.64.00.15.56.FF.F0.0A.5E.14.54.02.04
18.05.B8.04.17.01.60.00.64.00.04.50.FF.F0.0A.5E.14.54.02.04
18.05.B8.04.17.01.60.00.64.00.30.53.FF.F0.0A.5E.14.54.02.04
18.05.B8.04.17.01.60.00.64.00.FD.4E.FF.F0.0A.5E.14.54.02.04
3E.05.BC.04.18.01.60.00.64.00.7E.FA.FF.F0.0A.5E.14.54.02.04
3F.05.BC.04.18.01.60.00.64.00.0E.FB.FF.F0.0A.5E.14.54.02.04
3F.05.BC.04.18.01.60.00.64.00.66.FA.FF.F0.0A.5E.14.54.02.04
3F.05.BC.04.18.01.60.00.64.00.7E.FA.FF.F0.0A.5E.14.54.02.04
3F.05.BC.04.18.01.60.00.64.00.96.FA.FF.F0.0A.5E.14.54.02.04
3F.05.BC.04.18.01.60.00.64.00.AE.FA.FF.F0.0A.5E.14.54.02.04
3F.05.BC.04.18.01.60.00.64.00.C6.FA.FF.F0.0A.5E.14.54.02.04
3F.05.BC.04.18.01.60.00.64.00.DE.FA.FF.F0.0A.5E.14.54.02.04
3F.05.BC.04.18.01.60.00.64.00.F6.FA.FF.F0.0A.5E.14.54.02.04
3F.05.BF.04.18.01.60.00.64.00.96.FA.FF.F0.0A.5E.14.54.02.04
48.05.BD.04.18.01.60.00.64.00.DE.FA.FF.F0.0A.5E.14.54.02.04
4A.05.BC.04.18.01.60.00.64.00.0E.FB.FF.F0.0A.5E.14.54.02.04
4A.05.BD.04.18.01.60.00.64.00.0E.FB.FF.F0.0A.5E.14.54.02.04
4A.05.BD.04.18.01.60.00.64.00.26.FB.FF.F0.0A.5E.14.54.02.04
4A.05.BD.04.18.01.60.00.64.00.96.FA.FF.F0.0A.5E.14.54.02.04
4A.05.BD.04.18.01.60.00.64.00.AE.FA.FF.F0.0A.5E.14.54.02.04
4A.05.BD.04.18.01.60.00.64.00.C6.FA.FF.F0.0A.5E.14.54.02.04
4A.05.BD.04.18.01.60.00.64.00.DE.FA.FF.F0.0A.5E.14.54.02.04
4A.05.BF.04.18.01.60.00.64.00.0E.FB.FF.F0.0A.5E.14.54.02.04
4A.05.BF.04.18.01.60.00.64.00.7E.FA.FF.F0.0A.5E.14.54.02.04
4A.05.BF.04.18.01.60.00.64.00.96.FA.FF.F0.0A.5E.14.54.02.04
4A.05.BF.04.18.01.60.00.64.00.AE.FA.FF.F0.0A.5E.14.54.02.04
4A.05.BF.04.18.01.60.00.64.00.C6.FA.FF.F0.0A.5E.14.54.02.04
4A.05.BF.04.18.01.60.00.64.00.DE.FA.FF.F0.0A.5E.14.54.02.04
4A.05.BF.04.18.01.60.00.64.00.F6.FA.FF.F0.0A.5E.14.54.02.04
4E.05.BF.04.18.01.60.00.64.00.F6.FA.FF.F0.0A.5E.14.54.02.04
61.05.BF.04.18.01.60.00.64.00.01.15.00.F0.0A.5E.14.54.02.04
61.05.BF.04.18.01.60.00.64.00.61.15.00.F0.0A.5E.14.54.02.04
61.05.BF.04.18.01.60.00.64.00.E9.14.00.F0.0A.5E.14.54.02.04
63.05.BF.04.18.01.60.00.64.00.01.15.00.F0.0A.5E.14.54.02.04
63.05.BF.04.18.01.60.00.64.00.12.14.00.F0.0A.5E.14.54.02.04
63.05.BF.04.18.01.60.00.64.00.2A.14.00.F0.0A.5E.14.54.02.04
63.05.BF.04.18.01.60.00.64.00.31.15.00.F0.0A.5E.14.54.02.04
63.05.BF.04.18.01.60.00.64.00.42.14.00.F0.0A.5E.14.54.02.04
63.05.BF.04.18.01.60.00.64.00.49.15.00.F0.0A.5E.14.54.02.04
63.05.BF.04.18.01.60.00.64.00.4F.0F.00.F0.0A.5E.14.54.02.04
63.05.BF.04.18.01.60.00.64.00.5A.14.00.F0.0A.5E.14.54.02.04
63.05.BF.04.18.01.60.00.64.00.72.14.00.F0.0A.5E.14.54.02.04
63.05.BF.04.18.01.60.00.64.00.8A.14.00.F0.0A.5E.14.54.02.04
63.05.BF.04.18.01.60.00.64.00.9B.13.00.F0.0A.5E.14.54.02.04
63.05.BF.04.18.01.60.00.64.00.B3.13.00.F0.0A.5E.14.54.02.04
63.05.BF.04.18.01.60.00.64.00.B9.14.00.F0.0A.5E.14.54.02.04
63.05.BF.04.18.01.60.00.64.00.D1.14.00.F0.0A.5E.14.54.02.04
63.05.BF.04.18.01.60.00.64.00.E9.14.00.F0.0A.5E.14.54.02.04
63.05.BF.04.18.01.60.00.64.00.FA.13.00.F0.0A.5E.14.54.02.04
63.05.C3.04.18.01.60.00.64.00.2A.14.00.F0.0A.5E.14.54.02.04
63.05.C3.04.18.01.60.00.64.00.5A.14.00.F0.0A.5E.14.54.02.04
63.05.C3.04.18.01.60.00.64.00.72.14.00.F0.0A.5E.14.54.02.04
63.05.C3.04.18.01.60.00.64.00.B3.13.00.F0.0A.5E.14.54.02.04
63.05.C3.04.18.01.60.00.64.00.E9.14.00.F0.0A.5E.14.54.02.04
E6.04.BF.04.09.01.60.00.5F.00.82.FE.FF.F0.0A.5E.14.54.02.04
E6.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
E6.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
E8.04.BD.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
E8.04.BF.04.09.01.60.00.5F.00.82.FE.FF.F0.0A.5E.14.54.02.04
E8.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
E8.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BD.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BD.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.82.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
EA.04.BF.04.09.01.60.00.5F.00.CA.FE.FF.F0.0A.5E.14.54.02.04
EA.04.C3.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04
EA.04.C3.04.09.01.60.00.5F.00.B2.FE.FF.F0.0A.5E.14.54.02.04
ED.04.BF.04.09.01.60.00.5F.00.9A.FE.FF.F0.0A.5E.14.54.02.04

View File

@@ -0,0 +1,19 @@
0 Battery voltage: 2D 2C 2D 2C 2D 2C 2D 2C 2D 2C 2D 2C 2D 2C 2D 1C 18 1C 18 15 18 15 18 15 0A 03 06 0A 06 03 06 0A 06 04 03 0A 04 06 03 06 04 06 04 03 06 04 03 04 06 03 06 04 03 06 03 04 06 03 04 03 06 03 06 04 03 06 03 06 03 06 03 06 03 06 03 06 03 06 03 06 03 06 03 06 03 06 FF 06 03 06 03 06 03 FF 03 FF 03 01 FF 03 FF 01 FF 03 01 03 FF 01 03 01 03 FF 01 03 FF 01 03 01 03 06 01 06 FF 01 FF 01 03 FF 01 FF 03 01 03 FF 01 03 FF 01 03 01 03 01 FF 03 FF 01 FF 01 03 FF 01 FF 01 FF 03 01 FF 03 FF 03 FF 03 FF 03 FC FF 03 FF FC FF 03 FF 03 FF 03 FF 03 FF 03 FF 03 FC FF 03 FF FD FC 03 FF 03 FF FD FC FF FD FC FF FD 03 FC FD FC FD FF FC FF FD FF FD FC FD FC FF FC FF FC FF FC FD FF FC FF FD FC FD FC FF FC F8 FF FC FF FC FF FC FF FC F8 FC F8 FC FF FC FF FC FF FC FA FC F8 FA FC F8 FA FC F8 FA F8 FC FA FC F8 FC FA FC F8 FA F8 FC FA FC FA FC F8 FC F8 FA F8 FC F8 FA F8 FC F8 FC F8 FA FC F8 FC F8 FC F8 FC F8 FC F8 FC F8 FC F8 FC F8 FC F8 FC F8 FC F4 F8 F4 F8 F4 F8 FC F8 FC F8 FC F6 F8 F6 F4 F8 F6 F8 FC F6 FC F8 F6 F8 F6 F4 F8 F6 F8 F4 F8 F6 F4 F8 F6 F8 F4 F6 F8 F6 F8 F6 F8 F4 F6 F8 FC F4 F6 FC F8 F6 F8 F4 F8 F6 F4 F8 F4 F6 F8 F6 F8 F6
1 Battery voltage: 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 04 05 05 05 05 05 05 04 05 04 05 05 04 05 04 05 04 05 05 05 04 05 05 05 05 04 05 05 04 05 05 05 05 05 05 05 04 05 04 05 05 04 05 04 05 05 05 04 05 05 04 05 05 05 05 05 04 05 04 05 04 05 05 04 05 04 05 04 05 05 04 05 04 05 04 05 04 05 04 04 05 04 04 04 05 04 05 04 05 04 05 04 05 04 05 04 04 05 04 04 04 05 04 05 04 04 04 04 04 04 04 04 05 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04
2 PV voltage: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
3 PV voltage: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
4 PV current: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
5 PV current: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
6 Unknown: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
7 Unknown: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
8 Battery status?: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
9 Unknown: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
10 Unknown: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
11 Unknown: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
12 PV controller status: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
13 Charged capacity: 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F
14 Charged capacity: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
15 Charged energy: 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C
16 Charged energy: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
17 PV power: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
18 PV power: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

View File

@@ -0,0 +1,372 @@
2D.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
2C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
2D.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
2C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
2D.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
2C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
2D.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
2C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
2D.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
2C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
2D.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
2C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
2D.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
2C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
2D.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
1C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
18.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
1C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
18.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
15.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
18.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
15.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
18.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
15.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
0A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
06.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
0A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
06.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
06.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
0A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
06.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
04.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
0A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
04.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
06.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
06.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
04.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
06.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
04.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
06.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
04.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
04.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
06.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
06.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
04.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
06.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
04.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
06.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
04.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
06.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
06.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
04.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
06.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
06.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
06.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
06.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
06.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
06.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
06.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
06.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
06.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
06.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
06.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
06.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
06.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
06.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
01.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
01.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
01.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
01.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
01.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
01.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
01.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
01.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
06.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
01.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
06.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
01.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
01.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
01.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
01.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
01.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
01.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
01.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
01.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
01.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
01.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
01.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
01.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
01.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FD.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FD.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FD.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FD.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
03.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FD.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FD.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FD.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FD.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FD.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FD.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FD.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FD.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FF.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FA.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FA.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FA.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FA.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FA.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FA.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FA.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FA.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FA.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FA.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FA.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FA.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F4.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F4.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F4.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F6.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F6.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F4.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F6.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F6.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F6.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F6.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F4.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F6.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F4.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F6.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F4.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F6.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F4.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F6.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F6.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F6.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F4.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F6.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F4.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F6.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
FC.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F6.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F4.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F6.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F4.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F4.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F6.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F6.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F8.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
F6.04.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00

View File

@@ -0,0 +1,19 @@
0 Battery voltage: 4A 46 4A 48 4A 46 4A 48 4A 46 48 4A 46 48 46 4A 48 46 4A 46 48 46 48 46 4A 48 4A 46 48 4A 48 4A 48 4A 48 46 4A 48 46 4A 48 46 4A 46 48 4A 46 48 4A 55 4A 4E 4A 4C 4A 4E 4A 4E 4C 4A 4E 4A 4E 4A 4E 4A 4E 4A 4C 4A 4E 4A 4E 4C 4E 4C 4E 4C 4A 4E 4A 4E 4C 4E 4A 4C 4E 4C 4E 4A 4E 4A 4C 51 4E 4C 4E 51 4E 51 4E 51 4E 51 4F 4E 51 4E 4F 4E 51 4F 51 4E 51 4F 51 4E 4F 51 4F 51 4E 4F 51 4F 51 4E 51 4F 51 55 51 53 51 55 51 53 55 51 55 51 55 53 51 55 53 55 53 55 53 58 55 58 51 55 58 53 55 53 55 58 55 58 55 58 55 58 55 58 55 56 58 55 56 55 56 58 55 58 56 55 56 58 55 53 55 51 55 51 56 55 58 55 53 55 58 55 58 55 58 55 56 55 58 55 56 58 55 58 55 58 56 55 58 55 58 56 58 56 58 55 56 55 58 56 58 55 58 56 55 58 5C 58 55 56 55 58 56 58 56 55 58 55 56 55 58 55 58 55 58 55 56 58 56 55 53 55 58 55 58 56 55 58 56 55 58 55 58 56 58 56 55 58 56 55 56 55 58 56 55 58 56 58 56 58 56 5C 55 58 56 58 5C 58 56 58 56 58 56 55 56 58 55 56 55 56 55 56 58 55 56 58 56 58 56 58 56 58 55 58 56 58 55 58 5C 58 5C 58 5C 58 5C 58 5C 58 5C 58 5C 58 5C 58 5C 58 5C 58 5C 58 56 58 55 58 5C 58 56 58 5C 5A 5C 58 56 58 5C 58 5C 58 55 58 5C 58 5C 5A 58 5C 5A 5C 58 5A 58 5C 5A 5C 58 5C 5A 58 5C 5A 58 5C 5A 58 5C 5A 5C 58 5A 58 5C 58 5C 58 5A 58 5C 5A 5C 5A 58 5C 58 5A 5C 58 5A 58 5C 58 5C 58 5A 5C 58 5C 58 5C 58 5A 5C 5A 58 5C 58 5A 58 5C 58 5C 5A 5C 5A 58 5A 5C 58 5A 58 5C 58 5C 5A 5C 58 5C 5A 5C 58 5A 5C 58 5C 5A 5C 5A 5C 5A 5F 58 5A 5C 5A 5C 5A 5C 5A 5C 5A 58 5C 5A 5C 5A 58 5C 5A 5C 58 5A 5C 58 5A 5C 5F 5A 5C 5A 5C 58 5A 5C 58 5C 5A 5C 58 5C 5A 5C 5A 5C 5F 5C 5A 5C
1 Battery voltage: 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
2 PV voltage: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
3 PV voltage: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
4 PV current: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
5 PV current: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
6 Unknown: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
7 Unknown: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
8 Battery status?: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
9 Unknown: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
10 Unknown: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
11 Unknown: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
12 PV controller status: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
13 Charged capacity: 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F
14 Charged capacity: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
15 Charged energy: 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C
16 Charged energy: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
17 PV power: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
18 PV power: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

View File

@@ -0,0 +1,512 @@
4A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
46.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
48.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
46.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
48.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
46.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
48.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
46.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
48.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
46.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
48.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
46.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
46.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
48.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
46.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
48.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
46.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
48.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
46.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
48.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
48.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
48.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
48.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
46.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
48.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
46.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
48.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
46.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
46.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
48.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
46.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
48.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4E.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4E.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4E.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4E.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4E.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4E.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4E.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4E.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4E.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4E.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4E.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4E.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4E.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4E.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4E.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4E.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4E.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
51.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4E.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4E.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
51.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4E.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
51.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4E.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
51.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4E.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
51.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4F.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4E.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
51.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4E.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4F.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4E.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
51.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4F.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
51.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4E.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
51.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4F.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
51.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4E.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4F.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
51.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4F.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
51.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4E.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4F.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
51.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4F.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
51.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4E.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
51.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
4F.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
51.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
51.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
53.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
51.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
51.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
53.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
51.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
51.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
53.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
51.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
53.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
53.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
53.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
51.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
53.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
53.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
56.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
56.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
56.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
56.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
56.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
53.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
51.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
51.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
56.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
53.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
56.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
56.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
56.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
56.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
56.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
56.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
56.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
56.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
56.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
56.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
56.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
56.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
56.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
56.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
53.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
56.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
56.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
56.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
56.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
56.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
56.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
56.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
56.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
56.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
56.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
56.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
56.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
56.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
56.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
56.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
56.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
56.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
56.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
56.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
56.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
56.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
56.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
56.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
56.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
56.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
56.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
55.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5F.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5F.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
58.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5F.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5A.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00
5C.05.00.00.00.00.00.00.00.00.00.00.00.1F.00.2C.00.00.00

View File

@@ -0,0 +1,19 @@
0 Battery voltage: 3F 3E 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3E 3F 3F 3F 3F 3E 3E 3E 3F 3F 3E 3E 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3E 3F 3F 3F 3E 3F 3F 3F 3F 3F 3F 3F 3F 3E 3E 3F 3F 3F 3F 3E 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3E 3E 3E 3E 3E 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3E 3E 3E 3E 3E 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3E 3E 3E 3F 3F 3F 3F 3F 3F 3F 3F 3F 3E 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3E 3F 3F 3F 3F 3E 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3E 3F 3F 3F 3F 3F 3F 3F 3F 3F 3E 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3E 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3E 3E 3E 3F 3F 43 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 43 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 43 3F 3F 3F 3F 3F 3F 3F 43 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 43 3F 3F 3F 43 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 43 43 3F 3F 3F 3F 3F 3F 41 41 3F 43 43 43 43 43 43 43 43 43 41 41 41 41 41 43 43 43 41 41 43 43 43 43 43 43 43 43 46 43 46 46 48 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 45 43 46 46 46 45 45 45 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 41 41 43 43 43 43 43 43 43 43 45 45 43 46 43 43 43 43 43 43 46 46 43 43 43 43 43 43 43 43 4A 45 45 43 46 43 45 46 4A 46 46 46 46 46 46 46 46 46 46 45 46 4A 46 46 46 46 46 46 46 46 46 46 46 48 48 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 4A 4A 4A 46 46 46 46 46 46 46 4A 4A 4A 4A 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 4A 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 4A 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 43 4A 46 46 4E 46 46 46 46 4A 46 46 4A 46 4A 4A 46 4A 4A 4A 4A 46 46 46 48 48 46 4A 46 48 48 48 46 4A 4C 4C 4C 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4C 4E 4E 4E 4E 51 51 51 51 51 51 4F 4F 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 55 51 51 55 51 51 51 51 51 51 51 51 51 51 51 51 51 55 55 55 55 55 55 55 55 55 55 55 53 53 55 55 53 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 58 55 55 55 55 55 55 55 56 56 58 58 58 58 56 56 56 56 56 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 5C 5C 58 58 58 5A 5A 5C 58 58 58 5A 58 58 5C 5C 5C 5A 5A 5A 5A 5A 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5F 5E 5F 5F 5F 5F 5E 5E 5E 5E 5E 5F 5F 5F 5F 5F 5F 5F 5F 5F 5E 5E 5E 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5E 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5E 5E 5F 5F 5F 5F 5E 5E 5E 5E 5E 5E 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5C 5C 5F 5C 5C 5C 5F 5F 5F 5C 5C 5C 5C 5C 5C 5C 5F 5C 5C 5C 5C 5F 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5A 5A 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 55 55 55 55 55 55 55 55 55 55 55 55 55 53 53 55 55 55 55 55 55 55 55 55 55 53 53 53 55 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 4F 4F 51 51 51 4E 51 51 51 51 51 51 4F 4F 4F 51 51 51 4F 4F 4F 51 51 51 51 51 4F 51 51 51 51 51 4F 51 51 51 51 4E 4E 4E 4F 4F 4E 51 51 4F 51 51 51 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 51 4E 4E 4E 4E 4E 4E 4E 4E 51 51 51 4F 4F 4F 4F 4F 4E 4E 51 4E 4E 51 4E 4E 4E 4E 51 51 51 51 51 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 51 51 4E 4E 4E 4E 51 51 51 51 4E 4E 4E 4E 51 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4F 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4F 4F 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 51 51 4F 4F 4F 4E 4E 4E 51 4E 4E 4E 4E 4E 51 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4F 4F 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E
1 Battery voltage: 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
2 PV voltage: 3E 36 38 76 56 42 2E 1A 08 F0 02 4A 62 46 30 24 0E 70 6C 5E 44 38 22 0A 6E 60 70 66 52 3E 1E 80 74 5E 4C 34 60 6A 5C 4E 34 28 16 2E 74 62 56 5C 4C 6C 6C 5E 44 38 2A 6E 6C B2 96 88 74 62 4E 8C 76 5E 8C B0 94 7E 72 5C 48 34 2C 9C A8 98 84 72 66 B4 A0 92 A0 B8 E0 CA B4 A0 8C 7C DA D0 BC A8 8C 82 66 58 A0 E0 DA C8 BA A0 9E 80 78 7C D4 E2 CE BC AA E6 DC CC BA F4 D4 E4 D4 BC A8 94 7E C8 E4 D0 DA DE CE BC F4 D6 CE B8 A8 8E 80 78 F4 DA C8 04 E6 FC D8 C6 B4 FA E0 CC 04 EC D6 E0 CC BC A6 94 7E 6A D4 04 EE DA C8 EE EC E4 F0 00 F0 28 10 FC E8 34 24 10 F8 E2 CE F2 1E 38 28 0E F6 FC 7A 64 76 7C A2 82 92 8A 82 90 72 82 74 80 A2 80 8E 84 9E A2 9E A0 80 98 8E 9E 7E 8A A8 E4 F6 DE 04 02 F2 FA F8 F6 F2 00 F8 0A 0E F4 EA 02 F2 02 12 12 F6 06 08 EE 0A EC 00 06 60 5E 86 78 70 72 7C 7A 7C 70 80 74 60 52 36 50 40 3E 28 50 76 56 6E 68 60 6A 4C 82 8C 72 8C 80 86 76 84 A0 82 8A 6A 8C 76 64 7A 6E 90 6E 96 8C 86 82 62 5A 58 6E 66 76 F2 2E 4C 60 56 6E 70 82 70 5C 40 58 70 6C 7C 62 6C 84 7E 96 E8 28 80 78 64 76 74 6C 5A 80 78 6C 14 1A 4A 62 78 6E 60 74 7A 5E 6E 6A 5E 7C 6E 66 52 80 68 86 7E 3E 76 90 76 EA 2A 3A 4A 4A 4E 7E 62 80 F0 32 50 4E 5A 46 72 58 88 6E A2 8E E6 2A E4 28 42 52 6E 7A 64 68 4C 5A 72 6C 92 E6 20 28 26 4C 70 68 80 6E 20 1A 48 3E 54 4E 7E 6C 6C D4 16 32 40 3C 5A 66 54 7E 58 F6 1C 40 56 64 80 8A EA 1E 2A 4C 64 70 6A 84 F2 36 30 6C 66 82 6C 8C 6E 7A 66 70 74 58 8A 8C EC 30 4C 4A 58 68 7C 92 14 28 38 50 62 5E 84 E0 20 38 42 40 68 60 68 7C 7E 68 62 76 E8 1C 38 34 5C 62 7C 5E 74 72 6A 04 1A 74 6C 48 58 5A 70 54 7C 88 46 16 18 4C 4A 3C 46 62 5C 78 5C 70 72 6C 7E 8A 78 88 70 8C 76 4C 6C 78 7C 5C 6E 62 72 72 8A 6C 58 6A 66 7A 36 76 28 4C 78 5C 6C 76 62 56 6E 62 76 0A 18 3E 64 54 52 54 6A 4E 54 6C 7A 2E 64 4C 76 62 58 5C 46 66 62 74 72 76 90 04 58 7E 96 12 2C 22 52 38 54 80 58 7A 48 DA F8 2E 46 1C 3C 5E 50 6E 6C 5A 4C 48 66 76 70 72 D8 18 32 4A 56 76 82 78 D6 08 02 36 44 48 64 5E 60 64 4C 62 62 6C 48 60 62 6A 5C 5A 78 76 40 26 20 3A 40 4A 30 50 60 78 74 58 5E 6A 74 EA 2C 46 40 58 54 44 70 52 78 6A 62 76 74 64 48 52 40 76 5E 46 6E 6A 64 56 74 44 5E 64 70 66 58 B4 EC 0A 16 36 4E 5A 78 80 E8 F6 EC 00 34 4E 4C 64 62 44 66 5E 14 D4 E2 DA 0C 28 30 26 54 70 60 56 54 58 70 52 56 62 72 E2 1C 28 34 50 66 7A 5A F2 10 16 5C 48 6E 4A 64 58 60 52 42 64 72 78 8E 78 0C 1E 14 44 62 5A 62 7C 26 60 66 68 6E 66 70 54 76 68 84 68 8A 6E 7E 76 58 82 7E 8E 80 7C 7E 6E 5C 80 6C 86 78 76 7E 70 4E 5A 6A 68 4E 6E 58 68 58 48 76 60 7C 5A 80 8C 6A 82 80 88 72 5C 6C 66 76 72 6E 64 54 7C 6E 4E 78 94 50 80 60 78 56 76 5C 58 68 54 58 58 76 6A 72 68 6A 66 6A 52 66 70 6C 6E 7A 5C 58 6A 64 6C 82 26 30 48 4A 46 68 50 40 66 42 34 5E 44 60 4C 64 70 5E 56 4C 46 5C 64 6C 6E 74 76 6C 6A 78 72 88 02 1E 34 2C 4C 48 4E 4C 58 3C 5A 52 76 54 60 52 5E 58 64 78 78 50 4E 42 46 5C 44 48 2A 5E 70 4C 6E 46 42 58 66 52 68 50 3C 50 66 48 66 5E 82 6E 36 42 66 60 44 4A 3C 54 3A 52 66 74 64 4E 62 58 70 80 6E 56 64 56 4C 36 52 6C 4E 42 4A 5A 5E 42 68 64 7C 6C 56 44 5C 48 3C 58 54 3A 46 50 54 50 4A 62 50 66 58 74 50 72 00 1E 2E 28 4C 68 48 5E 72 54 58 66 50 46 3E 5E 4E 46 64 5E 5C 4A 3A 5A 46 58 56 3A 62 74 5A 2C 3E 2C 32 1E 2A 40 3C 54 38 42 56 50 64 42 48 62 6E 62 36 2C 40 58 56 64 4C 44 5A 6C 60 5C 58 62 58 52 40 5A 50 64 4C 68 7E F4 24 1E 34 56 42 56 58 66 72 88 84 7A 88 64 54 4C 40 64 5E 40 56 58 64 74 50 7E E8 2A 40 3A 48 50 52 68 42 50 4A 48 50 4A 52 42 4E 5A EA 1C 3A 54 5E 48 4E 5C 54 6E 5E 48 5E 54 4C 4A 68 5E 58 62 5A 44 36 64 72 6A 66 6E 5A 70 46 DE 0C 2A 44 42 5A 6A 80 6A F8 18 1A 22 3E 3C 68 4C 56 5E 44 46 60 4C 3E 66 40 50 4C 4A 48 78 12 46 40 42 4E 3A 66 4E 64 EE 28 34 40 4C 10 32 46 60 4C 52 54 60 6C 68 38 CA E2 0A 18 1A 38 44 64 86 10 C2 F2 0A 02 32 2A 36 48 44 5A 42 4A 42 72 50 6E 7A D2 04 1A 16 2E 28 3A 4E 4A 10 EC FE 18 30 32 30 56 5A 3A 62 4C 68 60 F0 00 28 C4 EE 0E 1A 20 26 56 54 6A 4A 52 54 66 5E 48 5E 5A 40 58 5A 6A 4E 42 68 4C 5E 42 68 60 04 C8 C6 F6 EE EE 20 2E 32 4E 52 50 38 3C 4C 66 D8 EA 02 18 14 48 32 50 5A 6A 2E DE 04 18 12 3C 4A 2E 56 70 4E 18 50 4A 4E 38 68 62 0E C0 F0 FA 04 36 4A 42 44 F0 04 02 30 44 30 46 48 4E D6 F6 14 1C 42 28 56 40 58 40 68 62 1C 3C 40 4E 5A 4E EC 02 2C 44 5A 40 52 48 5C 4A 3C 48 78 F2 B6 C4 EC FE 18 2E 40 26 4C 5E 42 56 66 5E F0 18 34 40 44 48 56 3E 4C 76 60 10 4C 62 6E 6C E6 1C 2C 34 42 40 48 62 6C 40 D0 0C 1A 3C 30 50 4A 42 3C 3E 50 E4 0E 26 34 52 5E 0A 0E 06 20 4C 46 32 60 6E 44 C6 FC 10 32 3A 56 60 78 0C 4A 38 4A 34 52 34 DE FA 20 3E 48 42 48 5A 4C 3A 58 30 5E 4E
3 PV voltage: 06 06 06 06 06 06 06 06 06 05 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 07 06 06 06 06 06 06 06 06 07 06 06 06 06 06 06 06 06 06 06 07 06 06 06 06 06 06 06 07 06 07 07 06 06 07 07 07 06 06 06 06 07 07 07 07 06 06 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 08 08 07 07 07 07 07 08 07 08 08 07 07 08 07 08 08 08 07 08 08 07 08 07 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 07 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 07 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 07 08 08 08 08 08 08 08 08 07 08 08 08 08 08 08 08 08 08 08 08 07 08 07 08 08 08 08 08 08 08 08 08 08 08 08 07 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 07 08 08 08 08 08 08 08 08 08 07 08 08 08 08 08 08 07 08 08 08 08 08 08 08 07 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 07 08 08 08 08 08 08 08 08 08 08 08 08 08 08 07 08 08 08 08 08 08 08 08 08 08 08 08 07 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 07 07 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 07 08 08 08 08 08 08 08 07 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 07 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 07 07 08 08 08 08 08 08 08 07 07 07 08 08 08 08 08 08 08 08 08 08 07 07 07 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 07 08 08 08 08 08 08 08 07 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 07 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 07 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 07 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 07 08 08 08 08 08 08 08 08 07 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 07 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 07 07 08 08 08 08 08 08 08 08 07 07 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 07 08 08 08 08 08 08 08 08 08 07 07 08 08 08 08 08 08 08 08 08 08 08 07 08 08 07 07 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 07 07 07 07 07 08 08 08 08 08 08 08 08 08 08 07 07 08 08 08 08 08 08 08 08 08 07 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 07 07 07 08 08 08 08 08 07 08 08 08 08 08 08 08 08 07 07 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 07 08 08 08 08 08 08 08 08 08 08 08 08 07 07 07 07 07 08 08 08 08 08 08 08 08 08 08 07 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 07 08 08 08 08 08 08 08 08 08 07 08 08 08 08 08 08 08 08 08 08 07 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 07 07 08 08 08 08 08 08 08 08 08 08 08 08 08 07 07 08 08 08 08 08 08 08 08 08 08 08 08
4 PV current: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 01 01 01 00 00 00 00 00 00 00 01 01 01 00 00 00 00 01 01 01 01 00 00 00 00 00 00 00 01 00 00 00 00 01 01 00 01 01 01 01 01 01 01 00 00 01 00 01 00 01 01 01 01 00 01 01 01 01 01 01 01 01 01 01 01 01 01 00 01 00 01 01 01 01 01 01 01 01 01 01 01 01 01 00 01 01 00 01 01 01 01 01 00 01 01 01 01 01 00 01 01 01 01 02 01 01 01 01 01 01 01 01 01 01 01 02 02 01 02 02 02 02 03 03 03 03 02 03 03 02 03 02 02 03 02 02 03 02 03 03 03 03 03 03 03 03 03 03 03 02 03 03 05 05 04 04 04 05 05 05 05 05 05 04 05 04 04 05 05 05 04 05 05 04 05 04 04 05 05 05 05 05 05 05 05 05 05 05 04 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 06 05 05 05 06 05 05 05 05 05 05 05 05 06 06 05 05 05 05 05 05 05 05 04 05 06 05 05 05 05 05 05 05 05 05 05 05 05 05 04 05 05 05 05 05 05 05 04 05 04 04 04 04 04 03 03 03 04 04 04 04 04 04 04 03 04 03 04 04 04 04 04 04 04 04 04 04 04 04 04 06 05 06 06 06 06 06 06 05 06 05 05 06 05 06 05 06 05 06 06 06 06 06 06 06 06 05 06 06 06 06 05 05 05 05 06 05 05 05 05 05 05 05 05 05 05 05 05 06 05 05 05 05 05 05 05 05 05 06 06 06 06 06 06 06 06 06 06 06 07 07 06 06 06 06 06 06 06 05 06 05 05 05 05 05 05 05 05 05 05 06 06 05 06 06 06 06 05 06 05 06 06 05 05 05 06 05 05 05 05 05 05 05 05 05 05 05 04 04 04 04 04 04 04 04 04 04 04 03 04 04 04 04 04 04 04 04 04 04 03 04 03 04 03 05 04 04 03 05 04 04 04 04 05 04 04 04 04 05 05 04 04 04 04 04 04 04 03 04 04 04 04 03 03 04 05 04 04 04 04 04 03 04 05 05 05 04 04 04 04 05 05 05 05 04 05 05 05 05 04 05 04 05 04 04 05 05 05 05 04 05 05 04 04 04 04 04 04 04 04 04 04 04 04 03 03 04 03 04 03 04 04 03 03 03 03 03 04 03 03 03 03 03 03 03 03 01 01 01 01 01 02 02 02 02 02 02 01 01 01 01 02 02 02 02 02 02 01 01 01 02 01 02 03 03 03 03 03 03 03 03 03 02 02 03 02 03 02 03 03 02 03 03 03 03 03 03 03 03 03 03 03 03 06 06 06 06 06 06 06 07 06 06 06 06 06 06 07 07 07 07 07 07 07 06 07 06 06 0A 0B 0B 0B 0B 0B 0B 0A 0B 0A 0A 0B 0A 0B 0B 0A 0A 0A 0B 0A 0B 0B 0A 0B 0A 0B 0A 0A 0B 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 09 09 09 09 0A 09 09 0A 09 0A 09 09 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0B 09 09 09 08 0A 09 09 09 09 09 09 09 09 0A 0A 0A 0A 0A 09 09 08 09 09 09 09 09 09 09 08 08 09 09 09 08 09 08 09 0A 09 09 09 09 09 0A 09 0A 09 09 09 0A 0A 09 09 0A 09 09 09 0A 0A 09 0A 09 09 0A 0A 09 09 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 09 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 09 0A 0A 0A 0A 09 09 09 09 09 09 09 0A 0A 0A 0A 09 0A 0A 0A 09 09 09 0A 09 09 09 0A 0A 09 0A 0A 09 09 0A 0A 0A 09 09 09 0A 0A 09 0A 09 0A 09 0A 0A 0A 0A 0A 0A 0A 0A 0A 0B 0B 0B 0B 0B 0B 0A 0B 0B 0B 0A 0A 0A 0B 0B 0B 0B 0B 0B 0A 0A 0B 09 09 09 09 09 09 09 09 09 09 09 08 09 08 09 09 08 08 08 09 09 09 08 08 08 08 08 08 07 07 08 09 08 09 08 09 08 09 08 09 09 08 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 0A 09 08 08 08 08 08 07 07 07 08 08 08 08 08 08 08 08 08 08 08 07 08 07 08 08 08 07 07 07 07 06 07 07 06 06 06 06 06 07 06 07 06 07 06 07 06 07 07 06 07 06 06 06 06 06 06 05 05 06 06 06 05 06 05 05 05 04 06 06 05 05 05 05 05 05 05 05 05 05 05 05 05 04 04 04 04 02 02 02 03 03 02 02 02 03 02 02 02 03 03 02 02 02 03 02 02 02 02 02 02 01 01 01 02 02 02 02 02 02 02 02 01 01 02 03 03 02 02 02 02 03 02 02 02 02 02 02 03 02 02 02 03 02 02 02 02 02 02 01 02 02 02 02 02 02 01 01 01 01 01 02 01 01 01 02 02 03 03 03 03 03 03 03 02 03 02 02 02 03 02 02 03 02 02 03 02 03 02 02 03 02 02 02 02 02 02 03 03 03 03 03 03 03 03 03 02 03 02 02 02 03 02 03 03 03 03 03 02 03 02 02 02 03 03 03 03 03 02 02 03 03 02 03 03 02 02 03 02 02 02 03 03 03 03 03 03 02 02 03 03 03 03 03 03 03 03 02 03 03 03 03 03 03 03 02 02 02 03 02 02 03 03 02 03 03 03 03 03 03 03 02 03 03 02 02 03 02 02 03 03 03 03 03 03 03 03 03 03 03 02 02 02 02 02 03 03 03 02 02 02 02 03 02 02 02 02 03 02 02 02 03 03 02 03 02 02 03 02 02 03 03 03 03 03 03 03 03 03 02 02 03 03 03 03 03 02 02 03 02 03 03 02 03 02 02 02 03 03 03 03 03 03 02 02 02 03 03 03 03 03 02 03 03 03 03 03 02 02 02 03 03 03 02 03 02 02
5 PV current: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
6 Unknown: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
7 Unknown: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
8 Battery status?: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
9 Unknown: 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B
10 Unknown: 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56
11 Unknown: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
12 PV controller status: 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09
13 Charged capacity: 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
14 Charged capacity: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
15 Charged energy: 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E
16 Charged energy: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
17 PV power: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0E 00 0E 0E 0E 00 00 00 00 00 00 00 0E 0E 0E 00 00 00 00 0E 0E 0E 0E 00 00 00 00 00 00 00 0E 00 00 00 00 0E 0E 00 0E 0E 0E 0E 0E 0E 0E 00 00 0E 00 0E 00 0E 0E 0E 0E 00 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 00 0E 00 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 00 0E 0E 00 0E 0E 0E 0E 0E 00 0E 0E 0E 0E 0E 00 0E 0E 0E 0E 1C 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 1C 1C 0E 1C 1C 1C 1C 2A 2A 2A 2A 1C 2A 2A 1C 2A 1C 1C 2A 1C 1C 2A 1C 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 1C 2A 2A 47 47 39 39 39 47 47 47 47 47 47 39 47 39 39 47 47 47 39 47 47 39 47 39 39 47 47 47 47 47 47 47 47 47 47 47 39 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 55 47 47 47 55 47 47 47 47 47 47 47 47 55 55 47 47 47 47 47 47 47 47 39 47 55 47 47 47 47 47 47 47 47 47 47 47 47 47 39 47 47 47 47 47 47 47 39 47 39 39 39 39 39 2A 2A 2A 39 39 39 39 39 39 39 2A 39 2A 39 39 39 39 39 39 39 39 39 39 39 39 39 55 47 55 55 55 55 55 55 47 55 47 47 55 47 55 47 55 47 55 55 55 55 55 55 55 55 47 55 55 55 55 47 47 47 47 55 47 47 47 47 47 47 47 47 47 47 47 47 55 47 47 47 47 47 47 47 47 47 55 55 55 56 55 56 56 56 55 55 55 64 64 55 55 55 55 55 55 55 47 55 47 47 47 47 47 47 47 47 47 47 55 55 47 55 55 55 55 47 55 47 55 55 47 47 47 55 47 47 47 47 47 47 47 47 47 47 47 39 39 39 39 39 39 39 39 39 39 39 2A 39 39 39 39 39 39 39 39 39 39 2B 39 2B 39 2B 47 39 39 2B 47 39 39 39 39 47 39 39 39 39 47 47 39 39 39 39 39 39 39 2B 39 39 39 39 2B 2B 39 47 39 39 39 39 39 2B 39 47 47 47 39 39 39 39 47 47 47 47 39 47 47 47 47 39 48 39 48 39 39 47 47 47 47 39 48 48 39 39 39 39 39 39 39 39 39 39 39 39 2B 2B 39 2B 39 2B 39 39 2B 2B 2B 2B 2B 39 2B 2B 2B 2B 2B 2B 2B 2B 0E 0E 0E 0E 0E 1C 1C 1C 1C 1C 1C 0E 0E 0E 0E 1C 1C 1C 1C 1C 1C 0E 0E 0E 1C 0E 1C 2B 2B 2B 2B 2B 2B 2B 2B 2B 1C 1C 2B 1C 2B 1C 2B 2B 1C 2B 2B 2B 2A 2B 2B 2B 2B 2B 2B 2B 2B 56 56 56 56 56 56 56 64 56 56 56 56 56 56 64 64 64 64 64 64 64 56 64 56 56 90 9E 9E 9E 9E 9E 9E 90 9E 90 90 9E 90 9E 9E 90 90 90 9E 90 9E 9E 90 9E 90 9E 90 90 9E 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 82 82 82 82 90 82 82 90 82 90 82 82 90 91 90 90 90 91 90 90 90 90 90 90 90 90 90 90 90 9F 82 82 82 74 91 82 82 82 82 82 82 82 82 91 91 91 91 91 82 82 74 82 82 82 82 82 82 82 74 74 82 82 82 74 82 74 82 91 82 82 82 82 82 91 82 91 82 82 82 91 91 82 82 91 82 82 82 91 91 82 91 82 82 91 91 82 82 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 82 91 91 91 91 91 91 91 91 91 91 83 91 91 91 91 83 83 83 82 82 82 83 91 91 91 91 83 91 91 91 83 83 83 91 83 83 83 91 91 83 91 91 83 83 91 91 91 83 83 83 91 91 83 91 83 91 83 91 91 91 91 91 91 91 91 92 A0 A0 A0 A0 A0 A0 92 A0 A0 A0 92 92 92 A0 A0 A0 A0 A0 A0 92 92 A0 83 83 83 83 83 83 83 83 83 83 83 75 83 75 83 83 75 75 74 83 83 83 75 75 75 75 75 75 66 66 75 83 75 83 75 83 75 83 75 83 83 75 83 83 83 83 83 83 83 83 83 83 83 83 83 83 83 83 83 92 83 74 74 75 75 75 66 66 66 74 74 74 74 75 75 75 75 75 75 75 66 75 66 75 75 75 66 66 66 66 57 66 66 57 57 57 57 57 66 57 66 57 66 57 66 57 66 66 57 66 57 57 57 57 57 57 48 48 57 57 57 48 57 48 48 48 3A 57 57 48 48 48 48 48 48 48 48 48 48 48 48 48 3A 3A 3A 3A 1D 1D 1D 2B 2B 1D 1D 1D 2B 1D 1D 1D 2B 2B 1D 1D 1D 2B 1D 1D 1D 1D 1D 1D 0E 0E 0E 1D 1D 1D 1D 1D 1D 1D 1D 0E 0E 1D 2B 2B 1D 1D 1D 1D 2B 1D 1D 1D 1D 1D 1C 2B 1C 1C 1C 2B 1C 1C 1C 1C 1C 1C 0E 1C 1C 1C 1C 1C 1C 0E 0E 0E 0E 0E 1C 0E 0E 0E 1C 1C 2B 2B 2B 2B 2B 2B 2B 1C 2B 1C 1C 1C 2B 1C 1C 2B 1C 1C 2B 1C 2B 1C 1C 2B 1C 1C 1C 1C 1C 1C 2B 2B 2B 2B 2B 2B 2B 2B 2B 1C 2B 1C 1C 1C 2B 1C 2B 2B 2B 2B 2B 1C 2B 1C 1C 1C 2B 2B 2B 2B 2B 1C 1C 2B 2B 1C 2B 2B 1C 1C 2B 1C 1C 1C 2B 2B 2B 2B 2B 2B 1C 1C 2B 2B 2B 2B 2B 2B 2B 2B 1C 2B 2B 2B 2B 2B 2B 2B 1C 1C 1C 2B 1C 1C 2B 2B 1C 2B 2B 2B 2B 2B 2B 2B 1C 2B 2B 1C 1C 2B 1C 1C 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 1C 1C 1C 1C 1C 2B 2B 2B 1C 1C 1C 1C 2B 1C 1C 1C 1C 2B 1C 1C 1C 2B 2B 1C 2B 1C 1C 2B 1C 1C 2B 2B 2B 2B 2B 2B 2B 2B 2B 1C 1C 2B 2B 2B 2B 2B 1C 1C 2B 1C 2B 2B 1C 2B 1C 1C 1C 2B 2B 2B 2B 2B 2B 1C 1C 1C 2B 2B 2B 2B 2B 1C 2B 2B 2B 2B 2B 1C 1C 1C 2B 2B 2B 1C 2B 1C 1C
18 PV power: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,19 @@
0 Battery voltage: 0A 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 13 13 13 13 13 15 15 15 15 15 15 15 15 15 15 15 15 15 15 16 16 18 18 18 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 4A 61 61 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 E6 E8 E8 EA EA EA ED
1 Battery voltage: 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 04 04 04 04 04 04 04
2 PV voltage: B8 04 6C 76 80 82 84 88 94 9A AC B2 C6 CA D0 D2 D4 D6 DA DC DE E8 EA EC EE F0 F4 F4 08 14 68 8C 94 9A C2 C8 CE DA DE E0 E2 E6 E8 EE F0 F0 F2 F4 F6 FA FC FE FE C4 C6 CE D0 D6 04 08 0C 0C 1A 22 D6 E2 F0 F6 F8 FA FC FE 06 10 04 16 E4 02 10 12 16 24 30 32 34 38 38 3A 3E 40 42 44 46 48 4A 50 52 54 56 58 5C 5E 60 62 B4 BE EA EC F8 FC 00 08 0E 18 1A 1C 1E 20 2C 30 32 36 38 3E 40 44 46 48 4A 52 54 56 5A 60 BC DC E2 E6 EC EE F0 FA FE 38 3C 00 06 0E 2A 2C 2E 30 30 34 34 36 38 3A 3C 3E 40 42 44 48 4A 4E 50 52 54 AC E6 76 74 76 74 76 78 76
3 PV voltage: 07 08 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 08 08 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 08 08 08 08 08 08 07 07 07 07 07 07 07 07 08 08 08 08 07 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 07 07 07 07 07 07 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 07 07 07 07 07 07 07 07 07 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 07 07 05 05 05 05 05 05 05
4 PV current: 02 02 02 02 02 02 02 01 02 02 02 02 02 02 02 01 02 02 02 02 02 02 02 02 02 02 01 02 01 01 02 02 02 02 02 02 02 02 02 02 02 02 01 02 01 02 01 02 02 02 02 01 02 02 02 02 02 02 02 02 01 02 01 02 02 02 02 02 01 02 02 02 02 02 02 01 02 02 01 02 01 02 01 01 01 01 02 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 02 02 02 02 01 02 02 01 02 01 02 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 02 02 02 02 02 02 02 02 02 01 01 02 02 01 02 01 01 01 02 01 02 01 01 01 01 01 01 01 01 01 01 01 01 01 01 02 02 00 00 00 00 00 00 00
5 PV current: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
6 Unknown: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
7 Unknown: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
8 Battery status?: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
9 Unknown: 14 14 13 13 13 13 13 13 13 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 13 13 13 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 06 06 06 06 06 06 06
10 Unknown: 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56
11 Unknown: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
12 PV controller status: 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09
13 Charged capacity: 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 18 18 18 18 18 18 18
14 Charged capacity: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
15 Charged energy: 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 22 22 22 22 22 22 22
16 Charged energy: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
17 PV power: 1B 1B 1B 1B 1B 1B 1B 0D 1B 1B 1B 1B 1B 1B 1B 0D 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 0D 1B 0D 0D 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 0D 1B 0D 1B 0D 1B 1B 1B 1B 0D 1B 1B 1B 1B 1B 1B 1B 1B 0D 1B 0D 1B 1B 1B 1B 1B 0D 1B 1B 1B 1B 1B 1B 0D 1B 1C 0E 1C 0E 1C 0E 0E 0E 0E 1C 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 1C 1C 1C 1C 0E 1C 1C 0E 1C 0E 1C 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 1C 1C 1C 1C 1C 1C 1C 1C 1C 0E 0E 1D 1D 0E 1D 0E 0E 0E 1D 0E 1D 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 1D 1D 00 00 00 00 00 00 00
18 PV power: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

View File

@@ -0,0 +1,178 @@
0A.05.B8.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
0D.05.04.08.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
0D.05.6C.07.02.00.00.00.00.13.56.00.09.14.00.1D.00.1B.00
0D.05.76.07.02.00.00.00.00.13.56.00.09.14.00.1D.00.1B.00
0D.05.80.07.02.00.00.00.00.13.56.00.09.14.00.1D.00.1B.00
0D.05.82.07.02.00.00.00.00.13.56.00.09.14.00.1D.00.1B.00
0D.05.84.07.02.00.00.00.00.13.56.00.09.14.00.1D.00.1B.00
0D.05.88.07.01.00.00.00.00.13.56.00.09.14.00.1D.00.0D.00
0D.05.94.07.02.00.00.00.00.13.56.00.09.14.00.1D.00.1B.00
0D.05.9A.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
0D.05.AC.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
0D.05.B2.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
0D.05.C6.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
0D.05.CA.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
0D.05.D0.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
0D.05.D2.07.01.00.00.00.00.14.56.00.09.14.00.1D.00.0D.00
0D.05.D4.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
0D.05.D6.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
0D.05.DA.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
0D.05.DC.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
0D.05.DE.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
0D.05.E8.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
0D.05.EA.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
0D.05.EC.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
0D.05.EE.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
0D.05.F0.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
0D.05.F4.07.01.00.00.00.00.14.56.00.09.14.00.1D.00.0D.00
0D.05.F4.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
11.05.08.08.01.00.00.00.00.14.56.00.09.14.00.1D.00.0D.00
11.05.14.08.01.00.00.00.00.14.56.00.09.14.00.1D.00.0D.00
11.05.68.07.02.00.00.00.00.13.56.00.09.14.00.1D.00.1B.00
11.05.8C.07.02.00.00.00.00.13.56.00.09.14.00.1D.00.1B.00
11.05.94.07.02.00.00.00.00.13.56.00.09.14.00.1D.00.1B.00
11.05.9A.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
11.05.C2.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
11.05.C8.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
11.05.CE.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
11.05.DA.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
11.05.DE.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
11.05.E0.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
11.05.E2.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
11.05.E6.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
11.05.E8.07.01.00.00.00.00.14.56.00.09.14.00.1D.00.0D.00
11.05.EE.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
11.05.F0.07.01.00.00.00.00.14.56.00.09.14.00.1D.00.0D.00
11.05.F0.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
11.05.F2.07.01.00.00.00.00.14.56.00.09.14.00.1D.00.0D.00
11.05.F4.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
11.05.F6.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
11.05.FA.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
11.05.FC.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
11.05.FE.07.01.00.00.00.00.14.56.00.09.14.00.1D.00.0D.00
11.05.FE.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
13.05.C4.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
13.05.C6.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
13.05.CE.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
13.05.D0.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
13.05.D6.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
15.05.04.08.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
15.05.08.08.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
15.05.0C.08.01.00.00.00.00.14.56.00.09.14.00.1D.00.0D.00
15.05.0C.08.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
15.05.1A.08.01.00.00.00.00.14.56.00.09.14.00.1D.00.0D.00
15.05.22.08.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
15.05.D6.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
15.05.E2.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
15.05.F0.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
15.05.F6.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
15.05.F8.07.01.00.00.00.00.14.56.00.09.14.00.1D.00.0D.00
15.05.FA.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
15.05.FC.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
15.05.FE.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
16.05.06.08.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
16.05.10.08.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
18.05.04.08.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
18.05.16.08.01.00.00.00.00.14.56.00.09.14.00.1D.00.0D.00
18.05.E4.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1B.00
3F.05.02.08.02.00.00.00.00.14.56.00.09.14.00.1D.00.1C.00
3F.05.10.08.01.00.00.00.00.14.56.00.09.14.00.1D.00.0E.00
3F.05.12.08.02.00.00.00.00.14.56.00.09.14.00.1D.00.1C.00
3F.05.16.08.01.00.00.00.00.14.56.00.09.14.00.1D.00.0E.00
3F.05.24.08.02.00.00.00.00.14.56.00.09.14.00.1D.00.1C.00
3F.05.30.08.01.00.00.00.00.14.56.00.09.14.00.1D.00.0E.00
3F.05.32.08.01.00.00.00.00.14.56.00.09.14.00.1D.00.0E.00
3F.05.34.08.01.00.00.00.00.14.56.00.09.14.00.1D.00.0E.00
3F.05.38.08.01.00.00.00.00.14.56.00.09.14.00.1D.00.0E.00
3F.05.38.08.02.00.00.00.00.14.56.00.09.14.00.1D.00.1C.00
3F.05.3A.08.01.00.00.00.00.14.56.00.09.14.00.1D.00.0E.00
3F.05.3E.08.01.00.00.00.00.14.56.00.09.14.00.1D.00.0E.00
3F.05.40.08.01.00.00.00.00.14.56.00.09.14.00.1D.00.0E.00
3F.05.42.08.01.00.00.00.00.14.56.00.09.14.00.1D.00.0E.00
3F.05.44.08.01.00.00.00.00.14.56.00.09.14.00.1D.00.0E.00
3F.05.46.08.01.00.00.00.00.14.56.00.09.14.00.1D.00.0E.00
3F.05.48.08.01.00.00.00.00.14.56.00.09.14.00.1D.00.0E.00
3F.05.4A.08.01.00.00.00.00.14.56.00.09.14.00.1D.00.0E.00
3F.05.50.08.01.00.00.00.00.14.56.00.09.14.00.1D.00.0E.00
3F.05.52.08.01.00.00.00.00.14.56.00.09.14.00.1D.00.0E.00
3F.05.54.08.01.00.00.00.00.14.56.00.09.14.00.1D.00.0E.00
3F.05.56.08.01.00.00.00.00.14.56.00.09.14.00.1D.00.0E.00
3F.05.58.08.01.00.00.00.00.14.56.00.09.14.00.1D.00.0E.00
3F.05.5C.08.01.00.00.00.00.14.56.00.09.14.00.1D.00.0E.00
3F.05.5E.08.01.00.00.00.00.14.56.00.09.14.00.1D.00.0E.00
3F.05.60.08.01.00.00.00.00.14.56.00.09.14.00.1D.00.0E.00
3F.05.62.08.01.00.00.00.00.14.56.00.09.14.00.1D.00.0E.00
3F.05.B4.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1C.00
3F.05.BE.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1C.00
3F.05.EA.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1C.00
3F.05.EC.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1C.00
3F.05.F8.07.01.00.00.00.00.14.56.00.09.14.00.1D.00.0E.00
3F.05.FC.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1C.00
4A.05.00.08.02.00.00.00.00.14.56.00.09.14.00.1D.00.1C.00
4A.05.08.08.01.00.00.00.00.14.56.00.09.14.00.1D.00.0E.00
4A.05.0E.08.02.00.00.00.00.14.56.00.09.14.00.1D.00.1C.00
4A.05.18.08.01.00.00.00.00.14.56.00.09.14.00.1D.00.0E.00
4A.05.1A.08.02.00.00.00.00.14.56.00.09.14.00.1D.00.1C.00
4A.05.1C.08.01.00.00.00.00.14.56.00.09.14.00.1D.00.0E.00
4A.05.1E.08.01.00.00.00.00.14.56.00.09.14.00.1D.00.0E.00
4A.05.20.08.01.00.00.00.00.14.56.00.09.14.00.1D.00.0E.00
4A.05.2C.08.01.00.00.00.00.14.56.00.09.14.00.1D.00.0E.00
4A.05.30.08.01.00.00.00.00.14.56.00.09.14.00.1D.00.0E.00
4A.05.32.08.01.00.00.00.00.14.56.00.09.14.00.1D.00.0E.00
4A.05.36.08.01.00.00.00.00.14.56.00.09.14.00.1D.00.0E.00
4A.05.38.08.01.00.00.00.00.14.56.00.09.14.00.1D.00.0E.00
4A.05.3E.08.01.00.00.00.00.14.56.00.09.14.00.1D.00.0E.00
4A.05.40.08.01.00.00.00.00.14.56.00.09.14.00.1D.00.0E.00
4A.05.44.08.01.00.00.00.00.14.56.00.09.14.00.1D.00.0E.00
4A.05.46.08.01.00.00.00.00.14.56.00.09.14.00.1D.00.0E.00
4A.05.48.08.01.00.00.00.00.14.56.00.09.14.00.1D.00.0E.00
4A.05.4A.08.01.00.00.00.00.14.56.00.09.14.00.1D.00.0E.00
4A.05.52.08.01.00.00.00.00.14.56.00.09.14.00.1D.00.0E.00
4A.05.54.08.01.00.00.00.00.14.56.00.09.14.00.1D.00.0E.00
4A.05.56.08.01.00.00.00.00.14.56.00.09.14.00.1D.00.0E.00
4A.05.5A.08.01.00.00.00.00.14.56.00.09.14.00.1D.00.0E.00
4A.05.60.08.01.00.00.00.00.14.56.00.09.14.00.1D.00.0E.00
4A.05.BC.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1C.00
4A.05.DC.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1C.00
4A.05.E2.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1C.00
4A.05.E6.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1C.00
4A.05.EC.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1C.00
4A.05.EE.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1C.00
4A.05.F0.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1C.00
4A.05.FA.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1C.00
4A.05.FE.07.02.00.00.00.00.14.56.00.09.14.00.1D.00.1C.00
61.05.38.08.01.00.00.00.00.15.56.00.09.14.00.1D.00.0E.00
61.05.3C.08.01.00.00.00.00.15.56.00.09.14.00.1D.00.0E.00
63.05.00.08.02.00.00.00.00.15.56.00.09.14.00.1D.00.1D.00
63.05.06.08.02.00.00.00.00.15.56.00.09.14.00.1D.00.1D.00
63.05.0E.08.01.00.00.00.00.15.56.00.09.14.00.1D.00.0E.00
63.05.2A.08.02.00.00.00.00.15.56.00.09.14.00.1D.00.1D.00
63.05.2C.08.01.00.00.00.00.15.56.00.09.14.00.1D.00.0E.00
63.05.2E.08.01.00.00.00.00.15.56.00.09.14.00.1D.00.0E.00
63.05.30.08.01.00.00.00.00.15.56.00.09.14.00.1D.00.0E.00
63.05.30.08.02.00.00.00.00.15.56.00.09.14.00.1D.00.1D.00
63.05.34.08.01.00.00.00.00.15.56.00.09.14.00.1D.00.0E.00
63.05.34.08.02.00.00.00.00.15.56.00.09.14.00.1D.00.1D.00
63.05.36.08.01.00.00.00.00.15.56.00.09.14.00.1D.00.0E.00
63.05.38.08.01.00.00.00.00.15.56.00.09.14.00.1D.00.0E.00
63.05.3A.08.01.00.00.00.00.15.56.00.09.14.00.1D.00.0E.00
63.05.3C.08.01.00.00.00.00.15.56.00.09.14.00.1D.00.0E.00
63.05.3E.08.01.00.00.00.00.15.56.00.09.14.00.1D.00.0E.00
63.05.40.08.01.00.00.00.00.15.56.00.09.14.00.1D.00.0E.00
63.05.42.08.01.00.00.00.00.15.56.00.09.14.00.1D.00.0E.00
63.05.44.08.01.00.00.00.00.15.56.00.09.14.00.1D.00.0E.00
63.05.48.08.01.00.00.00.00.15.56.00.09.14.00.1D.00.0E.00
63.05.4A.08.01.00.00.00.00.15.56.00.09.14.00.1D.00.0E.00
63.05.4E.08.01.00.00.00.00.15.56.00.09.14.00.1D.00.0E.00
63.05.50.08.01.00.00.00.00.15.56.00.09.14.00.1D.00.0E.00
63.05.52.08.01.00.00.00.00.15.56.00.09.14.00.1D.00.0E.00
63.05.54.08.01.00.00.00.00.15.56.00.09.14.00.1D.00.0E.00
63.05.AC.07.02.00.00.00.00.15.56.00.09.14.00.1D.00.1D.00
63.05.E6.07.02.00.00.00.00.15.56.00.09.14.00.1D.00.1D.00
E6.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
E8.04.74.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
E8.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.74.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.78.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
ED.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,900 @@
# 460 ah, typ 47, 10.5v, 101%, 30%, 100% brightness
[14:51:58][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:0A:00:00:2E:04:02:59
[14:51:59][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:05:00:00:28:D0:00:D7
[14:52:00][I][uart0:064]: <<< AA:CA:38:05:11:05:CB:01:20:00:64:00:28:FF:FF:45
[14:52:01][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:0A:00:00:2E:04:02:59
[14:52:02][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:05:00:00:28:D0:00:D7
[14:52:02][I][uart0:064]: <<< AA:CA:38:05:11:05:CB:01:20:00:64:00:28:FF:FF:45
[14:52:03][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:0A:00:00:2E:04:02:59
[14:52:04][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:52:05][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:04:00:00:28:D0:00:D6
[14:52:05][I][uart0:064]: <<< AA:CA:38:05:11:05:CB:01:20:00:64:00:53:FF:FF:3E
[14:52:05][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:0A:00:00:2E:04:02:59
[14:52:05][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:05:00:00:28:D0:00:D7
[14:52:05][I][uart0:064]: <<< AA:CA:3C:05:11:05:CB:01:20:00:64:00:28:FF:FF:41
[14:52:05][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:0A:00:00:2E:04:02:59
[14:52:05][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:05:00:00:28:D0:00:D7
[14:52:05][I][uart0:064]: <<< AA:CA:38:05:11:05:CB:01:20:00:64:00:28:FF:FF:45
[14:52:05][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:0A:00:00:2E:04:02:59
[14:52:05][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:04:00:00:28:D0:00:D6
[14:52:05][I][uart0:064]: <<< AA:CA:38:05:11:05:CB:01:20:00:64:00:53:FF:FF:3E
[14:52:05][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:0A:00:00:2E:04:02:59
[14:52:05][I][uart0:064]: <<< AA:FA:22:00:00:00:F2:02:00:04:00:00:28:D0:00:D4
[14:52:05][I][uart0:064]: <<< AA:CA:38:05:11:05:CB:01:20:00:64:00:53:FF:FF:3E
[14:52:05][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:09:00:00:2E:04:02:5A
[14:52:07][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:04:00:00:28:D0:00:D6
[14:52:07][I][uart0:064]: <<< AA:CA:3C:05:11:05:CB:01:20:00:64:00:53:FF:FF:3A
[14:52:07][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:09:00:00:2E:04:02:5A
[14:52:08][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:04:00:00:28:D0:00:D6
[14:52:09][I][uart0:064]: <<< AA:CA:38:05:11:05:CB:01:20:00:64:00:53:FF:FF:3E
[14:52:10][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:0A:00:00:2E:04:02:59
[14:52:10][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:04:00:00:28:D0:00:D6
[14:52:11][I][uart0:064]: <<< AA:CA:38:05:11:05:CB:01:20:00:64:00:53:FF:FF:3E
[14:52:12][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:0A:00:00:2E:04:02:59
[14:52:13][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:04:00:00:28:D0:00:D6
[14:52:13][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:52:15][I][uart0:064]: <<< AA:CA:38:05:11:05:CB:01:20:00:64:00:53:FF:FF:3E
[14:52:15][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:0A:00:00:2E:04:02:59
[14:52:15][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:04:00:00:28:D0:00:D6
[14:52:15][I][uart0:064]: <<< AA:CA:38:05:11:05:CB:01:20:00:64:00:53:FF:FF:3E
[14:52:15][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:0A:00:00:2E:04:02:59
[14:52:15][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:04:00:00:28:D0:00:D6
[14:52:15][I][uart0:064]: <<< AA:CA:38:05:11:05:CB:01:20:00:64:00:53:FF:FF:3E
[14:52:15][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:0A:00:00:2E:04:02:59
[14:52:16][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:04:00:00:28:D0:00:D6
[14:52:16][I][uart0:064]: <<< AA:CA:38:05:11:05:CB:01:20:00:64:00:53:FF:FF:3E
[14:52:16][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:09:00:00:2E:04:02:5A
[14:52:16][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:04:00:00:28:D0:00:D6
[14:52:16][I][uart0:064]: <<< AA:CA:3C:05:11:05:CB:01:20:00:64:00:53:FF:FF:3A
[14:52:16][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:09:00:00:2E:04:02:5A
[14:52:16][I][uart0:064]: <<< AA:FA:22:00:00:00:F2:02:00:04:00:00:28:D0:00:D4
[14:52:16][I][uart0:064]: <<< AA:CA:38:05:11:05:CB:01:20:00:64:00:53:FF:FF:3E
[14:52:17][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:0A:00:00:2E:04:02:59
[14:52:18][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:04:00:00:28:D0:00:D6
[14:52:18][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:52:19][I][uart0:064]: <<< AA:CA:38:05:11:05:CB:01:20:00:64:00:53:FF:FF:3E
[14:52:20][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:0A:00:00:2E:04:02:59
[14:52:20][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:04:00:00:28:D0:00:D6
[14:52:20][I][uart0:064]: <<< AA:CA:3C:05:11:05:CB:01:20:00:64:00:53:FF:FF:3A
[14:52:20][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:09:00:00:2E:04:02:5A
[14:52:20][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:04:00:00:28:D0:00:D6
[14:52:20][I][uart0:064]: <<< AA:CA:3C:05:11:05:CB:01:20:00:64:00:28:FF:FF:41
[14:52:20][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:0A:00:00:2E:04:02:59
[14:52:21][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:05:00:00:28:D0:00:D7
[14:52:21][I][uart0:064]: <<< AA:CA:3C:05:11:05:CB:01:20:00:64:00:28:FF:FF:41
[14:52:21][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:0A:00:00:2E:04:02:59
[14:52:21][I][uart0:064]: <<< AA:FA:22:00:00:00:F2:02:00:05:00:00:28:D0:00:D5
[14:52:21][I][uart0:064]: <<< AA:CA:38:05:11:05:CB:01:20:00:64:00:53:FF:FF:3E
[14:52:21][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:0A:00:00:2E:04:02:59
[14:52:21][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:04:00:00:28:D0:00:D6
[14:52:21][I][uart0:064]: <<< AA:CA:38:05:11:05:CB:01:20:00:64:00:53:FF:FF:3E
[14:52:22][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:0A:00:00:2E:04:02:59
[14:52:23][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:03:00:00:28:D0:00:D1
[14:52:24][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:52:25][I][uart0:064]: <<< AA:CA:38:05:11:05:CB:01:20:00:64:00:7F:FF:FF:12
[14:52:25][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:0A:00:00:2E:04:02:59
[14:52:25][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:03:00:00:28:D0:00:D1
[14:52:25][I][uart0:064]: <<< AA:CA:38:05:11:05:CB:01:20:00:64:00:7F:FF:FF:12
[14:52:25][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:0A:00:00:2E:04:02:59
[14:52:25][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:04:00:00:28:D0:00:D6
[14:52:25][I][uart0:064]: <<< AA:CA:38:05:11:05:CB:01:20:00:64:00:53:FF:FF:3E
[14:52:26][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:0A:00:00:2E:04:02:59
[14:52:26][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:04:00:00:28:D0:00:D6
[14:52:26][I][uart0:064]: <<< AA:CA:38:05:11:05:CB:01:20:00:64:00:53:FF:FF:3E
[14:52:26][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:0A:00:00:2E:04:02:59
[14:52:26][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:03:00:00:28:D0:00:D1
[14:52:26][I][uart0:064]: <<< AA:CA:3C:05:11:05:CB:01:20:00:64:00:7F:FF:FF:16
[14:52:26][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:09:00:00:2E:04:02:5A
[14:52:26][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:03:00:00:28:D0:00:D1
[14:52:27][I][uart0:064]: <<< AA:CA:38:05:11:05:CB:01:20:00:64:00:53:FF:FF:3E
[14:52:28][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:0A:00:00:2E:04:02:59
[14:52:29][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:52:30][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:04:00:00:28:D0:00:D6
[14:52:30][I][uart0:064]: <<< AA:CA:38:05:11:05:CB:01:20:00:64:00:53:FF:FF:3E
[14:52:30][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:0A:00:00:2E:04:02:59
[14:52:30][I][uart0:064]: <<< AA:FA:22:00:00:00:F2:02:00:04:00:00:28:D0:00:D4
[14:52:30][I][uart0:064]: <<< AA:CA:38:05:11:05:CB:01:20:00:64:00:53:FF:FF:3E
[14:52:30][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:0A:00:00:2E:04:02:59
[14:52:30][I][uart0:064]: <<< AA:FA:22:00:00:00:F2:02:00:04:00:00:28:D0:00:D4
[14:52:31][I][uart0:064]: <<< AA:CA:38:05:11:05:CB:01:20:00:64:00:53:FF:FF:3E
[14:52:31][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:09:00:00:2E:04:02:5A
[14:52:31][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:04:00:00:28:D0:00:D6
[14:52:31][I][uart0:064]: <<< AA:CA:38:05:11:05:CB:01:20:00:64:00:53:FF:FF:3E
[14:52:31][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:09:00:00:2E:04:02:5A
[14:52:31][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:04:00:00:28:D0:00:D6
[14:52:31][I][uart0:064]: <<< AA:CA:38:05:11:05:CB:01:20:00:64:00:53:FF:FF:3E
[14:52:31][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:0A:00:00:2E:04:02:59
[14:52:32][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:04:00:00:28:D0:00:D6
[14:52:32][I][uart0:064]: <<< AA:CA:3C:05:11:05:CB:01:20:00:64:00:7F:FF:FF:16
[14:52:32][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:0A:00:00:2E:04:02:59
[14:52:32][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:03:00:00:28:D0:00:D1
[14:52:32][I][uart0:064]: <<< AA:CA:38:05:11:05:CB:01:20:00:64:00:7F:FF:FF:12
[14:52:33][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:0A:00:00:2E:04:02:59
[14:52:34][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:52:35][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:06:00:00:28:D0:00:D4
[14:52:35][I][uart0:064]: <<< AA:CA:38:05:0A:05:CB:01:20:00:64:00:FD:FE:FF:8A
[14:52:35][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:0A:00:00:2E:04:02:59
[14:52:35][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:05:00:00:28:D0:00:D7
[14:52:35][I][uart0:064]: <<< AA:CA:38:05:0D:05:CB:01:20:00:64:00:28:FF:FF:59
[14:52:35][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:0A:00:00:2E:04:02:59
[14:52:35][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:05:00:00:28:D0:00:D7
[14:52:36][I][uart0:064]: <<< AA:CA:3C:05:0D:05:CB:01:20:00:64:00:28:FF:FF:5D
[14:52:36][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:0A:00:00:2E:04:02:59
[14:52:36][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:05:00:00:28:D0:00:D7
[14:52:36][I][uart0:064]: <<< AA:CA:38:05:0D:05:CB:01:20:00:64:00:28:FF:FF:59
[14:52:36][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:0A:00:00:2E:04:02:59
[14:52:36][I][uart0:064]: <<< AA:FA:22:00:00:00:F2:02:00:05:00:00:28:D0:00:D5
[14:52:36][I][uart0:064]: <<< AA:CA:38:05:0D:05:CB:01:20:00:64:00:28:FF:FF:59
[14:52:36][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:09:00:00:2E:04:02:5A
[14:52:37][I][uart0:064]: <<< AA:FA:22:00:00:00:F2:02:00:04:00:00:28:D0:00:D4
[14:52:37][I][uart0:064]: <<< AA:CA:38:05:0D:05:CB:01:20:00:64:00:53:FF:FF:22
[14:52:37][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:09:00:00:2E:04:02:5A
[14:52:37][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:04:00:00:28:D0:00:D6
[14:52:38][I][uart0:064]: <<< AA:CA:38:05:0D:05:CB:01:20:00:64:00:28:FF:FF:59
[14:52:39][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:52:39][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:0A:00:00:2E:04:02:59
[14:52:40][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:04:00:00:28:D0:00:D6
[14:52:40][I][uart0:064]: <<< AA:CA:38:05:0D:05:CB:01:20:00:64:00:28:FF:FF:59
[14:52:40][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:0A:00:00:2E:04:02:59
[14:52:40][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:05:00:00:28:D0:00:D7
[14:52:40][I][uart0:064]: <<< AA:CA:38:05:0D:05:CB:01:20:00:64:00:28:FF:FF:59
[14:52:40][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:0A:00:00:2E:04:02:59
[14:52:40][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:05:00:00:28:D0:00:D7
[14:52:41][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:52:42][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:0A:00:00:2E:04:02:59
[14:52:42][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:05:00:00:28:D0:00:D7
[14:52:42][I][uart0:064]: <<< AA:CA:38:05:0D:05:CB:01:20:00:64:00:28:FF:FF:59
[14:52:42][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:09:00:00:2E:04:02:5A
[14:52:42][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:05:00:00:28:D0:00:D7
[14:52:42][I][uart0:064]: <<< AA:CA:38:05:0D:05:CB:01:20:00:64:00:28:FF:FF:59
[14:52:42][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:0A:00:00:2E:04:02:59
[14:52:42][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:52:43][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:05:00:00:28:D0:00:D7
[14:52:43][I][uart0:064]: <<< AA:CA:38:05:0D:05:CB:01:20:00:64:00:28:FF:FF:59
[14:52:43][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:09:00:00:2E:04:02:5A
[14:52:43][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:05:00:00:28:D0:00:D7
[14:52:43][I][uart0:064]: <<< AA:CA:38:05:0D:05:CB:01:20:00:64:00:28:FF:FF:59
[14:52:43][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:0A:00:00:2E:04:02:59
[14:52:43][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:05:00:00:28:D0:00:D7
[14:52:43][I][uart0:064]: <<< AA:CA:3C:05:0D:05:CB:01:20:00:64:00:28:FF:FF:5D
[14:52:43][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:52:44][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:0A:00:00:2E:04:02:59
[14:52:44][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:05:00:00:28:D0:00:D7
[14:52:44][I][uart0:064]: <<< AA:CA:38:05:0D:05:CB:01:20:00:64:00:28:FF:FF:59
[14:52:44][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:0A:00:00:2E:04:02:59
[14:52:44][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:05:00:00:28:D0:00:D7
[14:52:44][I][uart0:064]: <<< AA:CA:38:05:0D:05:CB:01:20:00:64:00:28:FF:FF:59
[14:52:44][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:0A:00:00:2E:04:02:59
[14:52:44][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:52:45][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:05:00:00:28:D0:00:D7
[14:52:45][I][uart0:064]: <<< AA:CA:38:05:0D:05:CB:01:20:00:64:00:28:FF:FF:59
[14:52:45][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:09:00:00:2E:04:02:5A
[14:52:45][I][uart0:064]: <<< AA:FA:22:00:00:00:F2:02:00:05:00:00:28:D0:00:D5
[14:52:45][I][uart0:064]: <<< AA:CA:38:05:0D:05:CB:01:20:00:64:00:28:FF:FF:59
[14:52:45][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:09:00:00:2E:04:02:5A
[14:52:45][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:05:00:00:28:D0:00:D7
[14:52:45][I][uart0:064]: <<< AA:CA:3C:05:0D:05:CB:01:20:00:64:00:28:FF:FF:5D
[14:52:45][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:52:46][E][uart1:093]: <<< AA:ED:48:82:12:00:00:35:AA:ED:F8:11:13:00:00:17
[14:52:46][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:09:00:00:2E:04:02:5A
[14:52:46][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:05:00:00:28:D0:00:D7
[14:52:46][I][uart0:064]: <<< AA:CA:38:05:0D:05:CB:01:20:00:64:00:28:FF:FF:59
[14:52:46][I][uart0:064]: <<< AA:DA:00:00:00:00:EE:11:5E:0A:00:00:2E:04:02:59
[14:52:46][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:05:00:00:28:D0:00:D7
[14:52:46][I][uart0:064]: <<< AA:CA:38:05:0D:05:CB:01:20:00:64:00:28:FF:FF:59
[14:52:47][I][uart0:064]: <<< AA:FA:22:00:46:05:00:00:00:00:00:00:28:05:00:B6
[14:52:46][I][uart0:064]: <<< AA:CA:38:05:0D:05:00:00:00:00:00:00:00:00:00:FF
[14:52:46][I][uart0:064]: <<< AA:DA:00:00:00:00:F8:11:B0:77:00:00:2E:04:02:DC
[14:52:47][E][uart1:093]: <<< AA:ED:F8:11:13:00:00:17
[14:52:48][I][uart0:064]: <<< AA:FA:22:00:46:05:00:00:00:00:00:00:28:05:00:B6:AA:39:09:8D:41:80:80:80:80:EA:AA:3B:80:80:91:BB:01:80:09:82:FF
[14:52:48][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:52:49][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:52:50][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:52:51][I][uart0:064]: <<< AA:BF:02:80:F0:20:85:80:09:07:D7:AA:39:2A:8D:41:80:04:80:A8:FF:9C:CD:07:80:80:91:D5:01:80:09:82:FC
[14:52:51][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:52:52][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:52:53][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:52:53][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:04:00:00:28:D0:00:D6
[14:52:53][I][uart0:064]: <<< AA:CA:38:05:0D:05:CC:01:20:00:64:00:28:FF:FF:5E
[14:52:53][I][uart0:064]: <<< AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2E:04:02:4F
[14:52:54][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:52:55][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:05:00:00:28:D0:00:D7
[14:52:55][I][uart0:064]: <<< AA:CA:38:05:0D:05:CC:01:20:00:64:00:28:FF:FF:5E
[14:52:55][I][uart0:064]: <<< AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2E:04:02:4F
[14:52:55][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:05:00:00:28:D0:00:D7
[14:52:55][I][uart0:064]: <<< AA:CA:38:05:0D:05:CC:01:20:00:64:00:28:FF:FF:5E
[14:52:55][I][uart0:064]: <<< AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2E:04:02:4F
[14:52:55][I][uart0:064]: <<< AA:FA:22:00:00:00:F0:02:00:05:00:00:28:D0:00:D7
[14:52:55][E][uart1:093]: <<< AA:ED:48:82:12:00:00:35:AA:ED:2F:00:14:00:00:D6:AA:ED:2F:00:01:00:00:C3
[14:52:55][I][uart0:064]: <<< AA:FA:2F:00:50:05:00:00:00:00:00:00:28:05:00:AD:AA:39:09:8D:41:80:80:80:80:EA:AA:3B:80:80:91:BB:01:80:09:82:F7
[14:52:56][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:52:57][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:52:58][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:52:58][I][uart0:064]: <<< AA:BF:09:80:F0:20:85:80:09:07:DA:AA:39:2A:8D:41:80:05:80:A8:FF:98:CD:07:80:80:91:A9:01:80:09:82:D7
[14:52:59][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:00][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:01][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:01][I][uart0:064]: <<< AA:FA:2F:00:00:00:F0:02:00:04:00:00:28:D0:00:DB
[14:53:01][I][uart0:064]: <<< AA:CA:38:05:0D:05:CC:01:20:00:64:00:53:FF:FF:25
[14:53:01][I][uart0:064]: <<< AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
[14:53:02][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:02][I][uart0:064]: <<< AA:FA:2F:00:00:00:F0:02:00:05:00:00:28:D0:00:DA
[14:53:02][I][uart0:064]: <<< AA:CA:38:05:0D:05:CC:01:20:00:64:00:28:FF:FF:5E
[14:53:02][I][uart0:064]: <<< AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
[14:53:02][I][uart0:064]: <<< AA:FA:2F:00:00:00:F2:02:00:05:00:00:28:D0:00:D8
[14:53:02][I][uart0:064]: <<< AA:CA:38:05:0D:05:CC:01:20:00:64:00:28:FF:FF:5E
[14:53:02][I][uart0:064]: <<< AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
[14:53:02][I][uart0:064]: <<< AA:FA:2F:00:00:00:F0:02:00:05:00:00:28:D0:00:DA
[14:53:02][I][uart0:064]: <<< AA:CA:3C:05:0D:05:CC:01:20:00:64:00:28:FF:FF:5A
[14:53:03][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:03][I][uart0:064]: <<< AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
[14:53:03][I][uart0:064]: <<< AA:FA:2F:00:00:00:F0:02:00:04:00:00:28:D0:00:DB
[14:53:03][I][uart0:064]: <<< AA:CA:38:05:0D:05:CC:01:20:00:64:00:53:FF:FF:25
[14:53:03][I][uart0:064]: <<< AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
[14:53:03][I][uart0:064]: <<< AA:FA:2F:00:00:00:F0:02:00:04:00:00:28:D0:00:DB
[14:53:03][I][uart0:064]: <<< AA:CA:38:05:0D:05:CC:01:20:00:64:00:53:FF:FF:25
[14:53:03][I][uart0:064]: <<< AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
[14:53:04][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:04][I][uart0:064]: <<< AA:FA:2F:00:00:00:F2:02:00:04:00:00:28:D0:00:D9
[14:53:04][I][uart0:064]: <<< AA:CA:38:05:0D:05:CC:01:20:00:64:00:53:FF:FF:25
[14:53:04][I][uart0:064]: <<< AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
[14:53:04][I][uart0:064]: <<< AA:FA:2F:00:00:00:F0:02:00:04:00:00:28:D0:00:DB
[14:53:04][I][uart0:064]: <<< AA:CA:38:05:0D:05:CC:01:20:00:64:00:53:FF:FF:25
[14:53:04][I][uart0:064]: <<< AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
[14:53:04][I][uart0:064]: <<< AA:FA:2F:00:00:00:F0:02:00:04:00:00:28:D0:00:DB
[14:53:05][I][uart0:064]: <<< AA:CA:38:05:0D:05:CC:01:20:00:64:00:53:FF:FF:25
[14:53:05][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:06][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:06][I][uart0:064]: <<< AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
[14:53:06][I][uart0:064]: <<< AA:FA:2F:00:00:00:F0:02:00:04:00:00:28:D0:00:DB
[14:53:06][I][uart0:064]: <<< AA:CA:38:05:0D:05:CC:01:20:00:64:00:53:FF:FF:25
[14:53:06][I][uart0:064]: <<< AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
[14:53:06][I][uart0:064]: <<< AA:FA:2F:00:00:00:F0:02:00:04:00:00:28:D0:00:DB
[14:53:06][I][uart0:064]: <<< AA:CA:38:05:0D:05:CC:01:20:00:64:00:53:FF:FF:25
[14:53:06][I][uart0:064]: <<< AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
[14:53:07][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:07][I][uart0:064]: <<< AA:FA:2F:00:00:00:F0:02:00:05:00:00:28:D0:00:DA
AA:CA:38:05:0D:05:CC:01:20:00:64:00:28:FF:FF:5E
AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
AA:FA:2F:00:00:00:F0:02:00:05:00:00:28:D0:00:DA
AA:CA:38:05:0D:05:CC:01:20:00:64:00:28:FF:FF:5E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:05:00:00:28:D0:00:DA
AA:CA:38:05:0D:05:CC:01
[14:53:08][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:08][I][uart0:064]: <<< 20:00:64:00:28:FF:FF:5E
AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
AA:FA:2F:00:00:00:F0:02:00:05:00:00:28:D0:00:DA
AA:CA:38:05:0D:05:CC:01:20:00:64:00:28:FF:FF:5E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:04:00:00:28:D0:00:DB
AA:CA:38:05:0D:05:CC:01:20:00:64:00:53:FF:FF:25
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
[14:53:08][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:09][I][uart0:064]: <<< AA:FA:2F:00:00:00:F0:02:00:04:00:00:28:D0:00:DB
AA:CA:3C:05:0D:05:CC:01:20:00:64:00:53:FF:FF:21
AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
AA:FA:2F:00:00:00:F0:02:00:04:00:00:28:D0:00:DB
AA:CA:38:05:0D:05:CC:01:20:00:64:00:53:FF:FF:25
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:04:00:00:28:D0:00:DB
AA:CA:38:05:0A:05:CC:01
[14:53:09][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:10][I][uart0:064]: <<< 20:00:64:00:53:FF:FF:22
AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
AA:FA:2F:00:00:00:F0:02:00:04:00:00:28:D0:00:DB
AA:CA:38:05:0D:05:CC:01:20:00:64:00:7F:FF:FF:09
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:00:7F:FF:FF:0E
AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
[14:53:10][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:11][I][uart0:064]: <<< AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0D:05:CC:01:20:00:64:00:7F:FF:FF:09
AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0D:05:CC:01:20:00:64:00:7F:FF:FF:09
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01
[14:53:12][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:13][I][uart0:064]: <<< 20:00:64:00:7F:FF:FF:0E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0D:05:CC:01:20:00:64:00:7F:FF:FF:09
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0D:05:CC:01:20:00:64:00:7F:FF:FF:09
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
[14:53:13][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:13][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:14][I][uart0:064]: <<< AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:00:7F:FF:FF:0E
AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:3C:05:0D:05:CC:01:20:00:64:00:7F:FF:FF:0D
AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
AA:FA:2F:00:00:00:F0:02:00:04:00:00:28:D0:00:DB
AA:CA:38:05:0A:05:CC:01
[14:53:14][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:15][I][uart0:064]: <<< 20:00:64:00:53:FF:FF:22
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:04:00:00:28:D0:00:DB
AA:CA:38:05:0D:05:CC:01:20:00:64:00:53:FF:FF:25
AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0D:05:CC:01:20:00:64:00:7F:FF:FF:09
AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
[14:53:15][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:16][I][uart0:064]: <<< AA:FA:2F:00:00:00:F2:02:00:03:00:00:28:D0:00:DE
AA:CA:38:05:0D:05:CC:01:20:00:64:00:7F:FF:FF:09
AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0D:05:CC:01:20:00:64:00:7F:FF:FF:09
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01
[14:53:16][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:17][I][uart0:064]: <<< 20:00:64:00:7F:FF:FF:0E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F2:02:00:04:00:00:28:D0:00:D9
AA:CA:38:05:0D:05:CC:01:20:00:64:00:53:FF:FF:25
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:04:00:00:28:D0:00:DB
AA:CA:38:05:0A:05:CC:01:20:00:64:00:53:FF:FF:22
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
[14:53:17][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:18][I][uart0:064]: <<< AA:FA:2F:00:00:00:F0:02:00:04:00:00:28:D0:00:DB
AA:CA:38:05:0A:05:CC:01:20:00:64:00:7F:FF:FF:0E
AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0D:05:CC:01:20:00:64:00:7F:FF:FF:09
AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01
[14:53:18][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:19][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:20][I][uart0:064]: <<< 20:00:64:00:AA:FF:FF:DB
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:02:00:00:28:D0:00:DD
AA:CA:38:05:0D:05:CC:01:20:00:64:00:AA:FF:FF:DC
AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
AA:FA:2F:00:00:00:F0:02:00:02:00:00:28:D0:00:DD
AA:CA:38:05:0A:05:CC:01:20:00:64:00:7F:FF:FF:0E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
[14:53:20][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:21][I][uart0:064]: <<< AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0D:05:CC:01:20:00:64:00:7F:FF:FF:09
AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:00:7F:FF:FF:0E
AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0D:05:CC:01
[14:53:21][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:22][I][uart0:064]: <<< 20:00:64:00:7F:FF:FF:09
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0D:05:CC:01:20:00:64:00:7F:FF:FF:09
AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:00:7F:FF:FF:0E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
[14:53:22][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:23][I][uart0:064]: <<< AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:00:7F:FF:FF:0E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0D:05:CC:01:20:00:64:00:7F:FF:FF:09
AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0D:05:CC:01
[14:53:23][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:24][I][uart0:064]: <<< 20:00:64:00:7F:FF:FF:09
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:00:7F:FF:FF:0E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:00:7F:FF:FF:0E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
[14:53:24][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:25][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:26][I][uart0:064]: <<< AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:00:7F:FF:FF:0E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:3C:05:0D:05:CC:01:20:00:64:00:7F:FF:FF:0D
AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01
[14:53:26][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:27][I][uart0:064]: <<< 20:00:64:00:7F:FF:FF:0E
AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:00:7F:FF:FF:0E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:04:00:00:28:D0:00:DB
AA:CA:38:05:0A:05:CC:01:20:00:64:00:53:FF:FF:22
AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
[14:53:27][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:28][I][uart0:064]: <<< AA:FA:2F:00:00:00:F0:02:00:04:00:00:28:D0:00:DB
AA:CA:38:05:0A:05:CC:01:20:00:64:00:53:FF:FF:22
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:00:7F:FF:FF:0E
AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0D:05:CC:01
[14:53:28][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:29][I][uart0:064]: <<< 20:00:64:00:7F:FF:FF:09
AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
AA:FA:2F:00:00:00:F0:02:00:02:00:00:28:D0:00:DD
AA:CA:38:05:0A:05:CC:01:20:00:64:00:AA:FF:FF:DB
AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
AA:FA:2F:00:00:00:F0:02:00:02:00:00:28:D0:00:DD
AA:CA:38:05:0D:05:CC:01:20:00:64:00:AA:FF:FF:DC
AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
[14:53:29][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:30][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:30][I][uart0:064]: <<< AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:00:7F:FF:FF:0E
AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:00:7F:FF:FF:0E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F2:02:00:02:00:00:28:D0:00:DF
AA:CA:38:05:0A:05:CC:01
[14:53:31][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:32][I][uart0:064]: <<< 20:00:64:00:AA:FF:FF:DB
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:02:00:00:28:D0:00:DD
AA:CA:38:05:0A:05:CC:01:20:00:64:00:AA:FF:FF:DB
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:02:00:00:28:D0:00:DD
AA:CA:38:05:0A:05:CC:01:20:00:64:00:53:FF:FF:22
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
[14:53:32][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:33][I][uart0:064]: <<< AA:FA:2F:00:00:00:F2:02:00:04:00:00:28:D0:00:D9
AA:CA:38:05:0A:05:CC:01:20:00:64:00:53:FF:FF:22
AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
AA:FA:2F:00:00:00:F0:02:00:04:00:00:28:D0:00:DB
AA:CA:38:05:0A:05:CC:01:20:00:64:00:7F:FF:FF:0E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01
[14:53:33][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:34][I][uart0:064]: <<< 20:00:64:00:7F:FF:FF:0E
AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:00:53:FF:FF:22
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:04:00:00:28:D0:00:DB
AA:CA:38:05:0A:05:CC:01:20:00:64:00:53:FF:FF:22
AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
[14:53:34][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:35][I][uart0:064]: <<< AA:FA:2F:00:00:00:F0:02:00:04:00:00:28:D0:00:DB
AA:CA:38:05:0A:05:CC:01:20:00:64:00:7F:FF:FF:0E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:00:7F:FF:FF:0E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01
[14:53:35][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:36][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:36][I][uart0:064]: <<< 20:00:64:00:7F:FF:FF:0E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0D:05:CC:01:20:00:64:00:7F:FF:FF:09
AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:00:7F:FF:FF:0E
AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
[14:53:37][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:38][I][uart0:064]: <<< AA:FA:2F:00:00:00:F0:02:00:02:00:00:28:D0:00:DD
AA:CA:38:05:0A:05:CC:01:20:00:64:00:AA:FF:FF:DB
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:02:00:00:28:D0:00:DD
AA:CA:38:05:0A:05:CC:01:20:00:64:00:AA:FF:FF:DB
AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
AA:FA:2F:00:00:00:F0:02:00:02:00:00:28:D0:00:DD
AA:CA:38:05:0A:05:CC:01
[14:53:38][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:39][I][uart0:064]: <<< 20:00:64:00:AA:FF:FF:DB
AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
AA:FA:2F:00:00:00:F0:02:00:02:00:00:28:D0:00:DD
AA:CA:38:05:0D:05:CC:01:20:00:64:00:AA:FF:FF:DC
AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:00:7F:FF:FF:0E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
[14:53:39][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:40][I][uart0:064]: <<< AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0D:05:CC:01:20:00:64:00:7F:FF:FF:09
AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:00:7F:FF:FF:0E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01
[14:53:40][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:41][I][uart0:064]: <<< 20:00:64:00:7F:FF:FF:0E
AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:00:7F:FF:FF:0E
AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
AA:FA:2F:00:00:00:F2:02:00:03:00:00:28:D0:00:DE
AA:CA:38:05:0A:05:CC:01:20:00:64:00:7F:FF:FF:0E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
[14:53:41][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:42][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:43][I][uart0:064]: <<< AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:00:7F:FF:FF:0E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:00:7F:FF:FF:0E
AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01
[14:53:43][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:44][I][uart0:064]: <<< 20:00:64:00:7F:FF:FF:0E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:00:7F:FF:FF:0E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:00:7F:FF:FF:0E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
[14:53:44][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:45][I][uart0:064]: <<< AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:00:7F:FF:FF:0E
AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:00:7F:FF:FF:0E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01
[14:53:45][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:46][I][uart0:064]: <<< 20:00:64:00:7F:FF:FF:0E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0D:05:CC:01:20:00:64:00:AA:FF:FF:DC
AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
AA:FA:2F:00:00:00:F0:02:00:02:00:00:28:D0:00:DD
AA:CA:38:05:0A:05:CC:01:20:00:64:00:AA:FF:FF:DB
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
[14:53:46][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:47][I][uart0:064]: <<< AA:FA:2F:00:00:00:F0:02:00:02:00:00:28:D0:00:DD
AA:CA:38:05:0A:05:CC:01:20:00:64:00:AA:FF:FF:DB
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:02:00:00:28:D0:00:DD
AA:CA:38:05:0A:05:CC:01:20:00:64:00:AA:FF:FF:DB
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:02:00:00:28:D0:00:DD
AA:CA:38:05:0A:05:CC:01
[14:53:47][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:48][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:49][I][uart0:064]: <<< 20:00:64:00:7F:FF:FF:0E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:00:7F:FF:FF:0E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:00:AA:FF:FF:DB
AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
[14:53:49][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED
[14:53:50][I][uart0:064]: <<< AA:FA:2F:00:00:00:F0:02:00:02:00:00:28:D0:00:DD
AA:CA:38:05:0A:05:CC:01:20:00:64:00:AA:FF:FF:DB
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:02:00:00:28:D0:00:DD
AA:CA:38:05:0A:05:CC:01:20:00:64:00:7F:FF:FF:0E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01
[14:53:50][E][uart1:093]: <<< AA:ED:00:00:00:00:00:ED:AA:ED:00:00:00:10:00:FD
[14:53:51][I][uart0:064]: <<< 20:00:64:00:7F:FF:FF:0E
AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:00:7F:FF:FF:0E
AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:10:7F:FF:FF:1E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
[14:53:51][E][uart1:093]: <<< AA:ED:00:00:00:10:00:FD
[14:53:52][I][uart0:064]: <<< AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:10:7F:FF:FF:1E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:10:7F:FF:FF:1E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01
[14:53:52][E][uart1:093]: <<< AA:ED:00:00:00:10:00:FD
[14:53:53][I][uart0:064]: <<< 20:00:64:10:7F:FF:FF:1E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:02:00:00:28:D0:00:DD
AA:CA:38:05:0A:05:CC:01:20:00:64:10:AA:FF:FF:CB
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:02:00:00:28:D0:00:DD
AA:CA:38:05:0A:05:CC:01:20:00:64:10:AA:FF:FF:CB
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
[14:53:53][E][uart1:093]: <<< AA:ED:00:00:00:10:00:FD
[14:53:54][E][uart1:093]: <<< AA:ED:00:00:00:10:00:FD
[14:53:55][I][uart0:064]: <<< AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:10:7F:FF:FF:1E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:10:7F:FF:FF:1E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01
[14:53:55][E][uart1:093]: <<< AA:ED:00:00:00:10:00:FD
[14:53:56][I][uart0:064]: <<< 20:00:64:10:7F:FF:FF:1E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:10:7F:FF:FF:1E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:10:7F:FF:FF:1E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
[14:53:56][E][uart1:093]: <<< AA:ED:00:00:00:10:00:FD
[14:53:57][I][uart0:064]: <<< AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:10:7F:FF:FF:1E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:10:7F:FF:FF:1E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01
[14:53:57][E][uart1:093]: <<< AA:ED:00:00:00:10:00:FD
[14:53:58][I][uart0:064]: <<< 20:00:64:10:7F:FF:FF:1E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:02:00:00:28:D0:00:DD
AA:CA:38:05:0A:05:CC:01:20:00:64:10:AA:FF:FF:CB
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:02:00:00:28:D0:00:DD
AA:CA:3C:05:0A:05:CC:01:20:00:64:10:AA:FF:FF:CF
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
[14:53:58][E][uart1:093]: <<< AA:ED:00:00:00:10:00:FD
[14:53:59][I][uart0:064]: <<< AA:FA:2F:00:00:00:F0:02:00:02:00:00:28:D0:00:DD
AA:CA:38:05:0A:05:CC:01:20:00:64:10:7F:FF:FF:1E
AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:10:7F:FF:FF:1E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01
[14:53:59][E][uart1:093]: <<< AA:ED:00:00:00:10:00:FD
[14:54:00][E][uart1:093]: <<< AA:ED:00:00:00:10:00:FD
[14:54:01][I][uart0:064]: <<< 20:00:64:10:AA:FF:FF:CB
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:89:02:4E
AA:FA:2F:00:00:00:F0:02:00:02:00:00:28:D0:00:DD
AA:CA:38:05:0A:05:CC:01:20:00:64:10:AA:FF:FF:CB
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:02:00:00:28:D0:00:DD
AA:CA:38:05:0A:05:CC:01:20:00:64:10:7F:FF:FF:1E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E:AA
[14:54:01][E][uart1:093]: <<< AA:ED:00:00:00:10:00:FD
[14:54:02][I][uart0:064]: <<< FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:10:7F:FF:FF:1E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:10:AA:FF:FF:CB
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:02:00:00:28:D0:00:DD
AA:CA:38:05:0A:05:CC:01:20
[14:54:02][E][uart1:093]: <<< AA:ED:00:00:00:10:00:FD
[14:54:03][I][uart0:064]: <<< 00:64:10:AA:FF:FF:CB
AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
AA:FA:2F:00:00:00:F0:02:00:02:00:00:28:D0:00:DD
AA:CA:38:05:0A:05:CC:01:20:00:64:10:7F:FF:FF:1E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:10:7F:FF:FF:1E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E:AA
[14:54:03][E][uart1:093]: <<< AA:ED:00:00:00:10:00:FD
[14:54:04][I][uart0:064]: <<< FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:10:7F:FF:FF:1E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:10:7F:FF:FF:1E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:03:05:CC:01:20
[14:54:04][E][uart1:093]: <<< AA:ED:00:00:00:10:00:FD
[14:54:05][I][uart0:064]: <<< 00:64:10:7F:FF:FF:17
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:08:00:00:28:D0:00:D7
AA:CA:38:05:FC:04:CC:01:20:00:64:10:A6:FE:FF:31
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:08:00:00:28:D0:00:D7
AA:CA:38:05:06:05:CC:01:20:00:64:10:A6:FE:FF:CA
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E:AA
[14:54:05][E][uart1:093]: <<< AA:ED:00:00:00:10:00:FD
[14:54:06][E][uart1:093]: <<< AA:ED:00:00:00:10:00:FD
[14:54:07][I][uart0:064]: <<< FA:2F:00:00:00:F0:02:00:05:00:00:28:D0:00:DA
AA:CA:38:05:06:05:CC:01:20:00:64:10:28:FF:FF:45
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:05:00:00:28:D0:00:DA
AA:CA:38:05:06:05:CC:01:20:00:64:10:28:FF:FF:45
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:04:00:00:28:D0:00:DB
AA:CA:38:05:06:05:CC:01:20
[14:54:07][E][uart1:093]: <<< AA:ED:00:00:00:10:00:FD
[14:54:08][I][uart0:064]: <<< 00:64:10:53:FF:FF:3E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:04:00:00:28:D0:00:DB
AA:CA:38:05:06:05:CC:01:20:00:64:10:53:FF:FF:3E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:04:00:00:28:D0:00:DB
AA:CA:38:05:06:05:CC:01:20:00:64:10:53:FF:FF:3E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E:AA
[14:54:08][E][uart1:093]: <<< AA:ED:00:00:00:10:00:FD
[14:54:09][I][uart0:064]: <<< FA:2F:00:00:00:F0:02:00:04:00:00:28:D0:00:DB
AA:CA:38:05:06:05:CC:01:20:00:64:10:53:FF:FF:3E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:06:05:CC:01:20:00:64:10:7F:FF:FF:12
AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:06:05:CC:01:20
[14:54:09][E][uart1:093]: <<< AA:ED:00:00:00:10:00:FD
[14:54:10][I][uart0:064]: <<< 00:64:10:7F:FF:FF:12
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:05:00:00:28:D0:00:DA
AA:CA:38:05:06:05:CC:01:20:00:64:10:28:FF:FF:45
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:05:00:00:28:D0:00:DA
AA:CA:38:05:06:05:CC:01:20:00:64:10:28:FF:FF:45
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E:AA
[14:54:10][E][uart1:093]: <<< AA:ED:00:00:00:10:00:FD
[14:54:11][I][uart0:064]: <<< FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:06:05:CC:01:20:00:64:10:7F:FF:FF:12
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:06:05:CC:01:20:00:64:10:7F:FF:FF:12
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:06:05:CC:01:20
[14:54:11][E][uart1:093]: <<< AA:ED:00:00:00:10:00:FD
[14:54:12][E][uart1:093]: <<< AA:ED:00:00:00:10:00:FD
[14:54:13][I][uart0:064]: <<< 00:64:10:53:FF:FF:3E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:04:00:00:28:D0:00:DB
AA:CA:38:05:06:05:CC:01:20:00:64:10:53:FF:FF:3E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:04:00:00:28:D0:00:DB
AA:CA:38:05:06:05:CC:01:20:00:64:10:7F:FF:FF:12
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E:AA
[14:54:13][E][uart1:093]: <<< AA:ED:00:00:00:10:00:FD
[14:54:14][I][uart0:064]: <<< FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:10:7F:FF:FF:1E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:10:7F:FF:FF:1E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20
[14:54:14][E][uart1:093]: <<< AA:ED:00:00:00:10:00:FD
[14:54:15][I][uart0:064]: <<< 00:64:10:7F:FF:FF:1E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:10:AA:FF:FF:CB
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:02:00:00:28:D0:00:DD
AA:CA:38:05:0A:05:CC:01:20:00:64:10:AA:FF:FF:CB
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E:AA
[14:54:15][E][uart1:093]: <<< AA:ED:00:00:00:10:00:FD
[14:54:16][I][uart0:064]: <<< FA:2F:00:00:00:F0:02:00:02:00:00:28:D0:00:DD
AA:CA:38:05:0A:05:CC:01:20:00:64:10:AA:FF:FF:CB
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:02:00:00:28:D0:00:DD
AA:CA:38:05:0A:05:CC:01:20:00:64:10:AA:FF:FF:CB
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:02:00:00:28:D0:00:DD
AA:CA:38:05:0A:05:CC:01:20
[14:54:16][E][uart1:093]: <<< AA:ED:00:00:00:10:00:FD
[14:54:17][I][uart0:064]: <<< 00:64:10:AA:FF:FF:CB
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:10:7F:FF:FF:1E
AA:DA:00:00:00:00:F8:11:5E:09:00:00:2F:04:02:4D
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:10:7F:FF:FF:1E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E:AA
[14:54:17][E][uart1:093]: <<< AA:ED:00:00:00:10:00:FD
[14:54:18][E][uart1:093]: <<< AA:ED:00:00:00:10:00:FD
[14:54:19][I][uart0:064]: <<< FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:10:7F:FF:FF:1E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:10:7F:FF:FF:1E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20
[14:54:19][E][uart1:093]: <<< AA:ED:00:00:00:10:00:FD
[14:54:20][I][uart0:064]: <<< 00:64:10:7F:FF:FF:1E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:10:7F:FF:FF:1E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:10:7F:FF:FF:1E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E:AA
[14:54:20][E][uart1:093]: <<< AA:ED:00:00:00:10:00:FD
[14:54:21][I][uart0:064]: <<< FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:10:7F:FF:FF:1E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:04:00:00:28:D0:00:DB
AA:CA:38:05:0A:05:CC:01:20:00:64:10:53:FF:FF:32
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:04:00:00:28:D0:00:DB
AA:CA:38:05:0A:05:CC:01:20
[14:54:21][E][uart1:093]: <<< AA:ED:00:00:00:10:00:FD
[14:54:22][I][uart0:064]: <<< 00:64:10:53:FF:FF:32
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:10:7F:FF:FF:1E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:10:7F:FF:FF:1E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E:AA
[14:54:22][E][uart1:093]: <<< AA:ED:00:00:00:10:00:FD
[14:54:23][I][uart0:064]: <<< FA:2F:00:00:00:F0:02:00:04:00:00:28:D0:00:DB
AA:CA:38:05:0A:05:CC:01:20:00:64:10:53:FF:FF:32
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:04:00:00:28:D0:00:DB
AA:CA:38:05:0A:05:CC:01:20:00:64:10:53:FF:FF:32
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:02:00:00:28:D0:00:DD
AA:CA:38:05:0A:05:CC:01:20
[14:54:23][E][uart1:093]: <<< AA:ED:00:00:00:10:00:FD
[14:54:24][E][uart1:093]: <<< AA:ED:00:00:00:10:00:FD
[14:54:25][I][uart0:064]: <<< 00:64:10:AA:FF:FF:CB
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:02:00:00:28:D0:00:DD
AA:CA:38:05:0A:05:CC:01:20:00:64:10:AA:FF:FF:CB
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:02:00:00:28:D0:00:DD
AA:CA:38:05:0A:05:CC:01:20:00:64:10:7F:FF:FF:1E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E:AA
[14:54:25][E][uart1:093]: <<< AA:ED:00:00:00:10:00:FD
[14:54:26][I][uart0:064]: <<< FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:10:7F:FF:FF:1E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:10:AA:FF:FF:CB
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:02:00:00:28:D0:00:DD
AA:CA:38:05:0A:05:CC:01:20
[14:54:26][E][uart1:093]: <<< AA:ED:00:00:00:10:00:FD
[14:54:27][I][uart0:064]: <<< 00:64:10:AA:FF:FF:CB
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:02:00:00:28:D0:00:DD
AA:CA:38:05:0A:05:CC:01:20:00:64:10:7F:FF:FF:1E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:10:7F:FF:FF:1E
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E:AA
[14:54:27][E][uart1:093]: <<< AA:ED:00:00:00:10:00:FD
[14:54:28][I][uart0:064]: <<< FA:2F:00:00:00:F0:02:00:03:00:00:28:D0:00:DC
AA:CA:38:05:0A:05:CC:01:20:00:64:10:53:FF:FF:32
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:04:00:00:28:D0:00:DB
AA:CA:38:05:0A:05:CC:01:20:00:64:10:53:FF:FF:32
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:04:00:00:28:D0:00:DB
AA:CA:38:05:0A:05:CC:01:20
[14:54:28][E][uart1:093]: <<< AA:ED:00:00:00:10:00:FD
[14:54:29][E][uart1:093]: <<< AA:ED:00:00:00:10:00:FD
[14:54:29][I][uart0:064]: <<< 00:64:10:AA:FF:FF:CB
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:02:00:00:28:D0:00:DD
AA:CA:38:05:0A:05:CC:01:20:00:64:10:AA:FF:FF:CB
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E
AA:FA:2F:00:00:00:F0:02:00:02:00:00:28:D0:00:DD
AA:CA:38:05:0A:05:CC:01:20:00:64:10:AA:FF:FF:CB
AA:DA:00:00:00:00:F8:11:5E:0A:00:00:2F:04:02:4E:AA
[14:54:30][E][uart1:093]: <<< AA:ED:00:00:00:10:00:FD

View File

@@ -0,0 +1,5 @@
AA.1A.EF.04.ED.04.20.00.00.00.9B.0A.01.20.08.80
AA.1A.EE.04.ED.04.20.00.00.00.9B.0A.01.20.08.81
AA.1A.46.05.E6.0D.25.00.00.00.00.30.2F.02.19.93
AA.1A.2B.05.66.06.14.00.00.00.9F.21.35.22.09.E0
AA.1A.17.05.EA.06.22.00.00.00.00.22.22.00.09.CF

View File

@@ -0,0 +1,126 @@
AA.7A.30.05.08.05.00.00.00.00.00.96.52.28.00.AE
AA.1A.30.05.37.07.0A.00.00.E0.96.0D.52.20.09.15
AA.1A.30.05.9D.06.0A.00.00.E0.96.0D.52.20.09.BE
AA.3A.30.05.08.05.00.00.00.01.00.96.52.28.00.EF
AA.3A.30.05.08.05.00.00.00.01.00.96.52.28.00.EF
AA.1A.30.05.0C.06.0A.00.00.E0.96.0D.52.20.09.2F
AA.3A.30.05.08.05.00.00.00.01.00.96.52.28.00.EF
AA.1A.30.05.2F.07.0B.00.00.E0.96.0D.52.20.09.0C
AA.1A.30.05.C6.07.0B.00.00.E0.96.0D.52.20.09.E5
AA.3A.30.05.08.05.00.00.00.01.00.96.52.28.00.EF
AA.3A.30.05.08.05.00.00.00.01.00.96.52.28.00.EF
AA.1A.2F.05.50.08.00.00.00.E0.96.0D.52.20.11.70
AA.3A.30.05.08.05.0A.00.00.01.11.96.52.28.0C.F8
AA.7A.37.05.11.05.00.00.00.00.00.96.52.28.00.B0
AA.1A.38.05.64.08.00.00.00.E0.96.0D.52.20.11.53
AA.1A.39.05.4C.08.00.00.00.E0.96.0E.52.20.11.79
AA.3A.39.05.26.05.D4.00.00.01.61.96.52.28.0C.71
AA.3A.3A.05.26.05.D5.00.00.01.63.96.52.28.0C.71
AA.1A.3A.05.4A.08.00.00.00.E0.96.0E.52.20.11.7C
AA.7A.3B.05.25.05.00.00.00.00.00.96.52.28.00.88
AA.1A.3B.05.52.08.00.00.00.E0.96.0F.52.20.11.64
AA.1A.3C.05.55.08.00.00.00.E0.96.0F.52.20.11.64
AA.3A.3C.05.2E.05.D5.00.00.01.60.96.52.28.0C.7C
AA.1A.3D.05.4F.08.00.00.00.E0.96.0F.52.20.11.7F
AA.7A.3D.05.51.05.00.00.00.00.00.96.52.28.00.FA
AA.3A.3E.05.52.05.D7.00.00.01.5E.96.52.28.0C.3E
AA.1A.3D.05.56.08.00.00.00.E0.96.10.52.20.11.79
AA.3A.3E.05.54.05.D7.00.00.01.5E.96.52.28.0C.38
AA.1A.3E.05.5D.08.00.00.00.E0.96.10.52.20.11.71
AA.1A.3F.05.6F.08.00.00.00.E0.96.11.52.20.11.43
AA.7A.40.05.58.05.00.00.00.00.00.96.52.28.00.8E
AA.1A.41.05.55.08.00.00.00.E0.96.12.52.20.11.04
AA.3A.44.05.59.05.D3.00.00.01.61.96.52.28.0C.74
AA.1A.44.05.44.08.00.00.00.E0.96.14.52.20.11.16
AA.1A.44.05.3F.08.00.00.00.E0.96.14.52.20.11.6D
AA.7A.45.05.59.05.00.00.00.00.00.96.52.28.00.8A
AA.3A.45.05.58.05.D2.00.00.01.61.96.52.28.0C.75
AA.1A.45.05.3E.08.00.00.00.E0.96.14.52.20.11.6D
AA.7A.46.05.58.05.00.00.00.00.00.96.52.28.00.88
AA.1A.46.05.3C.08.00.00.00.E0.96.15.52.20.11.6D
AA.1A.46.05.3E.08.00.00.00.E0.96.15.52.20.11.6F
AA.3A.46.05.58.05.D1.00.00.01.61.96.52.28.0C.75
AA.1A.47.05.55.08.00.00.00.E0.96.15.52.20.11.05
AA.3A.47.05.58.05.D0.00.00.01.61.96.52.28.0C.75
AA.3A.47.05.58.05.D0.00.00.01.61.96.52.28.0C.75
AA.1A.47.05.63.08.00.00.00.E0.96.16.52.20.11.30
AA.1A.48.05.4D.08.00.00.00.E0.96.16.52.20.11.11
AA.3A.48.05.58.05.CF.00.00.01.61.96.52.28.0C.65
AA.7A.48.05.58.05.00.00.00.00.00.96.52.28.00.86
AA.1A.48.05.48.08.00.00.00.E0.96.17.52.20.11.15
AA.3A.4A.05.58.05.CE.00.00.01.61.96.52.28.0C.66
AA.1A.4A.05.4F.08.00.00.00.E0.96.19.52.20.11.1E
AA.1A.4B.05.95.08.00.00.00.E0.96.19.52.20.11.C5
AA.3A.4B.05.57.05.CD.00.00.01.62.96.52.28.0C.68
AA.7A.4B.05.58.05.00.00.00.00.00.96.52.28.00.85
AA.1A.4B.05.AA.08.00.00.00.E0.96.19.52.20.11.FA
AA.1A.4B.05.85.08.00.00.00.E0.96.19.52.20.11.D5
AA.7A.4B.05.58.05.00.00.00.00.00.96.52.28.00.85
AA.7A.4B.05.58.05.00.00.00.00.00.96.52.28.00.85
AA.1A.4B.05.88.08.00.00.00.E0.96.19.52.20.11.D8
AA.7A.4B.05.58.05.00.00.00.00.00.96.52.28.00.85
AA.1A.4B.05.58.08.00.00.00.E0.96.1A.52.20.11.0B
AA.1A.4B.05.83.08.00.00.00.E0.96.1A.52.20.11.D0
AA.7A.4B.05.58.05.00.00.00.00.00.96.52.28.00.85
AA.3A.4B.05.58.05.CC.00.00.01.61.96.52.28.0C.65
AA.1A.4B.05.58.08.00.00.00.E0.96.1A.52.20.11.0B
AA.7A.4C.05.58.05.00.00.00.00.00.96.52.28.00.82
AA.1A.4C.05.45.08.00.00.00.E0.96.1A.52.20.11.11
AA.1A.4C.05.A6.08.00.00.00.E0.96.1C.52.20.11.F4
AA.7A.4C.05.58.05.00.00.00.00.00.96.52.28.00.82
AA.7A.4D.05.58.05.00.00.00.00.00.96.52.28.00.83
AA.1A.4D.05.9B.08.00.00.00.E0.96.1C.52.20.11.C8
AA.3A.4D.05.58.05.CC.00.00.01.62.96.52.28.0C.60
AA.1A.4D.05.A6.08.00.00.00.E0.96.1C.52.20.11.F5
AA.7A.4D.05.58.05.00.00.00.00.00.96.52.28.00.83
AA.1A.4D.05.7D.08.00.00.00.E0.96.1D.52.20.11.2F
AA.3A.4D.05.58.05.CC.00.00.01.61.96.52.28.0C.63
AA.1A.4D.05.8B.08.00.00.00.E0.96.1D.52.20.11.D9
AA.7A.4D.05.58.05.00.00.00.00.00.96.52.28.00.83
AA.1A.4D.05.A4.08.00.00.00.E0.96.1D.52.20.11.F6
AA.1A.4D.05.63.08.00.00.00.E0.96.1D.52.20.11.31
AA.7A.4D.05.58.05.00.00.00.00.00.96.52.28.00.83
AA.7A.4D.05.58.05.00.00.00.00.00.96.52.28.00.83
AA.1A.4D.05.64.08.00.00.00.E0.96.1E.52.20.11.35
AA.3A.4E.05.58.05.CC.00.00.01.62.96.52.28.0C.63
AA.1A.4D.05.5B.08.00.00.00.E0.96.1E.52.20.11.0A
AA.3A.4D.05.58.05.CC.00.00.01.62.96.52.28.0C.60
AA.7A.4E.05.59.05.00.00.00.00.00.96.52.28.00.81
AA.1A.4E.05.55.08.00.00.00.E0.96.1F.52.20.11.06
AA.7A.4E.05.59.05.00.00.00.00.00.96.52.28.00.81
AA.1A.4E.05.52.08.00.00.00.E0.96.1F.52.20.11.01
AA.1A.4E.05.4F.08.00.00.00.E0.96.1F.52.20.11.1C
AA.7A.4E.05.59.05.00.00.00.00.00.96.52.28.00.81
AA.1A.4E.05.59.08.00.00.00.E0.96.1F.52.20.11.0A
AA.1A.4E.05.72.08.00.00.00.E0.96.20.52.20.11.1E
AA.3A.4E.05.59.05.CC.00.00.01.63.96.52.28.0C.63
AA.7A.4E.05.59.05.00.00.00.00.00.96.52.28.00.81
AA.1A.4E.05.5E.08.00.00.00.E0.96.20.52.20.11.32
AA.7A.4E.05.59.05.00.00.00.00.00.96.52.28.00.81
AA.1A.4E.05.55.08.00.00.00.E0.96.20.52.20.11.39
AA.3A.4E.05.59.05.CC.00.00.01.62.96.52.28.0C.62
AA.1A.4E.05.59.08.00.00.00.E0.96.20.52.20.11.35
AA.3A.4E.05.59.05.CC.00.00.01.63.96.52.28.0C.63
AA.1A.4E.05.9F.08.00.00.00.E0.96.20.52.20.11.F3
AA.7A.4E.05.59.05.00.00.00.00.00.96.52.28.00.81
AA.3A.4E.05.59.05.CB.00.00.01.62.96.52.28.0C.65
AA.1A.4E.05.4C.08.00.00.00.E0.96.22.52.20.11.22
AA.3A.4E.05.59.05.CB.00.00.01.62.96.52.28.0C.65
AA.3A.4E.05.59.05.CB.00.00.01.62.96.52.28.0C.65
AA.1A.4E.05.4C.08.00.00.00.E0.96.22.52.20.11.22
AA.3A.4E.05.59.05.CB.00.00.01.62.96.52.28.0C.65
AA.1A.4E.05.4D.08.00.00.00.E0.96.23.52.20.11.22
AA.7A.4E.05.59.05.00.00.00.00.00.96.52.28.00.81
AA.1A.4E.05.61.08.00.00.00.E0.96.23.52.20.11.0E
AA.3A.4E.05.59.05.CB.00.00.01.62.96.52.28.0C.65
AA.1A.4E.05.7F.08.00.00.00.E0.96.23.52.20.11.10
AA.3A.4E.05.59.05.CB.00.00.01.62.96.52.28.0C.65
AA.1A.4E.05.8E.08.00.00.00.E0.96.23.52.20.11.E1
AA.1A.4E.05.9F.08.00.00.00.E0.96.23.52.20.11.F0
AA.3A.4E.05.5A.05.CB.00.00.01.62.96.52.28.0C.66
AA.1A.4E.05.9E.08.00.00.00.E0.96.23.52.20.11.F1
AA.3A.4F.05.59.05.CB.00.00.01.62.96.52.28.0C.64
AA.7A.4F.05.59.05.00.00.00.00.00.96.52.28.00.80
AA.1A.4E.05.99.08.00.00.00.E0.96.23.52.20.11.F6
AA.1A.4E.05.74.08.00.00.00.E0.96.23.52.20.11.1B
AA.3A.4E.05.59.05.CB.00.00.01.63.96.52.28.0C.64

View File

@@ -0,0 +1,59 @@
AA.1A.54.05.83.08.00.00.00.E0.97.32.52.20.01.F6
AA.7A.54.05.4A.05.2B.01.00.00.63.97.52.28.0C.CC
AA.1A.54.05.85.08.00.00.00.E0.97.32.52.20.01.F0
AA.3A.54.05.49.05.00.00.00.01.00.97.52.28.00.CB
AA.1A.54.05.85.08.00.00.00.E0.97.32.52.20.01.F0
AA.7A.53.05.49.05.2B.01.00.00.64.97.52.28.0C.CF
AA.1A.53.05.83.08.00.00.00.E0.97.33.52.20.01.F0
AA.1A.54.05.85.08.00.00.00.E0.97.33.52.20.01.F1
AA.3A.54.05.49.05.00.00.00.01.00.97.52.28.00.CB
AA.1A.54.05.83.08.00.00.00.E0.97.33.52.20.01.F7
AA.7A.54.05.49.05.2C.01.00.00.63.97.52.28.0C.C8
AA.7A.53.05.49.05.2C.01.00.00.63.97.52.28.0C.CF
AA.1A.54.05.7D.08.00.00.00.E0.97.33.52.20.01.09
AA.1A.54.05.0D.08.00.00.00.E0.97.33.52.20.01.79
AA.7A.55.05.4C.05.2B.01.00.00.64.97.52.28.0C.CC
AA.1A.56.05.1B.08.00.00.00.E0.97.34.52.20.01.6A
AA.7A.55.05.4C.05.2B.01.00.00.64.97.52.28.0C.CC
AA.1A.56.05.5B.08.00.00.00.E0.97.34.52.20.01.2A
AA.3A.56.05.4C.05.00.00.00.01.00.97.52.28.00.CC
AA.7A.56.05.4A.05.2B.01.00.00.63.97.52.28.0C.CE
AA.1A.56.05.7D.08.00.00.00.E0.97.34.52.20.01.0C
AA.7A.56.05.4B.05.2B.01.00.00.63.97.52.28.0C.CF
AA.1A.56.05.83.08.00.00.00.E0.97.34.52.20.01.F2
AA.1A.56.05.87.08.00.00.00.E0.97.34.52.20.01.F6
AA.3A.56.05.4B.05.00.00.00.01.00.97.52.28.00.CB
AA.7A.56.05.4B.05.2B.01.00.00.63.97.52.28.0C.CF
AA.1A.56.05.87.08.00.00.00.E0.97.34.52.20.01.F6
AA.1A.56.05.88.08.00.00.00.E0.97.34.52.20.01.F9
AA.7A.56.05.4A.05.2C.01.00.00.64.97.52.28.0C.CE
AA.3A.56.05.49.05.00.00.00.01.00.97.52.28.00.C9
AA.1A.56.05.8A.08.00.00.00.E0.97.34.52.20.01.FB
AA.3A.56.05.49.05.00.00.00.01.00.97.52.28.00.C9
AA.1A.56.05.8B.08.00.00.00.E0.97.34.52.20.01.FA
AA.1A.56.05.8A.08.00.00.00.E0.97.34.52.20.01.FB
AA.3A.56.05.49.05.00.00.00.01.00.97.52.28.00.C9
AA.1A.56.05.88.08.00.00.00.E0.97.35.52.20.01.F8
AA.3A.56.05.47.05.00.00.00.01.00.97.52.28.00.C7
AA.1A.56.05.88.08.00.00.00.E0.97.35.52.20.01.F8
AA.1A.56.05.85.08.00.00.00.E0.97.34.52.20.01.F4
AA.7A.56.05.49.05.2B.01.00.00.64.97.52.28.0C.CA
AA.1A.49.05.83.08.10.00.00.E0.97.35.52.20.09.F4
AA.3A.49.05.35.05.00.00.00.01.00.97.52.28.00.AA
AA.3A.46.05.30.05.00.00.00.01.00.97.52.28.00.A0
AA.1A.46.05.BD.06.0A.00.00.E0.97.34.52.20.09.D0
AA.1A.44.05.82.08.00.00.00.E0.97.32.52.20.11.F7
AA.3A.44.05.2B.05.00.00.00.01.00.97.52.28.0C.B5
AA.1A.43.05.80.08.00.00.00.E0.97.31.52.20.11.F1
AA.7A.43.05.2A.05.00.00.00.00.00.97.52.28.00.FE
AA.3A.46.05.2E.05.41.00.00.01.29.97.52.28.0C.DA
AA.1A.46.05.82.08.00.00.00.E0.97.30.52.20.11.F7
AA.3A.4B.05.34.05.C7.00.00.01.64.97.52.28.0C.06
AA.1A.4C.05.82.08.00.00.00.E0.97.30.52.20.11.FD
AA.7A.4C.05.33.05.00.00.00.00.00.97.52.28.00.E8
AA.1A.4C.05.80.08.00.00.00.E0.97.2F.52.20.11.E0
AA.1A.4D.05.80.08.00.00.00.E0.97.2F.52.20.11.E1
AA.1A.4E.05.7F.08.00.00.00.E0.97.2F.52.20.11.1D
AA.3A.4E.05.37.05.D1.00.00.01.64.97.52.28.0C.16
AA.1A.4D.05.7F.08.00.00.00.E0.97.2F.52.20.11.1E
AA.1A.4D.05.80.08.00.00.00.E0.97.2F.52.20.11.E1

View File

@@ -1,79 +0,0 @@
E8.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
E8.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.78.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.74.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
ED.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
ED.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
ED.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
E8.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
E8.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
E8.04.74.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.74.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.74.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.74.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.74.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.78.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.74.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.74.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
ED.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.74.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.74.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
E8.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
E6.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
E6.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
E8.04.74.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.74.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.74.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.74.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.74.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.74.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.78.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.78.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.74.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.76.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.74.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00
EA.04.74.05.00.00.00.00.00.06.56.00.09.18.00.22.00.00.00

15
docs/pdus/transpose.sh Executable file
View File

@@ -0,0 +1,15 @@
#!/bin/bash
if [[ $# -ne 1 ]];
then
echo "Synopsis: $0 <file>"
exit 1
fi
if ! which datamash >/dev/null;
then
echo "Required tool 'datamash' not found"
exit 1
fi
sed 's#\.# #g' "$1" | datamash -W --output-delimiter=' ' transpose

View File

@@ -3,11 +3,15 @@
logger:
level: VERY_VERBOSE
logs:
esp32_ble_tracker: VERY_VERBOSE
votronic_ble: VERY_VERBOSE
scheduler: DEBUG
component: DEBUG
scheduler: INFO
sensor: DEBUG
mqtt: INFO
mqtt.idf: INFO
mqtt.component: INFO
mqtt.sensor: INFO
mqtt.switch: INFO
esp32_ble_tracker: DEBUG
api.service: INFO
api: INFO

View File

@@ -1,7 +1,35 @@
<<: !include esp32-ble-example-debug.yaml
votronic_ble:
- ble_client_id: client0
id: votronic0
update_interval: 1s
enable_fake_traffic: true
interval:
- interval: 8s
then:
# Solar charger status frame
- lambda: |-
id(votronic0).on_votronic_ble_data(0x25, {
0xE8, 0x04, 0x76, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
0x56, 0x00, 0x09, 0x18, 0x00, 0x22, 0x00, 0x00, 0x00
});
- delay: 2s
# Battery computer status frame
- lambda: |-
id(votronic0).on_votronic_ble_data(0x22, {
0xE8, 0x04, 0xBF, 0x04, 0x09, 0x01, 0x60, 0x00, 0x5F, 0x00,
0x9A, 0xFE, 0xFF, 0xF0, 0x0A, 0x5E, 0x14, 0x54, 0x02, 0x04
});
- delay: 2s
# Battery computer status frame (max current: +8388.607 A)
- lambda: |-
id(votronic0).on_votronic_ble_data(0x22, {
0xE8, 0x04, 0xBF, 0x04, 0x09, 0x01, 0x60, 0x00, 0x5F, 0x00,
0xFF, 0xFF, 0x7F, 0xF0, 0x0A, 0x5E, 0x14, 0x54, 0x02, 0x04
});
- delay: 2s
# Battery computer status frame (min current: -8388.608 A)
- lambda: |-
id(votronic0).on_votronic_ble_data(0x22, {
0xE8, 0x04, 0xBF, 0x04, 0x09, 0x01, 0x60, 0x00, 0x5F, 0x00,
0x00, 0x00, 0x80, 0xF0, 0x0A, 0x5E, 0x14, 0x54, 0x02, 0x04
});

View File

@@ -7,15 +7,15 @@ substitutions:
esphome:
name: ${name}
comment: ${device_description}
min_version: 2024.6.0
project:
name: "syssi.esphome-votronic"
version: 1.0.0
version: 3.1.0
esp32:
board: wemos_d1_mini32
framework:
type: esp-idf
version: latest
external_components:
- source: ${external_components_source}
@@ -26,30 +26,56 @@ wifi:
password: !secret wifi_password
ota:
platform: esphome
logger:
level: DEBUG
# If you use Home Assistant please remove this `mqtt` section and uncomment the native `api` component!
# api:
# If you use Home Assistant please remove this `mqtt` section and uncomment the `api` component!
# The native API has many advantages over MQTT: https://esphome.io/components/api.html#advantages-over-mqtt
mqtt:
broker: !secret mqtt_host
username: !secret mqtt_username
password: !secret mqtt_password
id: mqtt_client
esp32_ble_tracker:
# api:
esp32_ble:
io_capability: keyboard_only
esp32_ble_tracker:
scan_parameters:
active: false
ble_client:
- mac_address: ${mac_address}
id: client0
pin_code: 173928
on_passkey_request:
then:
- ble_client.passkey_reply:
id: client0
passkey: 173928
votronic_ble:
- ble_client_id: client0
id: votronic0
throttle: 5s
binary_sensor:
- platform: votronic_ble
votronic_ble_id: votronic0
charging:
name: "${name} charging"
discharging:
name: "${name} discharging"
controller_active:
name: "${name} controller active"
current_reduction:
name: "${name} current reduction"
aes_active:
name: "${name} aes active"
sensor:
- platform: votronic_ble
votronic_ble_id: votronic0
@@ -58,12 +84,14 @@ sensor:
name: "${name} battery voltage"
secondary_battery_voltage:
name: "${name} secondary battery voltage"
battery_capacity:
name: "${name} battery capacity"
battery_capacity_remaining:
name: "${name} battery capacity remaining"
state_of_charge:
name: "${name} state of charge"
current:
name: "${name} current"
power:
name: "${name} power"
battery_nominal_capacity:
name: "${name} battery nominal capacity"
@@ -74,8 +102,8 @@ sensor:
name: "${name} pv current"
battery_status_bitmask:
name: "${name} battery status bitmask"
controller_status_bitmask:
name: "${name} controller status bitmask"
pv_controller_status_bitmask:
name: "${name} pv controller status bitmask"
charged_capacity:
name: "${name} charged capacity"
charged_energy:
@@ -88,8 +116,8 @@ text_sensor:
votronic_ble_id: votronic0
battery_status:
name: "${name} battery status"
controller_status:
name: "${name} controller status"
pv_controller_status:
name: "${name} pv controller status"
switch:
- platform: ble_client

51
esp32-ble-scanner.yaml Normal file
View File

@@ -0,0 +1,51 @@
substitutions:
name: ble-scanner
device_description: "Search for BLE devices"
esphome:
name: ${name}
comment: ${device_description}
min_version: 2024.6.0
project:
name: "syssi.esphome-votronic"
version: 3.1.0
esp32:
board: wemos_d1_mini32
framework:
type: esp-idf
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
ota:
platform: esphome
logger:
level: DEBUG
logs:
wifi: WARN
api:
reboot_timeout: 0s
esp32_ble_tracker:
scan_parameters:
active: true
on_ble_advertise:
then:
- lambda: |-
if (x.get_name().rfind("votronic", 0) == 0) {
ESP_LOGI("ble_adv", "New Votronic BLE controller found");
ESP_LOGI("ble_adv", " Name: %s", x.get_name().c_str());
ESP_LOGI("ble_adv", " MAC address: %s", x.address_str().c_str());
ESP_LOGD("ble_adv", " Advertised service UUIDs:");
for (auto uuid : x.get_service_uuids()) {
ESP_LOGD("ble_adv", " - %s", uuid.to_string().c_str());
}
}
text_sensor:
- platform: ble_scanner
name: "BLE Devices Scanner"

View File

@@ -0,0 +1,27 @@
<<: !include esp8266-charger-example.yaml
logger:
level: VERY_VERBOSE
logs:
votronic: VERY_VERBOSE
component: DEBUG
scheduler: INFO
binary_sensor: DEBUG
sensor: DEBUG
text_sensor: DEBUG
mqtt: INFO
mqtt.idf: INFO
mqtt.component: INFO
mqtt.sensor: INFO
mqtt.switch: INFO
api.service: INFO
api: INFO
uart:
- id: uart_0
baud_rate: 1000
tx_pin: ${tx_pin}
rx_pin: ${rx_pin}
debug:
direction: BOTH
dummy_receiver: false

View File

@@ -0,0 +1,9 @@
<<: !include esp8266-charger-example-debug.yaml
interval:
- interval: 2s
then:
- lambda: |-
id(votronic0).on_votronic_data({
0xAA, 0x3A, 0xA0, 0x05, 0xA4, 0x06, 0x78, 0x00, 0x00, 0x00, 0xA0, 0x15, 0x03, 0x00, 0x00, 0xF3
});

View File

@@ -0,0 +1,110 @@
substitutions:
name: votronic-solar-charger
device_description: "Monitor a Votronic Solar Charger via the display link port (UART)"
external_components_source: github://syssi/esphome-votronic@main
tx_pin: GPIO4
rx_pin: GPIO5
rx_timeout: 150ms
esphome:
name: ${name}
comment: ${device_description}
min_version: 2024.6.0
project:
name: "syssi.esphome-votronic"
version: 3.1.0
esp8266:
board: d1_mini
external_components:
- source: ${external_components_source}
refresh: 0s
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
ota:
platform: esphome
logger:
level: DEBUG
# If you use Home Assistant please remove this `mqtt` section and uncomment the `api` component!
# The native API has many advantages over MQTT: https://esphome.io/components/api.html#advantages-over-mqtt
mqtt:
broker: !secret mqtt_host
username: !secret mqtt_username
password: !secret mqtt_password
id: mqtt_client
# api:
uart:
- id: uart_0
baud_rate: 1000
tx_pin: ${tx_pin}
rx_pin: ${rx_pin}
votronic:
- id: votronic0
uart_id: uart_0
rx_timeout: ${rx_timeout}
throttle: 2s
binary_sensor:
- platform: votronic
votronic_id: votronic0
charging:
name: "${name} charging"
discharging:
name: "${name} discharging"
charger_charging:
name: "${name} charger charging"
charger_discharging:
name: "${name} charger discharging"
charger_controller_active:
name: "${name} charger controller active"
charger_current_reduction:
name: "${name} charger current reduction"
charger_aes_active:
name: "${name} charger aes active"
sensor:
- platform: votronic
votronic_id: votronic0
battery_voltage:
name: "${name} battery voltage"
secondary_battery_voltage:
name: "${name} secondary battery voltage"
current:
name: "${name} current"
power:
name: "${name} power"
charger_current:
name: "${name} charger current"
charger_power:
name: "${name} charger power"
charger_load:
name: "${name} charger load"
charger_controller_temperature:
name: "${name} charger controller temperature"
charger_mode_setting_id:
name: "${name} charger mode setting id"
battery_status_bitmask:
name: "${name} battery status bitmask"
charger_controller_status_bitmask:
name: "${name} charger controller status bitmask"
text_sensor:
- platform: votronic
votronic_id: votronic0
charger_mode_setting:
name: "${name} charger mode setting"
battery_status:
name: "${name} battery status"
charger_controller_status:
name: "${name} charger controller status"

View File

@@ -0,0 +1,27 @@
<<: !include esp8266-charging-converter-example.yaml
logger:
level: VERY_VERBOSE
logs:
votronic: VERY_VERBOSE
component: DEBUG
scheduler: INFO
binary_sensor: DEBUG
sensor: DEBUG
text_sensor: DEBUG
mqtt: INFO
mqtt.idf: INFO
mqtt.component: INFO
mqtt.sensor: INFO
mqtt.switch: INFO
api.service: INFO
api: INFO
uart:
- id: uart_0
baud_rate: 1000
tx_pin: ${tx_pin}
rx_pin: ${rx_pin}
debug:
direction: BOTH
dummy_receiver: false

View File

@@ -0,0 +1,9 @@
<<: !include esp8266-charging-converter-example-debug.yaml
interval:
- interval: 2s
then:
- lambda: |-
id(votronic0).on_votronic_data({
0xAA, 0x7A, 0xA0, 0x05, 0xA4, 0x06, 0x78, 0x00, 0x00, 0x00, 0xA0, 0x15, 0x03, 0x00, 0x00, 0xB3
});

View File

@@ -0,0 +1,111 @@
substitutions:
name: votronic-solar-charger
device_description: "Monitor a Votronic Solar Charger via the display link port (UART)"
external_components_source: github://syssi/esphome-votronic@main
tx_pin: GPIO4
rx_pin: GPIO5
rx_timeout: 150ms
esphome:
name: ${name}
comment: ${device_description}
min_version: 2024.6.0
project:
name: "syssi.esphome-votronic"
version: 3.1.0
esp8266:
board: d1_mini
external_components:
- source: ${external_components_source}
refresh: 0s
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
ota:
platform: esphome
logger:
level: DEBUG
# If you use Home Assistant please remove this `mqtt` section and uncomment the `api` component!
# The native API has many advantages over MQTT: https://esphome.io/components/api.html#advantages-over-mqtt
mqtt:
broker: !secret mqtt_host
username: !secret mqtt_username
password: !secret mqtt_password
id: mqtt_client
# api:
uart:
- id: uart_0
baud_rate: 1000
tx_pin: ${tx_pin}
rx_pin: ${rx_pin}
votronic:
- id: votronic0
uart_id: uart_0
rx_timeout: ${rx_timeout}
throttle: 2s
binary_sensor:
- platform: votronic
votronic_id: votronic0
charging_converter_charging:
name: "${name} charging converter charging"
charging_converter_discharging:
name: "${name} charging converter discharging"
charging_converter_controller_active:
name: "${name} charging converter controller active"
charging_converter_current_reduction:
name: "${name} charging converter current reduction"
charging_converter_aes_active:
name: "${name} charging converter aes active"
sensor:
- platform: votronic
votronic_id: votronic0
battery_voltage:
name: "${name} battery voltage"
secondary_battery_voltage:
name: "${name} secondary battery voltage"
current:
name: "${name} current"
power:
name: "${name} power"
state_of_charge:
name: "${name} state of charge"
charging_converter_battery_voltage:
name: "${name} charging converter battery voltage"
charging_converter_secondary_battery_voltage:
name: "${name} charging converter secondary battery voltage"
charging_converter_current:
name: "${name} charging converter current"
charging_converter_power:
name: "${name} charging converter power"
charging_converter_load:
name: "${name} charging converter load"
charging_converter_controller_temperature:
name: "${name} charging converter controller temperature"
charging_converter_mode_setting_id:
name: "${name} charging converter mode setting id"
charging_converter_battery_status_bitmask:
name: "${name} charging converter battery status bitmask"
charging_converter_controller_status_bitmask:
name: "${name} charging converter controller status bitmask"
text_sensor:
- platform: votronic
votronic_id: votronic0
charging_converter_mode_setting:
name: "${name} charging converter mode setting"
charging_converter_battery_status:
name: "${name} charging converter battery status"
charging_converter_controller_status:
name: "${name} charging converter controller status"

View File

@@ -0,0 +1,27 @@
<<: !include esp8266-smart-shunt-example.yaml
logger:
level: VERY_VERBOSE
logs:
votronic: VERY_VERBOSE
component: DEBUG
scheduler: INFO
binary_sensor: DEBUG
sensor: DEBUG
text_sensor: DEBUG
mqtt: INFO
mqtt.idf: INFO
mqtt.component: INFO
mqtt.sensor: INFO
mqtt.switch: INFO
api.service: INFO
api: INFO
uart:
- id: uart_0
baud_rate: 1000
tx_pin: ${tx_pin}
rx_pin: ${rx_pin}
debug:
direction: BOTH
dummy_receiver: false

View File

@@ -0,0 +1,19 @@
<<: !include esp8266-smart-shunt-example-debug.yaml
interval:
- interval: 4s
then:
- lambda: |-
id(votronic0).on_votronic_data({
0xAA, 0xCA, 0x03, 0x05, 0x0F, 0x05, 0xC7, 0x01, 0x20, 0x00, 0x63, 0x00, 0x7B, 0xFE, 0xFF, 0x39
});
- delay: 1s
- lambda: |-
id(votronic0).on_votronic_data({
0xAA, 0xDA, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x11, 0x5E, 0x05, 0x00, 0x00, 0x2F, 0x04, 0x02, 0x41
});
- delay: 1s
- lambda: |-
id(votronic0).on_votronic_data({
0xAA, 0xFA, 0x2F, 0x00, 0x00, 0x00, 0xD2, 0x02, 0x00, 0x0A, 0x00, 0x00, 0x28, 0xD0, 0x00, 0xF7
});

View File

@@ -0,0 +1,90 @@
substitutions:
name: votronic-solar-charger
device_description: "Monitor a Votronic Solar Charger via the display link port (UART)"
external_components_source: github://syssi/esphome-votronic@main
tx_pin: GPIO4
rx_pin: GPIO5
rx_timeout: 150ms
esphome:
name: ${name}
comment: ${device_description}
min_version: 2024.6.0
project:
name: "syssi.esphome-votronic"
version: 3.1.0
esp8266:
board: d1_mini
external_components:
- source: ${external_components_source}
refresh: 0s
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
ota:
platform: esphome
logger:
# If you use Home Assistant please remove this `mqtt` section and uncomment the native `api` component!
# api:
mqtt:
broker: !secret mqtt_host
username: !secret mqtt_username
password: !secret mqtt_password
id: mqtt_client
uart:
- id: uart_0
baud_rate: 1000
tx_pin: ${tx_pin}
rx_pin: ${rx_pin}
votronic:
- id: votronic0
uart_id: uart_0
rx_timeout: ${rx_timeout}
throttle: 2s
binary_sensor:
- platform: votronic
votronic_id: votronic0
charging:
name: "${name} charging"
discharging:
name: "${name} discharging"
sensor:
- platform: votronic
votronic_id: votronic0
battery_voltage:
name: "${name} battery voltage"
secondary_battery_voltage:
name: "${name} secondary battery voltage"
battery_capacity_remaining:
name: "${name} battery capacity remaining"
current:
name: "${name} current"
power:
name: "${name} power"
battery_nominal_capacity:
name: "${name} battery nominal capacity"
state_of_charge:
name: "${name} state of charge"
charger_mode_setting_id:
name: "${name} charger mode setting id"
battery_status_bitmask:
name: "${name} battery status bitmask"
text_sensor:
- platform: votronic
votronic_id: votronic0
charger_mode_setting:
name: "${name} charger mode setting"
battery_status:
name: "${name} battery status"

View File

@@ -0,0 +1,27 @@
<<: !include esp8266-solar-charger-example.yaml
logger:
level: VERY_VERBOSE
logs:
votronic: VERY_VERBOSE
component: DEBUG
scheduler: INFO
binary_sensor: DEBUG
sensor: DEBUG
text_sensor: DEBUG
mqtt: INFO
mqtt.idf: INFO
mqtt.component: INFO
mqtt.sensor: INFO
mqtt.switch: INFO
api.service: INFO
api: INFO
uart:
- id: uart_0
baud_rate: 1000
tx_pin: ${tx_pin}
rx_pin: ${rx_pin}
debug:
direction: BOTH
dummy_receiver: false

View File

@@ -0,0 +1,9 @@
<<: !include esp8266-solar-charger-example-debug.yaml
interval:
- interval: 2s
then:
- lambda: |-
id(votronic0).on_votronic_data({
0xAA, 0x1A, 0x17, 0x05, 0xEA, 0x06, 0x22, 0x00, 0x00, 0x00, 0x00, 0x22, 0x22, 0x00, 0x09, 0xCF
});

View File

@@ -0,0 +1,99 @@
substitutions:
name: votronic-solar-charger
device_description: "Monitor a Votronic Solar Charger via the display link port (UART)"
external_components_source: github://syssi/esphome-votronic@main
tx_pin: GPIO4
rx_pin: GPIO5
rx_timeout: 150ms
esphome:
name: ${name}
comment: ${device_description}
min_version: 2024.6.0
project:
name: "syssi.esphome-votronic"
version: 3.1.0
esp8266:
board: d1_mini
external_components:
- source: ${external_components_source}
refresh: 0s
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
ota:
platform: esphome
logger:
level: DEBUG
# If you use Home Assistant please remove this `mqtt` section and uncomment the `api` component!
# The native API has many advantages over MQTT: https://esphome.io/components/api.html#advantages-over-mqtt
mqtt:
broker: !secret mqtt_host
username: !secret mqtt_username
password: !secret mqtt_password
id: mqtt_client
# api:
uart:
- id: uart_0
baud_rate: 1000
tx_pin: ${tx_pin}
rx_pin: ${rx_pin}
votronic:
- id: votronic0
uart_id: uart_0
rx_timeout: ${rx_timeout}
throttle: 2s
binary_sensor:
- platform: votronic
votronic_id: votronic0
charging:
name: "${name} charging"
discharging:
name: "${name} discharging"
pv_controller_active:
name: "${name} pv controller active"
pv_current_reduction:
name: "${name} pv current reduction"
pv_aes_active:
name: "${name} pv aes active"
sensor:
- platform: votronic
votronic_id: votronic0
battery_voltage:
name: "${name} battery voltage"
pv_voltage:
name: "${name} pv voltage"
pv_current:
name: "${name} pv current"
pv_power:
name: "${name} pv power"
pv_controller_temperature:
name: "${name} pv controller temperature"
pv_mode_setting_id:
name: "${name} pv mode setting id"
pv_battery_status_bitmask:
name: "${name} pv battery status bitmask"
pv_controller_status_bitmask:
name: "${name} pv controller status bitmask"
text_sensor:
- platform: votronic
votronic_id: votronic0
pv_mode_setting:
name: "${name} pv mode setting"
pv_battery_status:
name: "${name} pv battery status"
pv_controller_status:
name: "${name} pv controller status"

View File

@@ -0,0 +1,27 @@
<<: !include esp8266-triple-charger-example.yaml
logger:
level: VERY_VERBOSE
logs:
votronic: VERY_VERBOSE
component: DEBUG
scheduler: INFO
binary_sensor: DEBUG
sensor: DEBUG
text_sensor: DEBUG
mqtt: INFO
mqtt.idf: INFO
mqtt.component: INFO
mqtt.sensor: INFO
mqtt.switch: INFO
api.service: INFO
api: INFO
uart:
- id: uart_0
baud_rate: 1000
tx_pin: ${tx_pin}
rx_pin: ${rx_pin}
debug:
direction: BOTH
dummy_receiver: false

View File

@@ -0,0 +1,58 @@
<<: !include esp8266-triple-charger-example-debug.yaml
interval:
- interval: 10s
then:
- lambda: |-
id(votronic0).on_votronic_data({
0xAA, 0x3A, 0xFD, 0x04, 0xF9, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x9A, 0x52, 0x28, 0x00, 0xDF
});
- delay: 1s
- lambda: |-
id(votronic0).on_votronic_data({
0xAA, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4A
});
- delay: 1s
- lambda: |-
id(votronic0).on_votronic_data({
0xAA, 0x1A, 0xFD, 0x04, 0x94, 0x05, 0x01, 0x00, 0x00, 0xE0, 0x9A, 0x11, 0x52, 0x20, 0x09, 0x63
});
- delay: 1s
- lambda: |-
id(votronic0).on_votronic_data({
0xAA, 0x7A, 0xFD, 0x04, 0xF9, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9A, 0x52, 0x28, 0x00, 0x9E
});
- delay: 1s
- lambda: |-
id(votronic0).on_votronic_data({
0xAA, 0x3A, 0x09, 0x05, 0x02, 0x05, 0xC8, 0x00, 0x00, 0x01, 0x64, 0x9A, 0x52, 0x28, 0x0C, 0x70
});
- delay: 1s
- lambda: |-
id(votronic0).on_votronic_data({
0xAA, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4A
});
- delay: 1s
- lambda: |-
id(votronic0).on_votronic_data({
0xAA, 0x1A, 0x0A, 0x05, 0xDD, 0x07, 0x00, 0x00, 0x00, 0xE0, 0x9A, 0x12, 0x52, 0x20, 0x11, 0xC4
});
- delay: 1s
- lambda: |-
id(votronic0).on_votronic_data({
0xAA, 0x7A, 0x0C, 0x05, 0x19, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9A, 0x52, 0x28, 0x00, 0x8F
});

View File

@@ -0,0 +1,177 @@
substitutions:
name: votronic-solar-charger
device_description: "Monitor a Votronic Solar Charger via the display link port (UART)"
external_components_source: github://syssi/esphome-votronic@main
tx_pin: GPIO4
rx_pin: GPIO5
rx_timeout: 600ms
esphome:
name: ${name}
comment: ${device_description}
min_version: 2024.6.0
project:
name: "syssi.esphome-votronic"
version: 3.1.0
esp8266:
board: d1_mini
external_components:
- source: ${external_components_source}
refresh: 0s
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
ota:
platform: esphome
logger:
level: DEBUG
# If you use Home Assistant please remove this `mqtt` section and uncomment the `api` component!
# The native API has many advantages over MQTT: https://esphome.io/components/api.html#advantages-over-mqtt
mqtt:
broker: !secret mqtt_host
username: !secret mqtt_username
password: !secret mqtt_password
id: mqtt_client
# api:
uart:
- id: uart_0
baud_rate: 1000
tx_pin: ${tx_pin}
rx_pin: ${rx_pin}
votronic:
- id: votronic0
uart_id: uart_0
rx_timeout: ${rx_timeout}
throttle: 2s
binary_sensor:
- platform: votronic
votronic_id: votronic0
charging:
name: "${name} charging"
discharging:
name: "${name} discharging"
charger_charging:
name: "${name} charger charging"
charger_discharging:
name: "${name} charger discharging"
charger_controller_active:
name: "${name} charger controller active"
charger_current_reduction:
name: "${name} charger current reduction"
charger_aes_active:
name: "${name} charger aes active"
charging_converter_charging:
name: "${name} charging converter charging"
charging_converter_discharging:
name: "${name} charging converter discharging"
charging_converter_controller_active:
name: "${name} charging converter controller active"
charging_converter_current_reduction:
name: "${name} charging converter current reduction"
charging_converter_aes_active:
name: "${name} charging converter aes active"
pv_controller_active:
name: "${name} pv controller active"
pv_current_reduction:
name: "${name} pv current reduction"
pv_aes_active:
name: "${name} pv aes active"
sensor:
- platform: votronic
votronic_id: votronic0
battery_voltage:
name: "${name} battery voltage"
current:
name: "${name} current"
power:
name: "${name} power"
battery_status_bitmask:
name: "${name} battery status bitmask"
charger_current:
name: "${name} charger current"
charger_power:
name: "${name} charger power"
charger_load:
name: "${name} charger load"
charger_controller_temperature:
name: "${name} charger controller temperature"
charger_mode_setting_id:
name: "${name} charger mode setting id"
charger_battery_status_bitmask:
name: "${name} charger battery status bitmask"
charger_controller_status_bitmask:
name: "${name} charger controller status bitmask"
charging_converter_battery_voltage:
name: "${name} charging converter battery voltage"
charging_converter_secondary_battery_voltage:
name: "${name} charging converter secondary battery voltage"
charging_converter_current:
name: "${name} charging converter current"
charging_converter_power:
name: "${name} charging converter power"
charging_converter_load:
name: "${name} charging converter load"
charging_converter_controller_temperature:
name: "${name} charging converter controller temperature"
charging_converter_mode_setting_id:
name: "${name} charging converter mode setting id"
charging_converter_battery_status_bitmask:
name: "${name} charging converter battery status bitmask"
charging_converter_controller_status_bitmask:
name: "${name} charging converter controller status bitmask"
pv_controller_status_bitmask:
name: "${name} pv controller status bitmask"
pv_controller_temperature:
name: "${name} pv controller temperature"
pv_battery_status_bitmask:
name: "${name} pv battery status bitmask"
pv_voltage:
name: "${name} pv voltage"
pv_current:
name: "${name} pv current"
pv_power:
name: "${name} pv power"
text_sensor:
- platform: votronic
votronic_id: votronic0
battery_status:
name: "${name} battery status"
charger_mode_setting:
name: "${name} charger mode setting"
charger_battery_status:
name: "${name} charger battery status"
charger_controller_status:
name: "${name} charger controller status"
charging_converter_mode_setting:
name: "${name} charging converter mode setting"
charging_converter_battery_status:
name: "${name} charging converter battery status"
charging_converter_controller_status:
name: "${name} charging converter controller status"
pv_mode_setting:
name: "${name} pv mode setting"
pv_controller_status:
name: "${name} pv controller status"
pv_battery_status:
name: "${name} pv battery status"

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

58
setup.cfg Normal file
View File

@@ -0,0 +1,58 @@
[flake8]
max-line-length = 120
# Following 4 for black compatibility
# E501: line too long
# W503: Line break occurred before a binary operator
# E203: Whitespace before ':'
# D202 No blank lines allowed after function docstring
# TODO fix flake8
# D100 Missing docstring in public module
# D101 Missing docstring in public class
# D102 Missing docstring in public method
# D103 Missing docstring in public function
# D104 Missing docstring in public package
# D105 Missing docstring in magic method
# D107 Missing docstring in __init__
# D200 One-line docstring should fit on one line with quotes
# D205 1 blank line required between summary line and description
# D209 Multi-line docstring closing quotes should be on a separate line
# D400 First line should end with a period
# D401 First line should be in imperative mood
ignore =
E501,
W503,
E203,
D202,
D100,
D101,
D102,
D103,
D104,
D105,
D107,
D200,
D205,
D209,
D400,
D401,
[isort]
# https://github.com/timothycrosley/isort
# https://github.com/timothycrosley/isort/wiki/isort-Settings
# splits long import on multiple lines indented by 4 spaces
multi_line_output = 3
include_trailing_comma=True
force_grid_wrap=0
use_parentheses=True
line_length=88
indent = " "
# will group `import x` and `from x import` of the same module.
force_sort_within_sections = true
sections = FUTURE,STDLIB,THIRDPARTY,FIRSTPARTY,LOCALFOLDER
default_section = THIRDPARTY
known_first_party = custom_components,tests
forced_separate = tests
combine_as_imports = true

Some files were not shown because too many files have changed in this diff Show More