Chipolo in HomeAssistant

27 Nov 2023

Add Chipolo One to HomeAssistant as tracked device.

  1. Identify your Chipolo Device by using bluetoothctl command
    Enable bluetooth le scans

    
    bluetooth scan le
    AdvertisementMonitor path registered
    
    
  2. List all visible device

    
    bluetoothctl devices
    Device C2:37:C2:5E:07:05 C2-37-C2-5E-07-05
    Device C6:C1:F1:4B:1F:D2 C6-C1-F1-4B-1F-D2
    Device EE:90:B9:BC:E6:0F Saphe Drive Mini
    Device D9:00:00:08:7C:4B D9-00-00-08-7C-4B
    Device FD:8E:37:6A:31:CC FD-8E-37-6A-31-CC
    Device F1:70:BE:0F:F6:E7 Mi Smart Band 5
    
    
  3. Fetch information from all single devices you found.
    In the UUID you find something like "CHIPOLO", make sure that is your Chipolo device. Turn it of and it should not appear again in the device list. Turn it on again and you should find it again.

    
    bluetoothctl info D9:00:00:08:7C:4B
    Device D9:00:00:08:7C:4B (random)
    Alias: D9-00-00-08-7C-4B
    Paired: no
    Trusted: no
    Blocked: no
    Connected: no
    LegacyPairing: no
    UUID: CHIPOLO d.o.o.           (0000fe65-0000-1000-8000-00805f9b34fb)
    UUID: CHIPOLO d.o.o.            (0000fe33-0000-1000-8000-00805f9b34fb)
    ManufacturerData Key: 0x004c
    ManufacturerData Value:
    02 15 0f 73 d4 53 75 24 48 62 a8 64 34 20 87 5d  ...s.Su$Hb.d4 .]
    ba 4b 00 08 7c 4b c5                             .K..|K.
    ServiceData Key: 0000fe33-0000-1000-8000-00805f9b34fb
    ServiceData Value:
    01 00 01 00 d9 00 00 08 7c 4b                    ........|K
    RSSI: -90
    
    
  4. Configure HomeAssistant
    Enable the bluetooth_le_tracker module in the configuration.yaml

    
    device_tracker:
      - platform: bluetooth_le_tracker
        track_new_devices: true
        track_battery: true
    
    

  5. Once started it creates known_devices.yaml file in your configuration folder. You should deactivate "track_new_devices" and set this to "false". Otherwise, it depends where you live, your know_devices.yaml got spamend with every device which passed by.

  6. Edit the known_devices.yaml with your devices

    
    d9_00_00_08_7c_4b:
    # name: D9-00-00-08-7C-4B
    name: Bicycle Verena
    mac: BLE_D9:00:00:08:7C:4B
    icon: mdi:bicycle
    picture:
    track: true
    
    d8_01_00_01_a0_ec:
    # name: D8-01-00-01-A0-EC
    name: Bicycle Gerald
    mac: BLE_D8:01:00:01:A0:EC
    icon: mdi:bicycle
    picture:
    track: true
    
    
  7. Now you can use this to track your devices - I use this to track the presence of my wifes and my bicycle in the garage Garage_HA

    
    type: entities
    entities:
    - entity: cover.garagedoor
    - entity: automation.garagentor_offnen_gerald
    - entity: automation.garagentor_offnen_verena
    - entity: device_tracker.d8_01_00_01_a0_ec
    - entity: device_tracker.d9_00_00_08_7c_4b
    show_header_toggle: false
    
    
  8. And integrate this into a automation which open the garage door automatically if I was absent and my bike too. The first automation will just activate an automation - checks the conditions and activate the automation to open the garage door if I enter the home zone again.

    
    alias: Garagentor öffnen aktivieren Gerald
    description: ""
    trigger:
      - platform: state
        entity_id:
          - device_tracker.d8_01_00_01_a0_ec
        to: not_home
        for:
          hours: 0
          minutes: 5
          seconds: 0
      - platform: state
        entity_id:
          - person.gerald
        to: not_home
        for:
          hours: 0
          minutes: 5
          seconds: 0
    condition:
      - condition: state
        entity_id: device_tracker.d8_01_00_01_a0_ec
        state: not_home
        for:
          hours: 0
          minutes: 4
          seconds: 59
      - condition: state
        entity_id: person.gerald
        for:
          hours: 0
          minutes: 4
          seconds: 59
        state: not_home
    action:
      - service: automation.turn_on
        data: {}
        target:
          entity_id: automation.garagentor_offnen_gerald
    mode: single
    
    

    The second automation will only open the garagedoor if I enter the home zone and deactivate himself again.

    
    alias: Garagentor öffnen Gerald
    description: ""
    trigger:
      - platform: zone
        entity_id: person.gerald
        zone: zone.home
        event: enter
    condition: []
    action:
      - service: cover.open_cover
        data: {}
        target:
          entity_id: cover.garagedoor
      - service: automation.turn_off
        data:
          stop_actions: true
        target:
          entity_id: automation.garagentor_offnen_gerald
    mode: single
    
    

    The deactivation was necessary, because in some rare cases if GPS wasn't working or your home zone is quite small you will not open the garage door again. So for security reasons it just triggered once.