BMW i3 v chytrém domě

BMW i3 v chytrém domě

V tomto článku ukážeme jak načítat informace o BMW i3 do tabletu pomocí OpenHAB nebo Home Assistant. Samozřejmě lze použít aplikace MyBMW ale pomocí API máme možnost vlastního vzhledu, přehledných informací na jedné stránce a hlavně nám to nikdo dookola stále nemění. Lze také posílát přes API podporované povely jako otevřít, zavřít, spustit klimatizaci atd. a hlavně je možné tyto akce provázat s chytrým domem.

Příklady použití:

- automatické uzamknutí auta v 22:00 pokud jsme doma

- hlasové povely přes Alexu - klimatizace, otevření

- alarm na zahradě - zablikání světel v případě pohybu na zahradě atd.

- automaticke zapnuti climate v daný čas pokud je pod nulou a je pracovný den

 

Hardware

Pi-Home - pokud nemáte, viz sekci Jak na to

Ideálně tablet v centrální místnosti případně také Alexu dle potřeby

Software

OpenHAB 4 nebo Home Assistant

 

PiCloud S BMW Objednat

 

Home Assistant:

1) Nainstalujeme integraci BMW Connected Drive

Settings -> Devices&Services -> Add integration

BMW integration Home Assistant

Vyplníme přihlašosvací údaje do MyBMW. Vyberte Rest of the World

Home Assistant BMW i3

 

Na další stránce pak potřebujeme aktuální token. Otevrěme stránku

https://bimmer-connected.readthedocs.io/en/stable/captcha/rest_of_world.html

potvrďte, že nejste robot a vygenerujte token. Token zkopírujte a vložte do požadováného pole. Uložte.

Auto pojmenujte "BMW i3".

*Můžete i jinak ale pravdepodobně se změní názvy entit a musíte ručně změnit v dashboardu níže.

Nyní máte cca 24 entit. Né všechny pro i3 fungují. Pokud chcete dashboard jako používame my, tak si založte čistý dashboard v Settings -> Dashboard -> Add dashboard

a vpravo nahoře klikněte na upravit, pak tři tečky a Raw

Custom dashboard Home Assistant

 

a vložte následující kód:

views:
  - title: Home
    sections:
      - type: grid
        cards:
          - type: gauge
            entity: sensor.bmw_i3_remaining_battery_percent
            name: Battery SoC
            grid_options:
              columns: 12
              rows: 3
          - type: entity
            entity: sensor.bmw_i3_remaining_range_electric
            name: Current range
            grid_options:
              columns: 12
              rows: 2
            state_color: false
          - type: entities
            entities:
              - entity: sensor.bmw_i3_charging_end_time
                name: Charging end time
              - entity: binary_sensor.bmw_i3_charging_status
                name: Charging status
              - entity: binary_sensor.bmw_i3_connection_status
                name: Connection status
      - type: grid
        cards:
          - type: picture
            image: /local/bmw_i3.png
            tap_action:
              action: none
          - type: entities
            entities:
              - entity: sensor.bmw_i3_mileage
                name: Mileage
              - entity: binary_sensor.bmw_i3_check_control_messages
                name: Check control messages
              - entity: binary_sensor.bmw_i3_condition_based_services
                name: Condition-based services
      - type: grid
        cards:
          - type: entities
            entities:
              - entity: binary_sensor.bmw_i3_door_lock_state
                name: Door lock state
              - entity: binary_sensor.bmw_i3_lids
                name: Lids
              - entity: lock.bmw_i3_lock
                name: Lock
              - entity: button.bmw_i3_flash_lights
                name: Flash lights
              - entity: button.bmw_i3_activate_air_conditioning
                name: Climate
            title: BMW i3
            grid_options:
              columns: 12
              rows: 6

UI by mělo vypadat následovně. České názvy položek si můžete přeložit snadno přímo v kódu a budete to mít celé česky

BMW v TabletuBMW integrace v mobilu

 

OpenHAB:

1) Nainstalujeme MyBMW binding v OpenHAB

MyBMW Binding OpenHAB

Vytvoříme bridge Things - > MyBMW -> MyBMWAccount

MyBMW SmartHome  Edit: V nové verzi máte u Account ještě Captcha token. Stačí si rozliknout odkaz: 

