{"id":27221540,"url":"https://github.com/kmalinich/node-bmw-client","last_synced_at":"2025-04-10T08:01:39.711Z","repository":{"id":20230442,"uuid":"89202386","full_name":"kmalinich/node-bmw-client","owner":"kmalinich","description":"A node.js powered interface for E38/E39/E53 + E6x/E9x BMW vehicles (Client side)","archived":false,"fork":false,"pushed_at":"2024-04-26T18:01:14.000Z","size":1665,"stargazers_count":135,"open_issues_count":7,"forks_count":23,"subscribers_count":25,"default_branch":"develop","last_synced_at":"2024-06-09T15:32:11.159Z","etag":null,"topics":["auto-lights","bmw","canbus","car","carpc","dcan","e39","e60","e90","ibus","kbus","kcan","nbt","nodejs","ptcan","retrofit","vehicle"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kmalinich.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-04-24T05:48:27.000Z","updated_at":"2024-06-10T20:50:20.038Z","dependencies_parsed_at":"2023-09-28T19:45:48.805Z","dependency_job_id":"e4edc41e-6e75-4886-b17a-ac6ab180c134","html_url":"https://github.com/kmalinich/node-bmw-client","commit_stats":{"total_commits":1275,"total_committers":7,"mean_commits":"182.14285714285714","dds":"0.10039215686274505","last_synced_commit":"73124b7bab7f99087ab5875463d26a12b463cd7e"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kmalinich%2Fnode-bmw-client","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kmalinich%2Fnode-bmw-client/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kmalinich%2Fnode-bmw-client/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kmalinich%2Fnode-bmw-client/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kmalinich","download_url":"https://codeload.github.com/kmalinich/node-bmw-client/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248182072,"owners_count":21060893,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["auto-lights","bmw","canbus","car","carpc","dcan","e39","e60","e90","ibus","kbus","kcan","nbt","nodejs","ptcan","retrofit","vehicle"],"created_at":"2025-04-10T08:01:08.543Z","updated_at":"2025-04-10T08:01:39.676Z","avatar_url":"https://github.com/kmalinich.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"# node-bmw-client\nDo magic with an E38/E39/E46/E53-ish BMW, Raspberry Pi 3, and Node.js 9.x.  \n\n\n## Advisory\nI dev way faster than I document.  \nThis README is 12+ months out of date and needs to be completely rewritten, to include things like:\n* NBT retrofit support (HW 07)\n  * Currently power on/off and steering wheel controls are working, very early WIP\n* iDrive controller to Kodi support\n  * Supports K-CAN and K-CAN2 iDrive controllers\n  * E38/E39/E53 MFL \u003e NBT support\n* tvservice/vcgencmd HDMI screen control or HDMI-CEC screen control\n* Custom afterrun timer for accessory relays via Pi GPIO\n* SO MUCH OTHER STUFF\n* For snippets, check out \u003ca href=\"https://www.instagram.com/hotgarbagellc/\"\u003emy Instagram\u003c/a\u003e  \nI'll get to it... eventually  \n\n## Disclaimers\n* First and foremost, this project can and might hurt you.\n  * If you rely on the auto lights, and they cut out at night, you might die.\n  * If you are trapped in the vehicle, and the app locks up the GM and the door locks don't work, you might die.\n  * If you drive into a body of water and need to roll down the window to release the pressure, and the app locks up the GM and the windows don't work, you might die.\n  * If the app develops some bug/level of sentience .. it's worth knowing that it can talk to/hear from the airbag computer. If they deploy randomly.. you guessed it, you might die.\n* If it breaks/hurts/kills you/your car/your something else/etc... not my fault.\n  * Harsh disclaimer but it is what it is.\n  * See MIT license.\n* I routinely break master. Like, 100% un-functional.\n* I make no assertations that I am a professional. I'm just doing this for fun and to learn a little Node.js.\n* It's probably best to use this project as a reference versus fork it.\n\nCurrently being developed using a US-spec 2000 E39 540i, a US-spec 2002 E39 M5, two Raspberry Pi 3s running Raspbian stretch, Rolf Resler IBUS/KBUS adapters, NBT HW 07, PiCAN2 dual-channel CANBUS hats, a HDMI screen, NodeJS 9.x, and more.\nAbout 90% of it is done in a way I don't really like, but I have so little time to work on this... =/\n\nIt acts as, more or less.. plug-in custom firmware for the BMW modules.\n\nIt does:\n* BMW bus interface:\n  * DBUS\n  * IBUS\n  * KBUS\n* Module emulation:\n  * CDC (trunk-mounted CD changer - useful to repurpose as aux input)\n  * MID (Multi-information display)\n  * BMBT (Bordmonitor/On-board monitor)\n  * DSPC (DSP controller)\n* Lights:\n  * Standing lights auto on/off, essentially as DRLs\n  * Low beam auto on/off, based on locale and sun position (latitude/longitude are set in config.json)\n  * Rear fog LED in gauge cluster acts as auto-lights status light (since my car doesn't actually have a rear fog)\n    * It only shows when fogs or low-beams are on =/\n  * \"Comfort\" turn signal emulation, a la newer BMWs\n    * 3-flash comfort turn is a joke, this does 5-flash\n* Media:\n  * HDMI CEC control to power on/off HDMI display on ignition change\n  * Kodi API integration\n    * Steering wheel controls work with Kodi\n    * Key on/off starts/stops Kodi playback\n    * Song titles scroll in IKE cluster\n* Custom display in gauge cluster (IKE) with system load, coolant temp in deg C, and time (from OS, not from car)\n* Welcome message in gauge cluster (IKE) on key on/app start\n* WebUI:\n  * Current vehicle status\n    * Vehicle speed\n    * Engine RPM\n    * Engine status (running/not running)\n    * Country coding/units (parsing is terrible, I do it all wrong, don't look..)\n    * Coolant/exterior temperatures\n    * VIN (last 7)\n    * Odometer\n    * Doors/hood/trunk opened/closed\n    * Windows up/down\n    * Central locking\n    * Handbrake status\n    * In reverse gear or not\n    * Ignition position\n    * OBC data:\n      * Aux heat/vent timer 1+2\n      * Average speed\n      * Consumption 1+2\n      * Date/time\n      * Distance remaining\n      * Range to empty\n      * Speed limit\n      * Stopwatch\n      * Timer\n  * Control vehicle modules:\n    * DSP amp/equalizer\n    * GM (windows/doors/locks)\n    * IKE (gauge cluster)\n    * LCM (light module)\n    * OBC data set/reset\n  * Control other things:\n    * HDMI CEC on/off\n\t\t* GPIO outputs (for Sainsmart relays)\n* Other:\n  * Time/date sync from OS to car\n  * Auto-unlock doors when key is turned from run to accessory\n  * Parsing/decoding of IO status from LCM and GM\n  * WebSocket UI/dynamic table for displaying decoded data in WebUI, with 2-way communication for sending data as well\n  * What I'm about 97% certain is the single largest documented collection of BMW IBUS commands, under /ref \n* .. and a lot of other stuff, I'm probably forgetting.\n\nFuture plans/ideas/to do list:\n* [My current todo list (Google Docs)](https://docs.google.com/document/d/18HyEHyixTG1MqpJNxdOfWh4I4G5pGTjdKz1ye05hFMA/edit?usp=sharing)\n\nI'll add more to this once I'm out of the dirty-dev weeds, which might be never\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkmalinich%2Fnode-bmw-client","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkmalinich%2Fnode-bmw-client","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkmalinich%2Fnode-bmw-client/lists"}