https://bimmer-connected.readthedocs.io/en/stable/captcha/rest_of_world.html

potvrdit, že nejste robot a vygenerovat token. Token zkopírujte a vložte do požadováného pole v OpenHAB. Uložte.

Nově přidaný thing BMWAccount by měl zezelenat na stav "Online".

 

Pak přidáme auto přes Things - > MyBMW -> Electric vehicle. Nezapomeňte zadat reálný VIN vašeho vozu.

BMW i3 OpenHAB

 

Po rozkliknutí thing přidaného auta by měl stav opět zezelenat na "Online". Rozklikněte si Channels. Z nich jsou pak vytvořit Items. Né všechny Channels jsou podporovány, můžete vyzkoušet vytvořit všechny a pak zjistit co je aktivní. Pokud Vám stačí to co máme v našem dashboardu, můžete Items přidat i najednou z textu níže. (Developer Tools -> Add Items from Textual Definition)

Group    CarBMW                      "BMW"                                (bmw)    ["Equipment"]
Image    BMWRenderedVehicleImage     "BMW Image"                          (CarBMW) ["Point"] { channel="mybmw:bev:bmwaccount:bmwi3:image#png" }
Number   BMWBatteryChargeLevel       "Battery Charge Level [%.0f%]"      (CarBMW) ["Point"] {channel="mybmw:bev:bmwaccount:bmwi3:range#soc"}
Number   BMWElectricRange            "Electric Range"                     (CarBMW) ["Point"] {channel="mybmw:bev:bmwaccount:bmwi3:range#electric"}
String   BMWPlugConnectionStatus     "Plug Connection Status"             (CarBMW) ["Point"] {channel="mybmw:bev:bmwaccount:bmwi3:status#plug-connection"}
String   BMWChargingStatus           "Charging Status"                    (CarBMW) ["Point"] {channel="mybmw:bev:bmwaccount:bmwi3:status#charge"}
Number   BMWChargingRemainingTime    "Remaining Charging Time [%.0f min]" (CarBMW) ["Point"] {channel="mybmw:bev:bmwaccount:bmwi3:status#charge-remaining"}
String   BMWDoorsStatus              "Overall Door Status"                (CarBMW) ["Point"] {channel="mybmw:bev:bmwaccount:bmwi3:status#doors"}
String   BMWWindowsStatus            "Overall Window Status"              (CarBMW) ["Point"] {channel="mybmw:bev:bmwaccount:bmwi3:status#windows"}
String   BMWDoorsLocked              "Doors Locked"                       (CarBMW) ["Point"] {channel="mybmw:bev:bmwaccount:bmwi3:status#lock"}
Switch   BMWLock                     "Lock"                               (CarBMW)           {expire="1s,command=OFF"}
Switch   BMWUnlock                   "Unlock"                             (CarBMW)           {expire="1s,command=OFF"}
Switch   BMWLights                   "Lights"                             (CarBMW)           {expire="1s,command=OFF"}
Switch   BMWClimateStart             "Climate Start"                      (CarBMW)           {expire="1s,command=OFF"}

Switch   BMWLights                   "Lights"                             (CarBMW)           {expire="1s,command=OFF"}
Switch   BMWClimateStart             "Climate Start"                      (CarBMW)           {expire="1s,command=OFF"}

Zkopírujte výše uvedené Items. Pozor na název Channel, pokus jste měnili ID pro thing BMWAccount a BMWi3 tak upravte dle potřeby.

Teď už můžete vyrobit Dashboard. V Settings -> Pages si založte novou stránku a naskládejte pole. Pokud chcete ušetřit čas a líbí se vám náš dashboard, přejděte na záložku Code a zkopírujte si následující kód níže:

config:
  label: Auto
  order: ""
  sidebar: true
blocks:
  - component: oh-block
    config: {}
    slots:
      default:
        - component: oh-grid-cells
          config: {}
          slots:
            default:
              - component: oh-grid-col
                config: {}
                slots:
                  default:
                    - component: oh-label-card
                      config:
                        action: navigate
                        actionPage: page:overview
                        label: Zpět na hlavní stránku
        - component: oh-grid-row
          config: {}
          slots:
            default: []
  - component: oh-block
    config: {}
    slots:
      default:
        - component: oh-grid-row
          config: {}
          slots:
            default:
              - component: oh-grid-col
                config: {}
                slots:
                  default:
                    - component: oh-gauge-card
                      config:
                        borderColor: "#2196f3"
                        borderWidth: "20"
                        item: BMWBatteryChargeLevel
                        max: 100
                        min: 0
                        size: 200
                        type: semicircle
                        valueFontSize: "30"
                        valueTextColor: "#2196f3"
                        title: Aktuální stav baterie
                        action: analyzer
                        actionAnalyzerItems:
                          - BMWBatteryChargeLevel
              - component: oh-grid-col
                config: {}
                slots:
                  default:
                    - component: oh-image-card
                      config:
                        item: BMWRenderedVehicleImage
              - component: oh-grid-col
                config: {}
                slots:
                  default:
                    - component: oh-list-card
                      config: {}
                      slots:
                        default:
                          - component: oh-label-item
                            config:
                              item: BMWDoorsStatus
                              title: Dveře
                          - component: oh-label-item
                            config:
                              item: BMWWindowsStatus
                              title: Okna
                          - component: oh-label-item
                            config:
                              item: BMWDoorsLocked
                              title: Stav
                          - component: oh-label-item
                            config:
                              item: BMW_i3_Check_Control
                              title: Chyby
                          - component: oh-label-item
                            config:
                              item: BMW_i3_Total_Distance_Driven
                              title: Najeto celkem
                              action: analyzer
                              actionAnalyzerItems:
                                - BMW_i3_Total_Distance_Driven
                          - component: oh-label-item
                            config:
                              item: BMW_i3_Address
                              title: Aktuální poloha
  - component: oh-block
    config: {}
    slots:
      default:
        - component: oh-grid-row
          config: {}
          slots:
            default:
              - component: oh-grid-col
                config: {}
                slots:
                  default:
                    - component: oh-label-card
                      config:
                        item: BMWElectricRange
                        label: =items.BMWElectricRange.displayState
                        title: Aktuální dojezd
                        trendItem: BMWElectricRange
                        action: analyzer
                        actionAnalyzerItems:
                          - BMWElectricRange
              - component: oh-grid-col
                config: {}
                slots:
                  default:
                    - component: oh-label-card
                      config:
                        action: command
                        actionItem: BMWLock
                        icon: iconify:icon-park-solid:lock
                        iconUseState: false
                        iconSize: 50
                        actionCommand: ON
                        vertical: true
              - component: oh-grid-col
                config: {}
                slots:
                  default:
                    - component: oh-label-card
                      config:
                        action: command
                        actionItem: BMWUnlock
                        icon: iconify:icon-park-solid:unlock
                        iconUseState: false
                        iconSize: 50
                        actionCommand: ON
                        vertical: true
              - component: oh-grid-col
                config: {}
                slots:
                  default:
                    - component: oh-label-card
                      config:
                        action: command
                        actionItem: BMWClimateStart
                        icon: iconify:mingcute:fan-fill
                        iconUseState: false
                        iconSize: 50
                        actionCommand: ON
                        vertical: true
              - component: oh-grid-col
                config: {}
                slots:
                  default:
                    - component: oh-label-card
                      config:
                        action: command
                        actionItem: BMWLights
                        icon: iconify:mdi:car-light-high
                        iconUseState: false
                        iconSize: 50
                        actionCommand: ON
                        vertical: true
        - component: oh-grid-row
          config: {}
          slots:
            default:
              - component: oh-grid-col
                config: {}
                slots:
                  default:
                    - component: oh-label-card
                      config:
                        item: BMWPlugConnectionStatus
                        title: Nabíječka
                        fontSize: 20px
              - component: oh-grid-col
                config: {}
                slots:
                  default:
                    - component: oh-label-card
                      config:
                        title: Stav nabíjení
                        item: BMWChargingStatus
                        fontSize: 20px
              - component: oh-grid-col
                config: {}
                slots:
                  default:
                    - component: widget:widget_remainingchargingtime
                      config: {}
masonry: []
grid: []
canvas: []

A je to. Mělo by to být funkční, případně napište do komentářů. Poslední věc, aby fungovali tlačítka odemčení, zamčení, blikání a klimatizace, přidáme pravidlo, které nastaví RemoteCommand dle tlačítka, které stiskneme. Přidejte nové pravidlo v Rules.
Přejděte do založky Code a zkopírujte zdrojový kód pravidla.

configuration: {}
triggers:
  - id: "2"
    configuration:
      itemName: BMWLock
      state: ON
      previousState: OFF
    type: core.ItemStateChangeTrigger
  - id: "3"
    configuration:
      itemName: BMWUnlock
      state: ON
      previousState: OFF
    type: core.ItemStateChangeTrigger
  - id: "4"
    configuration:
      itemName: BMWLights
      state: ON
      previousState: OFF
    type: core.ItemStateChangeTrigger
  - id: "8"
    configuration:
      itemName: BMWClimateStart
      state: ON
      previousState: OFF
    type: core.ItemStateChangeTrigger
conditions: []
actions:
  - inputs: {}
    id: "1"
    configuration:
      type: application/vnd.openhab.dsl.rule
      script: "if(BMWLock.state == ON){

        \   sendCommand(BMW_i3_Remote_Command, \"door-lock\")

        \   }

        if(BMWUnlock.state == ON){

        \   sendCommand(BMW_i3_Remote_Command, \"door-unlock\")

        \   }

        if(BMWLights.state == ON){

        \   sendCommand(BMW_i3_Remote_Command, \"light-flash\")

        \   }

        if(BMWClimateStart.state == ON){

        \   sendCommand(BMW_i3_Remote_Command, \"climate-now-start\")

        \   }\

        \  "
    type: script.ScriptAction

 Mělo by to vypadat nějak takto:

BMW Rule OpenHAB

 

Hotovo. Vyzkoušejte funkčnost. Někdy zaslání příkazu zlyhá, hlavně pokud zadáte více příkazu za sebou. To nedoporučuji. V Items je také položka BMW Service_Execution_State kde si ověříte zpracování zaslaného příkazu. Někdy se tam objeví Error 403 přesto se informace do auta dostane. Charge Start/Stop mě konkrétně nefunguje, proto jej tam nedávám. Budu rád za vaše zkušenosti a praktické použití v komentářích.

BMW i3  Dashboard

 

 Bonus: Pro Čas do úplného nabití, používame Widget, který převede minuty na hodiny a minuty, případně vypíše N/A když není auto na nabíječce. Widget přidáte v Developer Tools -> Widgets. Vytvořte nový a vložte kód níže:

uid: widget_remainingchargingtime
tags: []
props:
  parameters:
    - description: A text prop
      label: Prop 1
      name: prop1
      required: false
      type: TEXT
    - context: item
      description: An item to control
      label: Item
      name: item
      required: false
      type: TEXT
  parameterGroups: []
timestamp: Jan 4, 2025, 9:34:49 PM
component: f7-card
config:
  item: DurationInMinutes
  content: '=(items["BMWChargingRemainingTime"].state === "NULL"
    ||  items["BMWChargingRemainingTime"].state === "UNDEF" ? "N/A" :
    Math.floor(items["BMWChargingRemainingTime"].state / 60) + "h " +
    (items["BMWChargingRemainingTime"].state % 60) + "m")'
  title: Čas do úplného nabití
  style:
    font-size: 22px
    text-align: center

 

 

 

 

 

 a

Hodnocení článku:

Průměr: 4 (130 hlasů)

Podpořte nás:

Přidat komentář:

Přidat komentář

Nejnovější články v blogu

BMW Chytry dum
BMW i3 v chytrém doměHodnocení: 
80%

V tomto článku ukážeme jak načítat informace o BMW i3 do tabletu pomocí OpenHAB nebo Home Assistant. Samozřejmě lze použít aplikace MyBMW ale pomocí API máme možnost vlastního vzhledu, přehledných informací na jedné stránce a hlavně nám to nikdo dookola stále nemění. Lze také posílát přes API podporované povely jako otevřít, zavřít, spustit klimatizaci atd. a hlavně je možné tyto akce provázat s chytrým domem.

Linux Live Distribution Persistent USB
Vytvoření Persistent Live USBHodnocení: 
28.3%

Jak si vyzkoušet Linux? Přímo na vašem notebooku nebo počítači nabootováním z USB flash disku, nebo ještě lépe z externího SSD. Pokud se vám to zalíbí, v tomto návodu naleznete postup, jak vytvořit persistentní live distribuci, což znamená, že všechny změny, které v Linuxu uložíte, tam zůstanou. Můžete si tedy nainstalovat aplikace, ukládat dokumenty atd. Prostě takový přenositelný Linux v kapse, který lze spustit na jakémkoliv podporovaném počítači nebo notebooku.

SmartHome WhatsApp notifikace OpenHAB, Home Assistant
WhatsApp - notifikace zdarmaHodnocení: 
0%

Rádi byste dostávali notifikace z chytré domácnosti formou zpráv do WhatsApp messengeru? Ačkoliv z tohoto messengeru nejsme nadšení, mnoho lidí jej používá a je zbytečné instalovat jiný pouze kvůli chytrému domu. Pro daný kontakt je pak možné nastavit specifické zvonění, takže budete hned vědět, že zpráva přišla z vašeho domu. Našli jsme možnost, jak toto využívat bez poplatku. Jmenuje se CallMeBot...

Tailscale - VPN bez veřejné IP
Tailscale - přístup bez veřejné IP adresyHodnocení: 
100%

Služba Tailscale řeší přístup mezi jednotlivými zařízeními, pokud nemáte možnost veřejné IP adresy. Pro jednoho uživatele je zdarma s podporou max 100 zařízení. Ukážeme si jak Tailscale nainstalovat na Raspberry Pi, které budeme mít někde doma a do klienta (Android, iPhone) ze kterého budeme chtít přistupovat k domácímu Raspberry Pi. Náším příkladem bude vzdálený přístup k OpenHAB běžícím na Raspberry Pi. Nicméně stejné nastavení platí pro spoustu jiných aplikací - domácí NAS, PiHole, Home Assistant, Domoticz, NextCloud a jiné.

Shelly MQTT implementace
Shelly a OpenHABHodnocení: 
100%

Značka Shelly je známa svými produkty komunikujicími hlavně přes WiFi a zahrnujicími ovládané zásuvky, relé pod vypínače, relé pro ovládaní žaluzíí a mnoho dalších produktů. Jedna z výhod pro nasazení je možnost načítat a taky ovládat tyto zařízení pomocí univerzálního protokolu MQTT. Napříč existujícímu addonu pro OpenHAB i Home Assistant si ukážeme jak používat Shelly zařízení bez instalace jakéhokoliv rozšíření.

Victron & OpenHAB
Victron a chytrý důmHodnocení: 
100%

V tomto příspěvku si ukážeme jak načítat informace z fotovoltaické elektrárny od firmy Victron. Propojíme se s jednotkou Cerbo přes MQTT. Na základě těchto hodnot pak můžeme spínat různé spotřebiče (topení, bojler atp.) a předejít plýtvání baterie pro velké spotřebiče v době, kdy nemusí běžet atp.

GoodWe a chytrá domácnost
Smart Home a GoodWeHodnocení: 
100%

V příspěvku ukážeme krok po kroku jak komunikovat chytrou domácnosti přímo se střídačem Goodwe a dostávát aktuální informace (narozdíl od SEMS portálu). Tyto informace jsou nezbytné pokud chceme v chytrém domě nějak reagovat na aktuální parametry např. spínání dodatečného chlazení nebo spínání zásuvky se zátěží.

Ovládání domu hlasem
Hlasové ovládání domu AlexouHodnocení: 
100%

V tomto článku propojíme hlasového asistenta Amazon Echo Dot s open source domácí automatizací. Nepoužíváme OpenHAB Cloud, tz. vše běží lokálně. V tomto případě je nutných pár nastavení navíc, nicméně výsledek stojí za to!

NFC Tag Chytrý dům
NFC tagy v chytrém doměHodnocení: 
100%

NFC (Near Field Communication) tagy jsou malé plastové nebo papírové nálepky, které mohou být použity k automatizaci různých funkcí v domácnosti. V čláku vám ukážeme příklady použití a návod jak zapsat akci na NFC tag pomocí mobilního telefonu.

WireGuard iOS
Nastavení WireGuard připojení v iOSHodnocení: 
0%

V tomto článku najdete podrobný návod, jak se připojit k WireGuard VPN z iOS.