[{"data":1,"prerenderedAt":456},["ShallowReactive",2],{"search-api":3},[4,12,22,34,41,56,67,77,87,99,111,120,132,144,157,166,178,188,202,212,222,232,242,250,259,271,279,290,298,311,323,333,342,351,359,368,378,387,397,409,419,431,439,446],{"id":5,"path":6,"dir":7,"title":8,"description":9,"keywords":10,"body":11},"content:0.index.md","\u002F","","Home","Welcome to the WiCAN docs.",[],"  Welcome to the WiCAN docs.  Use the menu to find various pages. Also checkout out the   contributing  page on how to add and update these docs.  All the docs assume you are running the latest version of the WiCAN Firmware, please make sure you keep your firmware up to date.  These docs are very new, and defiantly still a work in progress. Feel free to help out and migrate helpful content from the main README.md, and various issues\u002Fdiscussions all in here to get them in in a central place",{"id":13,"path":14,"dir":7,"title":15,"description":16,"keywords":17,"body":21},"content:1.overview.md","\u002Foverview","Overview","Welcome to the documentation for the WiCAN Pro (Forked Edition).",[18,19,20],"What is the WiCAN Pro?","Why the Forked Edition?","What's New? (Key Features)","  Overview: WiCAN Pro (Forked Edition)  Welcome to the documentation for the   WiCAN Pro (Forked Edition) .  If you are looking for a way to pull live vehicle telemetry—like State of Charge, RPM, tire pressures, or raw CAN frames—and route it seamlessly into your smart home or custom servers, you are in the right place.  What is the WiCAN Pro?  At its core, the WiCAN Pro is a powerful, ESP32-S3-based OBD2 and CAN bus interface. It plugs directly into your vehicle's diagnostic port and acts as a bridge between your car's internal networks and your Wi-Fi or Bluetooth devices. It supports standard OBD2 protocols (via an ELM327-compatible interpreter) as well as raw CAN bus monitoring and injection.  Why the Forked Edition?  The original WiCAN firmware was great for basic polling, but it relied on a \"flat list\" architecture. Every PID was polled blindly on a timer, which often resulted in network spam, slow update rates, and unnecessary battery drain when the car was off.   This Forked Edition completely rewrites the automation and networking engines.  It transforms the WiCAN Pro from a simple OBD scanner into a highly intelligent, edge-computing telemetry node. If you wish to try out the WiCAN Pro forked firmware see the release   Wambs Forked Firmware Releases   What's New? (Key Features)  1. Vehicle Groups & Advanced PID Management (The Game Changer)  The old flat list of PIDs is gone, replaced by Vehicle Groups. Groups were specifically created to allow you to access different vehicle modules based on dedicated polling periods, optimizing CAN bus traffic and maximizing response efficiency.     Dual-Database Profile Ecosystem:  You are no longer limited to a static, hardcoded firmware database. The UI now features a dedicated Get Vehicle Group DB button that fetches the absolute latest community-maintained profiles from an ultra-fast, indexed GitHub repository. The profiles are lazy-loaded on demand to keep the UI lightning fast.    Smart Profile Merging & HA Bundling:  When loading new vehicle data, the UI intelligently prompts you to safely merge the new groups into your existing workspace or replace them entirely. Furthermore, community profiles now act as a \"briefcase\"—if a user bundled a Home Assistant YAML configuration with their profile, the WiCan will automatically extract and download it straight to your PC.    Interactive Group Console:  Testing your custom formulas is now effortless. Every Vehicle Group features a dedicated \"Play\u002FTest\" button that launches a live terminal directly in your browser. It polls the ECU in real-time, displays the raw CAN hex responses, and instantly validates your math expressions before you deploy them.    Advanced Editor & Drag-and-Drop:  The UI now features a robust visual editor. You can easily copy\u002Fpaste (clone) PIDs, edit parameters on the fly, and seamlessly drag and drop PIDs between different Vehicle Groups to fine-tune your architecture.    Smart Polling & Conditional Logic:  Tell a group to only poll when the \"Engine is Running,\" when the \"Battery Voltage\" is above a specific threshold, or trigger it via an on-demand custom gatekeeper PID. This completely halts unnecessary traffic when the car is parked.    Zero Network Spam:  Groups package all their PID responses into a single JSON payload and push it to a unified MQTT_Grp topic the exact millisecond the batch finishes, drastically reducing MQTT broker congestion.  2. Advanced Destination Routing  You are no longer limited to simple MQTT publishes. The new   Configured Destinations  engine acts as a master router for your data.    A Better Routeplanner (ABRP):  Native API integration. Map your live State of Charge, power, and speed directly to ABRP for live EV route planning.   Home Assistant Webhooks:  Send your vehicle data directly to Home Assistant via HTTP POST requests, entirely bypassing the need for an MQTT broker. Features \"Changed Values Only\" mode to drastically reduce overhead.   Custom HTTP\u002FHTTPS:  Push your vehicle data to your own servers. Includes advanced authentication support (Bearer Tokens, API Keys, Basic Auth, and custom Query Parameters).  3. Enterprise-Grade Networking & Security  Your car moves; your network settings should adapt.    WireGuard VPN:  A native WireGuard client is now built into the firmware. You can securely connect your WiCAN back to your home network (like an Unraid or HAOS server) to safely transmit MQTT data over cellular hotspots without exposing ports.   Network Fallbacks:  Configure up to 5 backup Wi-Fi networks.   Home Network Prioritization:  The device scans every 5 minutes and will automatically drop a hotspot connection to switch back to your Home SSID when you pull into the driveway (if the signal is > -75 dBm).   Certificate Manager:  Upload your own CA certificates, Client Certificates, and Private Keys for strict mutual TLS (mTLS) authentication on HTTPS endpoints.  4. Overhauled Web Interface  The UI has been entirely redesigned for speed and usability.    Live Dashboard & Terminal:  Monitor your CAN bus, read live JSON outputs, and send raw ELM327\u002FSystem commands directly from the built-in web terminal.   Real-time Diagnostics:  See live success\u002Ffail rates for your Webhooks and Configured Destinations directly in the Automate tab. ",{"id":23,"path":24,"dir":7,"title":25,"description":26,"keywords":27,"body":33},"content:2.OBD2-Basics.md","\u002Fobd2-basics","Understanding OBD2 & CAN","Before configuring the WiCAN Pro's automation engine, it is highly recommended to understand the underlying architecture of vehicle diagnostics.",[28,29,30,31,32],"What is OBD-II?","How Data is Requested: Modes and PIDs","The Raw CAN Bus (The \"Listener\" Method)","The ELM327 Layer","Why the WiCAN Pro is Different","  Understanding OBD2 & CAN Bus  Before configuring the WiCAN Pro's automation engine, it is highly recommended to understand the underlying architecture of vehicle diagnostics.  What is OBD-II?   OBD-II (On-Board Diagnostics, version 2)  is the standardized system mandated in all cars sold in the US after 1996 (and later in other regions). It utilizes a standard 16-pin connector (the DLC - Data Link Connector) usually found under the driver's side dashboard.    Always-On Power:  Pin 16 provides direct 12V battery power, and pins 4\u002F5 provide ground. This is why the WiCAN Pro stays powered even when the car is off, making the   Power Saving  settings in the web UI crucial.   The Network:  While older cars used various serial protocols (like K-Line), almost all modern cars (2008+) communicate OBD-II data over the   CAN bus (Controller Area Network)  standard.   Read more:    Wikipedia: On-board diagnostics (OBD-II)  How Data is Requested: Modes and PIDs  The WiCAN Pro acts as a diagnostic client. When it wants information, it sends a request using specific   Modes  (also called Services) and   PIDs (Parameter IDs) .    Standard PIDs (Mode 01):  These are universally mandated by law. If you request   Mode 01, PID 0C ,   every  modern car will reply with its Engine RPM. The formulas to decode these are standardized and public.   Read more:    Wikipedia: OBD-II PIDs (Standard List)   Custom\u002FExtended PIDs (Mode 22 or 21):  Manufacturers have thousands of private sensors that aren't legally mandated (e.g., individual EV battery cell voltages, transmission fluid temps, or tire pressures). To get these, you must use manufacturer-specific requests (usually Mode 22). The WiCAN Pro allows you to define these custom PIDs, but you must know the specific hex request and decoding formula for your exact car.  The Raw CAN Bus (The \"Listener\" Method)  Instead of asking the car for data using OBD-II requests (which is slow), the WiCAN Pro can tap directly into the vehicle's raw CAN bus.    How it works:  Modules in your car (Engine, ABS, Body Control) are constantly broadcasting their status to each other hundreds of times a second.   The Advantage:  The WiCAN can simply \"listen\" to this existing chatter. It provides ultra-fast, real-time data without adding any request traffic to the network.   The Challenge:  CAN frames are raw hexadecimal data (e.g.,   ID: 0x1A6, Data: 00 1F C4 00... ) and are highly proprietary. You need a \"Vehicle Profile\" or reverse-engineering tools (like SavvyCAN) to translate them.  The ELM327 Layer  Many third-party smartphone apps (like Car Scanner or Torque Pro) expect to talk to an   ELM327  chip. The ELM327 uses standard AT commands to translate serial text into CAN bus signals.  The WiCAN Pro has a built-in software emulator that perfectly replicates an ELM327 over Wi-Fi or Bluetooth, allowing full compatibility with these legacy apps while operating much faster than a standard Bluetooth dongle.   Read more:    Wikipedia: ELM327  Why the WiCAN Pro is Different  Most OBD-II dongles are \"dumb\" bridges—they require a smartphone to be connected to ask the car for data and do the math.  The WiCAN Pro is an   Edge Gateway . It stores the PIDs, polls the car autonomously on its own timer, processes the complex math (hex-to-decimal conversion) locally on its ESP32-S3 chip, and pushes the final human-readable data (like   Speed: 65mph ) directly to a server or Home Assistant.",{"id":35,"path":36,"dir":7,"title":37,"description":7,"keywords":38,"body":40},"content:3.quick-start.md","\u002Fquick-start","Quick Start",[39],"title: Quick Start Guide\nnavigation: true","   title: Quick Start Guide\nnavigation: true  Quick Start Guide  Getting your WiCAN Pro up and running takes just a few minutes. This guide will walk you through powering the device, connecting to its initial setup network, and getting it onto your home Wi-Fi.  Step 1: Power the Device  The WiCAN Pro is powered directly from your vehicle's OBD2 port.   Locate your vehicle's OBD2 port (usually under the dashboard on the driver's side).  Plug the WiCAN Pro in.  You should see the LED indicators light up, meaning the device is booting.  Step 2: Connect to the WiCAN Access Point  When powered on for the first time (or when it cannot find a known Wi-Fi network), the WiCAN Pro broadcasts its own Wi-Fi network.   Open the Wi-Fi settings on your phone or laptop.  Look for a network named    WiCAN_xxxxxx  (the x's will be unique to your device's MAC address).  Connect to this network. The default password is    @meatpi# .   (Note: You must change this later for security!)  Step 3: Access the Web Interface   Once connected to the WiCAN's Wi-Fi, open a web browser.  Navigate to    http:\u002F\u002F192.168.0.10 .  You should now see the WiCAN Pro's main Status Dashboard.  Click on the   Settings  tab in the sidebar. You will see 5 configuration tabs at the top:   AP Config ,   Network Config ,   BLE ,   CAN , and   MQTT .  Step 4: Configure AP and Station Modes  To get the most out of the WiCAN Pro, you want to set it up to connect to your local network while maintaining direct access if needed.   Understanding the Modes:    AP (Access Point):  The WiCAN creates its own direct Wi-Fi network (this is what you are connected to right now).   Station:  The WiCAN connects to an existing router, like your home Wi-Fi or a phone hotspot.   In the   AP Config  tab, ensure the   Mode  dropdown is set to    AP+Station .  Change the   AP Password  from the default   @meatpi#  to a secure password of your choosing.  Click   Submit Changes  at the bottom of the screen.    Step 5: Connect to your Home Wi-Fi  Now, let's configure the Station side to connect to your main network.   Click on the   Network Config  tab.  At the top of this page, take note of your device's   MAC Address  (useful if you need to set reservations on your home router).  Click the   Scan  button next to the SSID field and select your home Wi-Fi network.  Enter your home Wi-Fi   Password .  Choose your   IP Assignment  method:    DHCP:  Your router will automatically assign an IP address to the WiCAN. This is the easiest method.   Static IP:  You manually define the IP, Subnet, Gateway, and DNS. If you choose this, fill out the required fields to match your network.  Click   Submit Changes  at the bottom of the screen.  Go to the System tab and click   Reboot .    The WiCAN Pro will restart and connect to your home network. You can now access the web interface using its new local IP address assigned by your router!",{"id":42,"path":43,"dir":7,"title":44,"description":45,"keywords":46,"body":55},"content:4.setup-workflow.md","\u002Fsetup-workflow","The Setup Workflow","Setting up a robust vehicle telemetry system involves more than just plugging the device in. To get the most out of your WiCAN Pro, we recommend following this step-by-step workflow.",[47,48,49,50,51,52,53,54],"1. Network Configuration","2. Firmware Update","3. Choose Your Data Routing Strategy","4. Choose Your Logic: Flat File vs. Vehicle Groups","5. Access Pre-Built Profiles","6. Create or Edit Custom Profiles","7. Testing and Verification","8. Optimize Power Saving","  The WiCAN Pro Setup Workflow  Setting up a robust vehicle telemetry system involves more than just plugging the device in. To get the most out of your WiCAN Pro, we recommend following this step-by-step workflow.  1. Network Configuration  Your first step is getting the WiCAN Pro onto your local network. If you haven't done this yet, refer to the   Quick Start Guide . Ensure you have set a static IP or a DHCP reservation so your device always stays at the same address.  2. Firmware Update  Before building any complex automations, make sure your device is running the latest firmware.   Navigate to the   System  tab in the web interface.  Check for any OTA (Over-The-Air) updates to ensure you have the latest features and bug fixes.  3. Choose Your Data Routing Strategy  Decide where your data is actually going to live.    MQTT:  Best for Home Assistant and real-time, high-speed dashboards on your local network.   Webhooks:  Best for pushing data to custom cloud databases or external web applications.   (See the Routing Methods page for a deeper dive).  4. Choose Your Logic: Flat File vs. Vehicle Groups  You must decide how the WiCAN will process its data.    Legacy Flat File:  A simpler, older method where all PIDs are processed in a single list.   Automate Engine (Vehicle Groups):  The modern, recommended approach. This allows you to group specific PIDs together (e.g., \"Fast Polling\" for Speed\u002FRPM, and \"Slow Polling\" for Battery Health) and route them to different destinations.  5. Access Pre-Built Profiles  Don't reinvent the wheel. Many standard OBD2 PIDs and custom EV profiles have already been mapped out by the community. You can load these pre-built Vehicle Profiles directly into your device to save time.  6. Create or Edit Custom Profiles  If your specific vehicle or sensor isn't in a pre-built profile, you can use the   Automate  tab to build it yourself. You will define the specific CAN hex requests, the expected response headers, and the math formulas required to translate the raw data into human-readable numbers.  7. Testing and Verification  Before taking the car for a drive, verify your setup:   Use the   Dashboard  tab to ensure your gauges are actively pulling data.  Use the   CAN Monitor  to watch the raw traffic and ensure your requests are getting valid responses.  Check your MQTT Broker or Webhook receiver to verify the data payloads are arriving correctly.  8. Optimize Power Saving  Once everything is working, go to the   Power Saving  tab. Set your voltage cut-offs and sleep timers so the WiCAN Pro turns off gracefully when the car is parked, protecting your 12V battery from draining.",{"id":57,"path":58,"dir":59,"title":60,"description":61,"keywords":62,"body":66},"content:5.Web_Interface:1.interface_overview.md","\u002Fweb_interface\u002Finterface_overview","web_interface","Interface Overview","The WiCAN Pro provides a comprehensive web interface to manage your vehicle's data. Below is a detailed breakdown of each section found in the sidebar.",[63,64,65],"Core Configuration","Diagnostics & Real-Time Data","System & Security","  Web Interface Overview  The WiCAN Pro provides a comprehensive web interface to manage your vehicle's data. Below is a detailed breakdown of each section found in the sidebar.   Core Configuration    Status:  The main dashboard for device health. Monitor live Wi-Fi signal strength (RSSI), MQTT connection status, system uptime, and the current real-time voltage of your vehicle's battery.   Settings:  The primary setup area. Contains sub-tabs for   Wi-Fi  (AP and Station),   BLE  (Bluetooth Low Energy),   CAN  (Protocol and Speed selection), and   MQTT  (Broker credentials and port).   Automate:  The telemetry engine. Use this to create or import   Vehicle Profiles , organize PIDs into   Groups  with custom polling intervals, and set up   Configured Destinations  to route data to external services.   Power Saving:  Battery protection management. Set the   Sleep Voltage  (to prevent starting issues) and configure   Wake-up intervals  or CAN-bus activity triggers to bring the device online.  Diagnostics & Real-Time Data    Logger Settings:  Configuration for raw data logging, allowing you to capture bus traffic for later analysis.   Dashboard:  A customizable visual interface. Displays your active PIDs using real-time gauges and text readouts for a quick glance at vehicle performance.   CAN Monitor:  A powerful debugging tool. View raw hex traffic as it flows across the CAN bus, allowing you to identify custom PIDs or troubleshoot communication issues.   Terminal:  Direct command-line access. Interact with the device using   ELM327 ,   AT , and   System  commands. This is essential for testing manual queries and low-level troubleshooting.  System & Security    Advanced:  For complex integrations. Manage custom   HTTP\u002FHTTPS  endpoints and upload   SSL\u002FTLS Certificates  for secure, encrypted data transmission to private servers.   System:  Maintenance tools. Update your firmware via   OTA , download a   Backup  of your entire configuration, or perform a   Factory Reset  if needed.   VPN:  Native   WireGuard  support. Configure a secure tunnel to connect your car back to your home network, keeping your MQTT and data traffic private even on public hotspots.   About:  Essential device information including your current firmware build version and the unique MAC addresses for your network interfaces.",{"id":68,"path":69,"dir":59,"title":70,"description":71,"keywords":72,"body":76},"content:5.Web_Interface:2.routing-methods.md","\u002Fweb_interface\u002Frouting-methods","Routing Methods (MQTT vs Webhooks)","The WiCAN Pro allows you to send your vehicle's telemetry data to external servers. But with multiple ways to send this data, which one should you choose?",[73,74,75],"1. MQTT (Best for Real-Time & Home Assistant)","2. Webhooks \u002F HTTP POST (Best for Cloud & Custom Servers)","3. Native Integrations (e.g., ABRP)","  Routing Your Data: MQTT vs Webhooks  The WiCAN Pro allows you to send your vehicle's telemetry data to external servers. But with multiple ways to send this data, which one should you choose?  Here is a breakdown of the available methods and when to use them.  1. MQTT (Best for Real-Time & Home Assistant)  MQTT is a lightweight, real-time messaging protocol. It uses a \"publish\u002Fsubscribe\" model, requiring a central server called an MQTT Broker (like Mosquitto).    How it works:  The WiCAN maintains an open connection to the broker and streams data instantly as it polls the car.   Pros:  Extremely fast, uses very low bandwidth, and is natively supported by Home Assistant. Perfect for creating live, real-time dashboards.   Cons:  Requires you to set up and host an MQTT broker.   When to use it:  Use MQTT if you are integrating with Home Assistant, building a local live dashboard, or using the WiCAN primarily on your own home Wi-Fi network.  2. Webhooks \u002F HTTP POST (Best for Cloud & Custom Servers)  A Webhook is a standard web request. Instead of maintaining a constant connection, the WiCAN packages the data into a JSON file and \"pushes\" it to a specific web address.    How it works:  Every time the WiCAN gathers data, it opens a connection, sends the JSON payload to your server's URL, and closes the connection.   Pros:  Universally supported. Almost every modern web service, custom database, or cloud platform can accept a Webhook without needing a dedicated messaging broker.   Cons:  Slightly higher bandwidth and overhead than MQTT. Not ideal for millisecond-level real-time data.   When to use it:  Use Webhooks if you are sending data to a custom web app, a cloud database, or a cloud automation platform.  3. Native Integrations (e.g., ABRP)  The WiCAN Pro also supports sending data directly to specific third-party services, like A Better Routeplanner (ABRP) for EV trip planning.    How it works:  You simply paste your ABRP user token into the WiCAN Automate interface. The device handles all the formatting behind the scenes to match exactly what the ABRP servers expect.   When to use it:  Use this when you want a plug-and-play solution for a supported app without needing to build your own server or broker.",{"id":78,"path":79,"dir":59,"title":80,"description":81,"keywords":82,"body":86},"content:5.Web_Interface:3.status.md","\u002Fweb_interface\u002Fstatus","Status","The Status tab is the default landing page when you connect to your WiCAN Pro. It provides a real-time, comprehensive snapshot of the device's current health, network connections, and vehicle data.",[83,84,85],"1. Network","2. Hardware & CAN","3. System Diagnostics","  Status Dashboard  The Status tab is the default landing page when you connect to your WiCAN Pro. It provides a real-time, comprehensive snapshot of the device's current health, network connections, and vehicle data.  To manually refresh the data on this page at any time, click the   Check status  button at the very bottom.  The Status page is divided into three distinct sub-tabs to organize the information clearly.    1. Network  This tab details how your device is currently communicating with the outside world, which is critical for ensuring your MQTT payloads, Webhooks, and external apps are functioning properly.    WiFi Mode:  Shows the active wireless state of the WiCAN Pro.\n    AP : Broadcasting its own Wi-Fi hotspot.   Station : Connected to your home network or mobile hotspot.   AP+Station : Running both modes simultaneously.   BLE+Station : Bluetooth Low Energy is active alongside the Station connection.   SmartConnect : Automatically switching between Home and Drive networks.   AP Channel:  The Wi-Fi channel (1-14) being used if the WiCAN is broadcasting its own Access Point. If you experience interference with third-party apps, checking this channel is a good first step.   WiFi Station:  Displays whether the device has successfully connected to your configured home router or mobile hotspot (Connected \u002F Not Connected).   Station IP:  The local IP address assigned to the WiCAN by your router. This is the exact IP address you must enter into third-party apps (like Home Assistant, RealDash, or FORScan) to connect over your local network.   DNS Main \u002F Backup:  The primary and secondary Domain Name System servers the device is using to resolve web addresses. If these read \"N\u002FA\", the WiCAN will not be able to resolve URLs for Webhooks, MQTT brokers, or ABRP integrations.   mDNS:  The local multicast hostname (usually   wican.local ) that can be used to access the UI in your web browser without needing to know the exact Station IP address.   VPN Status:  Shows the live connection state of the built-in VPN engine.\n   For standard WireGuard, it will report states such as   connected ,   connecting ,   disabled , or   error .  For Tailscale mesh routing, it dynamically verifies authentication with your Tailnet and will explicitly report   connected (tailscale)  or alert you with   connecting \u002F invalid key (tailscale) .   VPN IP Address:  Dynamically fetches and displays the active IP assigned to the secure tunnel interface in real-time. For Tailscale, this displays your private, globally accessible   100.x.x.x  Mesh Carrier-Grade NAT IP address, allowing you to quickly copy it for remote access configurations.    2. Hardware & CAN  This tab displays how the WiCAN Pro is physically interacting with the vehicle's internal network and OBD2 port.    CAN Bitrate:  The communication speed of the vehicle's CAN bus. Most modern vehicles operate at 500K, while older vehicles or specific secondary networks may use 250K or 125K.   CAN Mode:  Shows the active interaction state.\n    Normal : The WiCAN can actively send requests to the ECU and acknowledge packets.   Silent : Listen-only mode. The WiCAN is strictly passive and completely invisible to the car.   Port Type & TCP\u002FUDP Port:  The active network protocol (TCP or UDP) and port number (default   3333 ) used by external applications to stream data. TCP is recommended for reliability, while UDP is faster but prone to dropped packets.   Battery Voltage:  A live reading of your vehicle's 12V system directly from the OBD2 pins. If the engine is running, this usually reads around 13.5V - 14.4V. If the car is parked and off, it should sit around 12.2V - 12.6V.   OBD Chip Status:  Displays the internal health and readiness of the ELM327 emulator processing your commands.   3. System Diagnostics  This tab contains critical metrics for ensuring the device is operating safely, tracking its reboot history, and managing power consumption.    Time Synced:  Shows \"Yes\" if the device has successfully pulled the current time via NTP.   Note: Time sync is strictly required for secure HTTPS\u002FTLS certificate verification and for triggering Scheduled Wakeups .   Time to Sleep:  A live, dynamically updating countdown timer showing exactly how many minutes and seconds remain before the device enters deep sleep to save your car battery. If sleep is disabled, this displays \"N\u002FA\".   Uptime:  How long the device has been continuously powered on and running since its last reboot.   Last Reset:  The hardware-level reason for the last reboot (e.g., Power On Reset, Software Reset, Watchdog Timer).   Planned Restart:  Shows if the device was intentionally rebooted by a specific system task, such as a Firmware Update or the user clicking \"Submit Changes\".   Restart Source:  Tells you   why  the device woke up from deep sleep. This will indicate if it was woken by CAN bus activity, a scheduled timer, or a voltage spike from the engine turning on.   Last Boot Time:  The exact local date and timestamp of the last boot.   Boot Count:  The total number of times the device has booted since the tracker was last cleared.   Unexpected Resets:  A cumulative counter of crashes or forced reboots. If this number is steadily climbing, it indicates unstable power from the OBD2 port or a potential firmware issue.",{"id":88,"path":89,"dir":59,"title":90,"description":91,"keywords":92,"body":98},"content:5.Web_Interface:4.settings.md","\u002Fweb_interface\u002Fsettings","Settings","The Settings tab is the foundation of your WiCAN Pro. It is divided into five sub-tabs that control how the device connects to networks, pairs with Bluetooth, reads the vehicle's bus, and transmits telemetry.",[93,94,95,96,97],"1. AP Config (Access Point)","2. Network Config (Station Mode)","3. BLE (Bluetooth Low Energy)","4. CAN (Controller Area Network)","5. MQTT (Messaging Protocol)","  Settings Configuration  The Settings tab is the foundation of your WiCAN Pro. It is divided into five sub-tabs that control how the device connects to networks, pairs with Bluetooth, reads the vehicle's bus, and transmits telemetry.  Always remember to click the   Submit Changes  button at the bottom of the sidebar to save any modifications made on these tabs.   1. AP Config (Access Point)  This tab controls how the WiCAN Pro broadcasts its own Wi-Fi network and manages its operating modes.    Important Note on AP Modes:  Whenever a mode that includes \"AP\" is active (like AP Mode or AP+Station), the WiCAN Pro will broadcast its own network and can   always  be directly accessed at    http:\u002F\u002F192.168.0.10 . This is highly useful as a direct fallback method to access the device if your main home network goes down, or if a configuration\u002Fupdate fails.    Mode:  The primary operating state of the device.    AP Mode:  Broadcasts its own network. You must connect directly to it.   Station Mode:  Connects to an existing router (like your home Wi-Fi). The AP turns off.   AP+Station:  Does both simultaneously.   (Note: This can sometimes cause routing conflicts; Auto-Disable AP is recommended if using this).   BLE+Station:  Uses Bluetooth for local app connections while maintaining a Wi-Fi connection to your router.   AP Channel:  Select the Wi-Fi channel (1-14) to avoid interference with other local networks.   AP SSID & Password:  The name and password of the WiCAN's broadcasted network. You must change the default password (  @meatpi# ) for security.   Auto-Disable AP:  If enabled in AP+Station mode, the WiCAN will shut off its Access Point once it successfully connects to your home network, reducing power draw and wireless interference.   2. Network Config (Station Mode)  This tab is used to connect the WiCAN Pro to your existing local networks.    Setup Steps:   Click the   Scan  button next to the SSID field to search for nearby networks.  Select your home network (SSID) from the generated dropdown list.  Enter your Wi-Fi   Password .  Choose your   IP Assignment  method:    DHCP (Default):  Your router automatically assigns an IP address.   (Note: You can use the MAC Address listed at the top of this tab to set a DHCP reservation in your home router).   Static IP:  Manually define the IP Address, Subnet Mask, Gateway, and DNS Server in the specific fields that appear.   Additional Settings:    Backup Networks:  You can define up to 5 fallback SSIDs. If the primary network goes down or out of range, the WiCAN will attempt to connect to these in order. The Backup Networks can be any combinations of static and DHCP networks.   Home Network Prioritization:  Allows the WiCAN to aggressively scan for your primary \"Home\" SSID every 5 minutes and automatically switch back to it if the signal strength is good (better than -75 dBm).   3. BLE (Bluetooth Low Energy)  Configure the Bluetooth settings for connecting to smartphone apps (like Car Scanner or RealDash) without using Wi-Fi.    Passkey:  A 6-digit PIN required to pair your phone to the WiCAN. The first digit cannot be 0, and you must change the default   123456 .   BLE Status:  Enable or Disable the Bluetooth radio.   (Note: Enabling BLE disables the Wi-Fi Access Point to save power and prevent conflicts).   BLE Power:  Adjust the transmission strength of the Bluetooth radio (from -12 dBm up to 9 dBm). Lowering this saves power, but reduces range.   4. CAN (Controller Area Network)  This tab configures the low-level physical connection to your vehicle's OBD2 port.     CAN Bitrate:  The communication speed. Almost all modern vehicles (2008+) use   500K . Older vehicles may use 250K.   CAN Mode:  *   Normal:  The WiCAN can send requests and receive data.    Silent:  The WiCAN only listens to the bus. It cannot send requests, making it completely invisible to the car (useful for raw CAN sniffing).   Port Type & TCP\u002FUDP Port:  The networking protocol and port (default   3333 ) used by external apps to stream live data.   Protocol:  Defines how the WiCAN translates data for external apps.    AutoPID:  The native protocol for the WiCAN Automate engine. Select this if you are using Vehicle Profiles or sending data to MQTT\u002FWebhooks. If you have defined PIDs in the Automate page, if you must set this to AutoPID. Otherwise the automate functionality is disabled.   elm327:  Emulates a standard Bluetooth OBD2 dongle for legacy smartphone apps.   savvycan:  Optimizes the data stream for the SavvyCAN reverse-engineering software.   5. MQTT (Messaging Protocol)  Configure the connection to your MQTT Broker (like Mosquitto in Home Assistant).     MQTT:  Enable or Disable the MQTT client.   (Warning: Never connect to a public, unencrypted broker with vehicle data).   MQTT URL & Port:  The IP address\u002Fhostname and port (usually 1883 for TCP, or 8883 for TLS) of your broker.   Security:  Choose \"None\" for local networks, or \"TLS\" if connecting to a cloud broker. TLS requires you to upload a Certificate Set in the System tab.   MQTT User \u002F Pass:  The credentials required to log into your broker.   TX \u002F RX \u002F Status Topics:  Define the base topics where the WiCAN will publish its data (TX), listen for commands (RX), and post its online\u002Foffline LWT status (Status).   Include Timestamp:  Appends a Unix Epoch timestamp to the JSON payload, ensuring Home Assistant knows exactly when the data was recorded, even if there was a network delay.   MQTT CAN Filter:  An advanced table that allows you to capture specific raw CAN frames (by ID and bit length) and instantly forward their raw hex data directly to your MQTT broker without processing it through the Automate engine.",{"id":100,"path":101,"dir":102,"title":103,"description":104,"keywords":105,"body":110},"content:5.Web_Interface:5.Automate:1.Low-Voltage-Behavior.md","\u002Fweb_interface\u002Fautomate\u002Flow-voltage-behavior","automate","Low-Voltage Behavior","The Low-Voltage Behavior field is a battery protection feature designed to prevent the WiCAN from draining your vehicle's 12V battery while the car is parked or turned off.",[106,107,108,109],"1. Disable","2. Pause Automate on low voltage (Sleep Voltage)","3. Pause PID polling only (Sleep Voltage)","4. Pause PID polling only (Custom Voltage)","  Low-Voltage Behavior  The Low-Voltage Behavior field is a battery protection feature designed to prevent the WiCAN from draining your vehicle's 12V battery while the car is parked or turned off.   When the WiCAN actively polls the vehicle for data (by sending OBD2 PID requests), it forces the car's Engine Control Unit (ECU) to stay awake. An awake ECU consumes significantly more power than a sleeping one. This setting tells the Automate engine when to back off and let the car sleep based on the battery voltage.  Here is exactly what each of the four options does:  1. Disable    Behavior:  The Automate engine completely ignores battery voltage.   Use Case:  Only use this for bench testing or if the device is plugged into a dedicated power supply. If left in a real car, it will continuously poll the ECU and eventually drain the 12V battery.  2. Pause Automate on low voltage (Sleep Voltage)    Behavior:  When your battery drops below the Sleep Voltage (which you configure over on the   Power Saving  tab), the entire Automate engine shuts down. It stops polling PIDs, stops listening to CAN filters, and stops publishing to MQTT.   Use Case:  The most aggressive power-saving mode. Use this if you want the WiCAN to go completely dormant the moment the car shuts off.  3. Pause PID polling only (Sleep Voltage)    Behavior:  When the battery drops below the Sleep Voltage (from the   Power Saving  tab), the WiCAN stops actively asking the ECU for PID data, but it keeps its \"ears\" open. Passive CAN Filters and monitoring remain active, and it will still publish data to your destinations if the car broadcasts it.   Use Case:  Ideal if your car passively broadcasts data on the CAN bus while off (like charging status on an EV) and you want to capture it, but you don't want to actively ping the ECU and waste power.  4. Pause PID polling only (Custom Voltage)    Behavior:  This does the exact same thing as Option 3 (pauses active PIDs but keeps passive CAN filters running), but it decouples the trigger from the   Power Saving  tab. Selecting this reveals a new slider called   PID Polling Min Voltage .   Use Case:  Use this when you want fine-grained control. For example, you might want the WiCAN device itself to stay fully awake and connected to Wi-Fi down to 12.2V (Sleep Voltage), but you want it to stop actively bothering the car's ECU at 13.0V (Custom Voltage) the moment the alternator stops charging.",{"id":112,"path":113,"dir":102,"title":114,"description":115,"keywords":116,"body":119},"content:5.Web_Interface:5.Automate:1.Standard-PIDs.md","\u002Fweb_interface\u002Fautomate\u002Fstandard-pids","Standard PIDs","The Standard PIDs tab is the easiest way to start pulling data from your vehicle. These are universal parameters that the WiCAN Pro can request without any custom coding.",[117,118],"The Configuration Process","Performance Tip","  Standard OBD2 PIDs  The   Standard PIDs  tab is the easiest way to start pulling data from your vehicle. These are universal parameters that the WiCAN Pro can request without any custom coding.   The Configuration Process  Follow these steps to start monitoring standard vehicle data:  Step 1: Access the Menu   Connect to your WiCAN Web Interface.  Navigate to   Automate  >   Automate Parameters .  Click on the   Standard PIDs  tab.  Step 2: Scan and Add Available PIDs  Unlike custom PIDs, the WiCAN can \"ask\" your car which standard parameters it supports.    Select ECU Protocol:  Choose the protocol matching your vehicle (e.g., ISO 15765-4 CAN 11bit 500kbps).   Press Scan:  Click the   Scan  button to ping the vehicle's ECU.\n    !IMPORTANT \nMost vehicles require the   engine to be running  (or at least the ignition in the \"ON\" position) for the ECU to respond to a PID scan.   Select from List:  Once the scan is complete, click the   Available PIDs:  dropdown menu. This will now be populated with every standard PID your car officially supports.   Add to List:  Select a PID from the dropdown and click   Add . It will appear in the table below.   Repeat:  Continue selecting and adding all the parameters you wish to monitor.  Step 3: Enable and Set Frequency  Once your PIDs are in the table:   Toggle the   Enable  switch to   ON  for the PIDs you want active.  In the   Interval (ms)  field, enter how often the WiCAN should poll this data.\n    High Speed (100ms):  Best for RPM or Throttle.   Medium Speed (1000ms):  Good for Vehicle Speed.  Step 4: Routing and Logging    Destination:  Choose which   User Destination  (Server) should receive this data.   Log to SD:  Check this box if you want this specific PID recorded to the local microSD card.  Step 5: Save Configuration   Scroll to the bottom and click   Save Configuration .  Step 6: Organizing with Vehicle Groups  If you are using   Vehicle Groups  to manage different cars:   Navigate to the   Vehicle Groups  tab.  Select or create your group.  Click the   \"Copy Standard PIDs\"  button to instantly import your enabled list into that group.   Performance Tip  Only add the PIDs you actually intend to use. While the scan might find 40+ available PIDs, polling all of them at high speeds can saturate the CAN bus and slow down your critical data.     Parameter  Recommended Interval     Engine RPM  100 ms    Coolant Temp  10,000 ms    Fuel Level  30,000 ms",{"id":121,"path":122,"dir":102,"title":123,"description":124,"keywords":125,"body":131},"content:5.Web_Interface:5.Automate:2.WebHook.md","\u002Fweb_interface\u002Fautomate\u002Fwebhook","WebHook (Home Assistant)","The WebHook engine allows the WiCAN Pro to push vehicle data to an external server via HTTP\u002FHTTPS POST requests. This is the primary method used for the Home Assistant integration, but it can also be configured to send data to any custom endpoint or cloud service.",[126,127,128,129,130],"1. WebHook Enable","2. Server Configuration","3. WebHook Data Mode","4. Payload Structure","5. WebHook Stats & Troubleshooting","  WebHook Configuration  The WebHook engine allows the WiCAN Pro to push vehicle data to an external server via HTTP\u002FHTTPS POST requests. This is the primary method used for the   Home Assistant  integration, but it can also be configured to send data to any custom endpoint or cloud service.   1. WebHook Enable  This setting determines how the WiCAN manages its destination URLs.    Enable:  Automatically managed mode. If you are using the Home Assistant integration, the WiCAN will receive its configuration directly from Home Assistant. The URL and Interval fields will be locked (grayed out).   Enable User Settings:  Manual mode. This unlocks all fields, allowing you to manually input Primary\u002FFailover URLs and custom intervals.   Disable:  Turns off the WebHook engine entirely to save bandwidth and processing power.  2. Server Configuration    Primary URL:  The main HTTP or HTTPS address where data will be sent (e.g.,   http:\u002F\u002F192.168.1.50:8123\u002Fapi\u002Fwebhook\u002Fabc... ).   Failover URL:  If the Primary URL returns a 404 or a timeout, the WiCAN will immediately attempt to send the same data packet to this backup address.   WebHook Interval (s):  Defines how frequently the WiCAN sends a data packet.\n    Note:  Setting this too low (e.g., 1s) can put a high load on your server and your Wi-Fi network.  3. WebHook Data Mode  This is a critical setting for managing data usage and server processing.    Full Data:  Every time the interval triggers, the WiCAN sends the current value of   every active PID  in the Automate engine.   Changed Values Only:  The WiCAN keeps a local \"last sent\" cache. It will only include a PID in the WebHook payload if its value has changed since the last transmission. This significantly reduces payload size.  4. Payload Structure  The WiCAN sends data in a standard JSON format. A typical payload looks like this:     {\n     \"device_id\"  :   \"WiCAN_Pro_A1B2\"  ,\n     \"battery\"  :   13.4  ,\n     \"uptime\"  :   3600  ,\n     \"data\"  : {\n       \"speed\"  :   65  ,\n       \"rpm\"  :   2450  ,\n       \"soc\"  :   78.5  ,\n       \"coolant_temp\"  :   92\n     }\n   }\n  5. WebHook Stats & Troubleshooting  The Web Interface provides real-time diagnostics for your connection:   StatDescriptionOKTotal number of successfully acknowledged (HTTP 200) posts.  FailNumber of failed attempts (Timeouts, 404s, 500s).  Last PostA timestamp of the last attempted transmission.  DetailsClick this to see the specific HTTP error code (e.g., 401 Unauthorized or -1 for No Connection).  Using HTTPS: If your webhook URL uses https:\u002F\u002F, ensure you have uploaded the correct root certificates in the System tab, or the WiCAN will reject the connection for security reasons.  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":133,"path":134,"dir":102,"title":135,"description":136,"keywords":137,"body":143},"content:5.Web_Interface:5.Automate:3.User-Destinations.md","\u002Fweb_interface\u002Fautomate\u002Fuser-destinations","User Destinations","The User Destinations section provides the WiCAN Pro with the ability to route specific telemetry data to multiple endpoints simultaneously. This is useful for users who want to send battery data to one service (like ABRP) while sending performance data to a private logging server or an MQTT broker. For the MQTT service, a better approach is to use the MQTT Group setting in each PID parameter, that way you only receive valid PID data, not stale data. Or, another approach is to specify the MQTT dest in every PID parameter. See Vehicle Group section for more info.",[138,139,140,141,142],"1. Destination Types","2. Timing and Logic","3. Security and Authentication","4. Mapping Data to Destinations","5. Status Monitoring","  User Destinations  The   User Destinations  section provides the WiCAN Pro with the ability to route specific telemetry data to multiple endpoints simultaneously. This is useful for users who want to send battery data to one service (like ABRP) while sending performance data to a private logging server or an MQTT broker. For the MQTT service, a better approach is to use the MQTT Group setting in each PID parameter, that way you only receive valid PID data, not stale data. Or, another approach is to specify the MQTT dest in every PID parameter. See Vehicle Group section for more info.  The WiCAN Pro supports up to   6 unique destinations .   1. Destination Types  Each destination slot can be configured as one of the following:    HTTP \u002F HTTPS:  A standard POST request. Use this for custom web servers or generic cloud APIs.   ABRP (A Better Routeplanner):  A specialized preset. When selected, the WiCAN automatically formats the JSON payload to match the ABRP Telemetry API requirements. You simply provide your User Token.   MQTT_Topic:  Instead of using the global MQTT settings, this allows you to publish a specific subset of data to a unique topic on your broker.  2. Timing and Logic  Unlike the global WebHook, which is purely interval-based, User Destinations offer more granular control over   when  data is sent:    Cycle (ms):  The transmission frequency in milliseconds.\n    Value > 0:  Data is sent on a fixed timer (e.g.,   5000  for every 5 seconds).   Value = 0 (Event Driven):  Data is sent   instantly  the moment a PID value changes. This is ideal for time-sensitive data like \"Brake Pedal Status\" or \"Gear Position.\"   Batching:  If multiple PIDs are assigned to the same destination, the WiCAN will bundle them into a single packet to conserve bandwidth.  3. Security and Authentication  For secure integrations, the WiCAN Pro supports several authentication methods per destination:    Auth \u002F API Token:  *   Bearer Token:  Standard for modern web APIs.\n    API Key (Header):  Injects the key into the HTTP Header.   API Key (Query):  Appends the key to the URL string.   Basic Auth:  Username and Password encoding.   Cert Set:  If using an HTTPS destination, you must select the corresponding Certificate Set (1-4) that you uploaded in the   System  tab. This ensures the WiCAN can verify the identity of the server before sending data.  4. Mapping Data to Destinations  Creating a destination is only the first half of the process. To actually send data there:   Go to your   Custom PIDs  or   Standard PIDs  tabs.  Edit a PID.  Locate the   Destination Dropdown .  Select the Slot Number (1-6) you configured in this section.  5. Status Monitoring  Each destination includes a small status indicator:    Green:  Last transmission was successful.   Red:  Last transmission failed (Check your URL or Auth Token).   Gray:  Destination is disabled or has not yet attempted to send data.",{"id":145,"path":146,"dir":102,"title":147,"description":148,"keywords":149,"body":156},"content:5.Web_Interface:5.Automate:4.Active-Vehicle-Profile.md","\u002Fweb_interface\u002Fautomate\u002Factive-vehicle-profile","Active Vehicle Profile","The Active Vehicle Profile section manages the high-level configuration for the Automate engine. A \"Profile\" is essentially a complete container that includes all defined PIDs (Standard and Custom), Vehicle Groups, CAN Filters, and optionally bundled Home Assistant integrations specific to a particular car model.",[150,151,152,153,154,155],"1. Profile Selection & Cloud Updates","2. Profile Management","3. Home Assistant YAML Integration","4. The Smart Merger Logic","5. Automatic Loading","6. Community Contributions","  Active Vehicle Profile  The Active Vehicle Profile section manages the high-level configuration for the Automate engine. A \"Profile\" is essentially a complete container that includes all defined PIDs (Standard and Custom), Vehicle Groups, CAN Filters, and optionally bundled Home Assistant integrations specific to a particular car model.   1. Profile Selection & Cloud Updates  The WiCAN Web UI now supports dual-ecosystem cloud fetching, allowing you to seamlessly switch between the stock firmware database and the new grouped community database.    Vehicle Model Dropdown:  This list displays the vehicle profiles available to load into your workspace. Selecting a model will fetch its data and render the PIDs and Groups on your screen.   Get Stock DB:  Connects to the official   meatpiHQ GitHub repository  and downloads the legacy monolithic database. This contains the original, factory-verified flat PID profiles.   Get Vehicle Group DB:  Connects to the new community-driven   wambs repository . This database uses a lightning-fast indexed menu. When clicked, it instantly updates your dropdown list without freezing the browser. The actual vehicle data is \"lazy-loaded\"—meaning the WiCAN only downloads the specific car's data from GitHub at the exact moment you select it from the dropdown.   2. Profile Management    Save Profile:  Exports your current configuration (including custom PIDs and Vehicle Groups) as a unified   .json  file to your computer.\n    YAML Bundling:  During the save process, the UI will prompt you and ask if you want to bundle a Home Assistant YAML file with your profile. This allows you to share both your WiCAN polling logic and your Home Assistant entities associate with the PIDs in a single file.   Choose File (Upload):  Allows you to manually upload a   .json  profile shared by the community or one you previously backed up to your computer.  3. Home Assistant YAML Integration  The new WiCAN JSON profile format acts as a \"briefcase,\" safely transporting extra metadata without interfering with the WiCAN's internal C-firmware.    Auto-Extraction:  When you fetch the   Vehicle Group DB  and select a community profile from the dropdown, the Web UI automatically checks if the creator bundled a Home Assistant YAML file inside it.  If a YAML configuration is detected, the browser will automatically extract the code and trigger a background download of a ready-to-use   ha_sensors_[vehicle_name].yaml  file straight to your computer.  4. The Smart Merger Logic  When you attempt to load or upload a new profile while you already have data in your workspace, the WiCAN Pro will prompt you with a   Conflict Resolver . This prevents accidental data loss:    Replace Entirely:  Wipes all current PIDs, Groups, and Filters and replaces them with the new file. Use this when switching to a completely different vehicle.   Merge Into Current:  Keeps your existing custom PIDs and Groups but adds any   new  ones found in the profile. If a PID with the same name exists, the version in the new file typically takes precedence.  5. Automatic Loading  The WiCAN Pro remembers the last active profile. Upon power-up, it will automatically load the selected profile and begin the Automate polling sequence based on the   Low-Voltage Behavior  settings.   6. Community Contributions  The WiCAN ecosystem thrives on user-shared profiles. Because the new   wambs  repository is fully automated via GitHub Actions, any new profiles or updates pushed to the community repository are instantly indexed and made available to all users via the   Get Vehicle Group DB  button. If you have successfully grouped PIDs or built a great Home Assistant dashboard, save your bundled profile and submit it to the repository to help the community!",{"id":158,"path":159,"dir":102,"title":160,"description":161,"keywords":162,"body":165},"content:5.Web_Interface:5.Automate:5.Vehicle-Specific.md","\u002Fweb_interface\u002Fautomate\u002Fvehicle-specific","Vehicle Specific PIDs","The Vehicle Specific tab provides access to a built-in library of manufacturer-specific diagnostic parameters. These are PIDs that go beyond the standard OBD2 set, allowing you to monitor data points unique to your specific make and model (e.g., Tesla Battery Health, Nissan Leaf State of Charge, or BMW Transmission Temp).",[117,163,164],"Integration with Vehicle Groups","Why use Vehicle Specific PIDs?","  Vehicle Specific PIDs  The   Vehicle Specific  tab provides access to a built-in library of manufacturer-specific diagnostic parameters. These are PIDs that go beyond the standard OBD2 set, allowing you to monitor data points unique to your specific make and model (e.g., Tesla Battery Health, Nissan Leaf State of Charge, or BMW Transmission Temp).   The Configuration Process  Step 1: Access the Menu   Connect to the WiCAN Web Interface.  Navigate to   Automate  >   Automate Parameters .  Select the   Vehicle Specific  tab.  Step 2: Selecting your Vehicle Library  Instead of scanning, you browse the internal WiCAN database:    Manufacturer:  Select your car's brand from the dropdown menu.   Model\u002FSystem:  Select the specific model or subsystem (e.g., \"Tesla Model 3 - Battery\" or \"VW ID.4 - Thermal Management\").   Browse PIDs:  A list of specialized parameters will appear in the   Available PIDs  dropdown.  Step 3: Adding Parameters   Choose a PID from the dropdown list.  Click the   Add  button.  The PID will appear in the configuration table below, pre-loaded with the correct headers and math formulas provided by the library.  Repeat for all manufacturer-specific data points you want to track.  Step 4: Fine-Tuning the Settings  For every added PID, you can adjust the following:    Enable:  Toggle the switch to start\u002Fstop polling.   Interval (ms):  Set the refresh rate. Manufacturer-specific ECUs can sometimes be slower than the main Engine ECU; an interval of   500ms to 2000ms  is usually recommended for non-critical data.   Destination:  Route the data to a specific   User Destination .   Log to SD:  Check this to save the specific data to your log files.  Step 5: Save and Apply   Scroll to the bottom and click   Save Configuration .  The WiCAN Pro will begin requesting these specific memory addresses from the vehicle.   Integration with Vehicle Groups  Just like with Standard PIDs, you can easily move these settings into an organized group:   Go to the   Vehicle Groups  tab.  Select your target group.  Use the   \"Copy Vehicle Specific PIDs\"  button.  This pulls everything you just configured into that group, allowing for easy profile switching.   Why use Vehicle Specific PIDs?  Standard OBD2 PIDs are limited to about 40–100 items. Vehicle Specific PIDs unlock hundreds of additional data points:     Feature  Standard PIDs  Vehicle Specific PIDs     Compatibility  Universal (ICE vehicles)  Make\u002FModel Specific    Data Depth  Basic (RPM, Speed, Fuel)  Advanced (Battery Cell Volts, Clutch Pressure)    Complexity  Simple Service 01  Often uses UDS (Unified Diagnostic Services)    Math  Standardized  Proprietary (handled automatically by WiCAN)    !TIP \nIf your vehicle is not listed in the library, don't worry! You can still add any parameter manually using the   User Custom PIDs  tab if you have the hex codes and formulas.",{"id":167,"path":168,"dir":102,"title":169,"description":170,"keywords":171,"body":177},"content:5.Web_Interface:5.Automate:6.Vehicle-Groups.md","\u002Fweb_interface\u002Fautomate\u002Fvehicle-groups","Vehicle Groups","The Vehicle Groups tab is the core of the WiCAN Pro Automate engine. Unlike the flat lists in the Standard or Custom tabs, Vehicle Groups allow you to build intelligent, hierarchical polling profiles.",[172,173,174,175,176],"1. Group-Level Configuration","4. Advanced Routing: The MQTT_Grp Destination","5. UI Tools: Drag-and-Drop & Testing","6. How mqtt_on_demand Works","7. Why use \"Check Custom PID\"","  Vehicle Groups (Advanced Automate)  The   Vehicle Groups  tab is the core of the WiCAN Pro Automate engine. Unlike the flat lists in the Standard or Custom tabs, Vehicle Groups allow you to build intelligent, hierarchical polling profiles.  By grouping parameters together, you can apply   conditional logic  (e.g., only poll when the engine is running), assign unique   Group MQTT topics , and prioritize CAN bus bandwidth using independent polling intervals.   1. Group-Level Configuration  When you click   \"+ Create New Vehicle Group\" , a new group container is generated. You can have multiple groups running simultaneously, each with its own rules.   Group Header Settings  At the top of each group, you define how and when the group operates:     Setting  Description     Group Name  A descriptive label for the group (e.g.,   Battery_Cells  or   High_Speed_Dash ).    Period (ms)  The baseline polling interval for every PID inside this group.    Condition  The logic determining   when  this group is allowed to poll the CAN bus.    Enabled  A master toggle to instantly turn the entire group on or off.    Initialization String  (Optional) Commands sent to the OBD chip   before  this group begins polling (e.g.,   ATTP6; ATZ; ).  Conditional Execution Options  The   Condition  dropdown is one of the most powerful features. It prevents unnecessary CAN traffic:    always:  The group polls continuously as long as the device is awake. You should only use this when the module you wish to query is always active when the CAN bus is active. Using this when the module is inactive, will cause massive timeouts, affecting PIDs in other groups.   voltage:  The group only polls when the vehicle battery voltage is above the PID Polling Min Voltage. You can set the threhold using the PID Polling Min Voltage: range field.     engine_running:  The group only polls when the WiCAN detects the engine is actively running (RPM > 300). In order for this to work you must have a PID called RPM. When the PID is returned, it gets saved into a json object. This oject will get used for the calculation. If the vehicle is turned off, the RPM should be report back to 0 before the PCM modules turns off.   mqtt_on_demand:  The group remains dormant and only executes a polling sweep when explicitly commanded via an incoming MQTT message.   (See Section 6 below for details).   Check Custom PID:  Standard conditions like   Engine Running  rely on standard OBD2 RPM requests. If you drive an Electric Vehicle (EV), or if you only want to poll data when your vehicle is in a specific state (like actively charging or in Drive), standard conditions won't work.   (See Section 7 below for details).   4. Advanced Routing: The   MQTT_Grp  Destination  While you can route any individual extraction field to a specific Topic\u002FDest, Vehicle Groups introduce a unified, highly-efficient routing method:    Set the Group MQTT Topic:  In the Group Header, define a master topic (e.g.,   vehicle\u002Ftesla\u002Fbattery ).   Set Field Destination:  Inside your PID's Extraction Field, change the Destination Type dropdown to    MQTT_Grp .   The Result:  All fields within that group set to   MQTT_Grp  will be synchronized, aggregated, and published as   one bulk JSON payload  to that single master topic. This drastically reduces MQTT broker traffic. It also strictly respects the \"On Change\" parameter and automatically clears stale\u002Fghost parameters when the vehicle turns off or a query times out, keeping your dashboard perfectly accurate.   5. UI Tools: Drag-and-Drop & Testing  Drag-and-Drop Reordering  The Automate engine processes groups and PIDs in top-down order.    Reorder Groups:  Click and hold the   ☰  icon in the Group Header to drag the entire group up or down the list.\n    Move PIDs:  Click and hold the   ☰  icon on a PID Card to drag it up or down, or even drag it out of its current group and drop it into a different group. This is incredibly useful if you want to quickly change a PID's polling frequency—just drag it from a   1000ms  group and drop it into a   5000ms  group.    !WARNING \nBe careful when moving PIDs between groups! If a group relies on a specific   Initialization String  to talk to a specific ECU\u002Fmodule address, dropping a PID meant for a different module into that group will cause the request to fail.  The Live Testing Console  Before saving your configuration, you can test a group live against your vehicle:   Click the green   Play (►)  button in the Group Header.  A terminal window will appear at the bottom of the group.  The WiCAN will execute the Initialization String, poll every enabled PID in the group, and display the Raw Hex response alongside your calculated math results.    6. How   mqtt_on_demand  Works  If you set a group's condition to    mqtt_on_demand , the WiCAN Pro will load the group into memory but will   never  poll it automatically. It sits idle, saving maximum CAN bandwidth, until you explicitly tell it to run via MQTT.  This is perfect for heavy, multi-frame data requests that you only need occasionally, such as:   Querying the vehicle's VIN.  Pulling a massive list of battery cell voltages only when a charging session begins.  Requesting full diagnostic trouble codes (DTCs) via a button on your dashboard.  Triggering via Home Assistant  To trigger an on-demand group, your home automation system must publish a specific JSON payload to the WiCAN's RX command topic.  Understanding the Configuration     group_name :  This must exactly match the name of the group as defined in your WiCAN Vehicle Groups tab.    timeout :  Defined in seconds. In the example above, the WiCAN will poll the group for 120 seconds and then stop. If you set   \"timeout\": 0 , the group will poll continuously until you send the   payload_off  command.    command_topic  \u002F   state_topic :  You must replace   9c139e8f55e5  with your WiCAN's specific device address...  Here is an example of a Home Assistant Switch that turns a group named \"PCM STD\" on for 120 seconds, and then automatically turns it off.         -   name  :   \"Fusion Toggle STD PCM Group\"\n         unique_id  :   \"fusion_toggle_std_pcm_group\"\n         default_entity_id  :   \"switch.fusion_toggle_std_pcm_group\"          \n         state_topic  :   \"wican\u002F9c139eXXXXXX\u002Fcmd\"\n         command_topic  :   \"wican\u002F9c139eXXXXXX\u002Fcmd\"\n         payload_on  :   '{\"command\": \"set_group\", \"group_name\": \"PCM STD\", \"active\": true, \"timeout\": 120}'\n         payload_off  :   '{\"command\": \"set_group\", \"group_name\": \"PCM STD\", \"active\": false}'\n         state_on  :   \"ON\"\n         state_off  :   \"OFF\"\n         optimistic  :   true\n   7. Why use \"Check Custom PID\"  The WiCAN Pro's Vehicle Groups feature allows you to set conditions that dictate when a group of PIDs should be actively polled (e.g.,   Always ,   Engine Running , or   Voltage ).  However, standard conditions like   Engine Running  rely on standard OBD2 RPM requests. If you drive an Electric Vehicle (EV), or if you only want to poll data when your vehicle is in a specific state (like actively charging or in Drive), standard conditions won't work. Also, using MQTT on demand to turn off\u002Fon groups based on entities, can be tricky, as the entity data could frozen\u002Fstale.  The   Check Custom PID  (Gatekeeper) condition solves this by allowing you to define a completely custom prerequisite check directly on the hardware level.    How It Works  When a group is set to   Check Custom PID , the WiCAN Pro will first send a single, specific PID request to the vehicle.   It evaluates the response using your custom math expression.  If the result meets your criteria (evaluates to true or > 0), the WiCAN Pro considers the condition \"met\" and proceeds to poll the rest of the PIDs in that group.  If the condition fails, the WiCAN Pro skips the group entirely, keeping your CAN bus quiet and saving battery.   Note: The Custom PID logic acts as a robust \"Gatekeeper.\" It runs in a protected memory space and features strict internal queue flushing, meaning it can safely evaluate massive, multi-frame payloads without leaking memory or succumbing to cellular network jitter.   Typical Use Cases    EV \"Engine Running\" Detection:  EVs do not report standard RPM. You can set the custom condition to check the High Voltage Contactor state or the BMS \"Ready\" flag to determine if the car is on.   Charging-Only Polling:  You can create a group of battery-cooling and charging-speed PIDs that   only  poll when the vehicle reports that the charge port is connected.   Gear-Specific Polling:  Only poll aggressive transmission diagnostics when the vehicle is physically shifted into 'Drive'.   How to Configure   Access the WiCAN Pro Web UI and navigate to   Automate > Vehicle Groups .  Create a new group or edit an existing one.  In the Group Header, find the   Condition  dropdown and select   Check Custom PID .  Once selected, new configuration fields will appear specifically for the condition check:\n    Condition Init:  The header\u002Finitialization string required for your target ECU (e.g.,   ATSH7E4 ).   Condition PID:  The hex command to request the state (e.g.,   220101 ).   Condition Expression:  The math used to extract the value (e.g.,   B4 ).   Target Value \u002F Operator:  (Define what constitutes a \"True\" state, such as   > 0  or   == 1 ).  Set your   Period (ms) . This period dictates how often the WiCAN Pro checks this custom condition.  Add your standard PID cards below it as usual.    !TIP  Keep It Simple:  The custom condition PID is polled frequently to check the state. Ensure the PID you choose for the condition is lightweight and responds quickly so it doesn't cause unnecessary bus wakeups.  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":179,"path":180,"dir":102,"title":181,"description":182,"keywords":183,"body":187},"content:5.Web_Interface:5.Automate:7.User-Custom.md","\u002Fweb_interface\u002Fautomate\u002Fuser-custom","User Custom PIDs & Filters","The User Custom tab is the ultimate sandbox for advanced users. If a parameter isn't available in the Standard or Vehicle Specific libraries, or if you've reverse-engineered a proprietary CAN ID on your vehicle, this is where you input it.",[184,185,186],"1. Custom PIDs (Active Polling)","2. Custom Filters (Passive Listening)","3. Integrating with Vehicle Groups","  User Custom PIDs & Filters  The   User Custom  tab is the ultimate sandbox for advanced users. If a parameter isn't available in the Standard or Vehicle Specific libraries, or if you've reverse-engineered a proprietary CAN ID on your vehicle, this is where you input it.  This tab is divided into two distinct tools:   Custom PIDs  (Active Polling) and   Custom Filters  (Passive Listening).   1. Custom PIDs (Active Polling)  Custom PIDs are used when the WiCAN Pro must   ask  the vehicle's ECU for a piece of data (Request\u002FResponse).  How to configure a Custom PID:   Navigate to   Automate  >   Automate Parameters  >   User Custom .  Click   New PID .  Fill out the configuration fields:\n    Name:  A unique identifier for your data (e.g.,   Inverter Temp ).   Init:  (Optional) A specific initialization string sent before the PID request. Often used to set the CAN header (e.g.,   ATSH7E4 ).   PID:  The hexadecimal request payload (e.g.,   220105 ).   Expression:  The math formula to decode the raw response.   (See the   Math & Expressions  guide).   Unit \u002F Class \u002F Min \u002F Max:  Metadata passed to Home Assistant for proper dashboard formatting (e.g., Unit:   °C , Class:   temperature ).   Period (ms):  How often to send this request.   Destination Type \u002F Send_to:  Where to route the data (e.g.,   MQTT_Topic ).    !TIP \nJust like Standard PIDs, you can click the   Test  button on a Custom PID card to fire the request at your vehicle immediately and verify your expression works before saving.   2. Custom Filters (Passive Listening)  Unlike PIDs that ask the ECU for data,   Custom Filters  passively listen to the background chatter on the CAN bus. If your car constantly broadcasts steering wheel angle on Frame ID   0x025  without being asked, you use a Filter to catch it.  How to configure a Custom Filter:   Scroll down to the   Custom Filters  section.  Click   New Filter .  Fill out the configuration fields:\n    Frame ID:  The specific CAN bus address you want to listen to (e.g.,   0x25  or   37  in decimal).   Name:  What this data represents.   Expression:  The math formula to decode the payload.   Period (ms):  Since passive data might broadcast 100 times a second, the Period acts as a   throttle . A period of   1000ms  means the WiCAN will only process and forward this frame once per second, ignoring the rest to save Wi-Fi\u002FMQTT bandwidth.    !IMPORTANT \nCustom Filters require the WiCAN Pro's CAN Mode to be set correctly. They work perfectly in   Normal Mode  or   Silent Mode  (Listen Only).   3. Integrating with Vehicle Groups  Just like Standard and Vehicle Specific PIDs, you do not have to leave your Custom PIDs and Filters running in a flat list.   Once you have built your Custom PIDs and Filters, save your configuration.  Navigate to the   Vehicle Groups  tab.  Click the   \"Copy Custom PIDs\"  button to automatically import your custom requests and filters into an organized profile.",{"id":189,"path":190,"dir":102,"title":191,"description":192,"keywords":193,"body":201},"content:5.Web_Interface:5.Automate:12.Expressions.md","\u002Fweb_interface\u002Fautomate\u002Fexpressions","Math & Expressions","When the WiCAN Pro requests a PID from your vehicle, the ECU responds with a payload of raw hexadecimal bytes. To convert this raw data into useful information (like RPM, Voltage, or Temperature), you must provide a math Expression.",[194,195,196,197,198,199,200],"1. Accessing Data Bytes","2. Multi-Byte Ranges (Big-Endian)","3. Device Variables","4. Supported Operators","5. Real-World Formula Examples","6. Special Expression Types","7. Pro-Tip: Bitfields and Home Assistant","  Math & Expressions  When the WiCAN Pro requests a PID from your vehicle, the ECU responds with a payload of raw hexadecimal bytes. To convert this raw data into useful information (like RPM, Voltage, or Temperature), you must provide a math   Expression .  The WiCAN Pro features a highly optimized, onboard C-based expression parser. It evaluates your formulas in real-time before sending the data to your Dashboard or MQTT broker.   1. Accessing Data Bytes  The vehicle's response is treated as an array of bytes, starting at index   0 . You extract data by referencing these bytes.  Unsigned Bytes (  B )  Use the   B  prefix to read a byte as an unsigned integer (0 to 255).    B0 : Reads the 1st byte of the payload.   B3 : Reads the 4th byte of the payload.  Signed Bytes (  S )  Use the   S  prefix to read a byte as a signed 8-bit integer (-128 to +127). This is useful for temperatures or battery current that can flow in two directions.    S0 : Reads the 1st byte, where   0xFF  equals   -1 .   S2 : Reads the 3rd byte as a signed number.  Single Bit Extraction (  : )  You can isolate a specific bit from a byte (resulting in a   0  or   1 ). Bits are zero-indexed from right to left (0 is the Least Significant Bit, 7 is the Most Significant Bit).    B0:0 : Gets the 1st bit of the 1st byte.   B4:7 : Gets the 8th bit of the 5th byte.\n  (This is extremely useful for reading ON\u002FOFF toggles like \"Brake Pedal Pressed\" or \"Clutch Engaged\").   2. Multi-Byte Ranges (Big-Endian)  Many vehicle parameters are larger than 8 bits. Instead of manually shifting and adding bytes together, the WiCAN parser supports bracketed range syntax.    Unsigned Range   [B\u003Cstart>:B\u003Cend>] : Combines the bytes into a 16-bit, 32-bit, or 64-bit unsigned integer.\n   Example:   [B0:B1]  combines byte 0 and byte 1. (Equivalent to   B0 * 256 + B1 ).   Signed Range   [S\u003Cstart>:S\u003Cend>] : Combines the bytes and evaluates the final result as a signed integer.\n   Example:   [S2:S3]  combines bytes 2 and 3, treating the MSB as a sign bit.    !NOTE \nThe WiCAN parser uses   Big-Endian  ordering for ranges. The first byte in the brackets is treated as the Most Significant Byte (MSB).   3. Device Variables  The parser also has access to internal WiCAN Pro hardware variables:     V : Represents the current supply voltage measured at the WiCAN's OBD2 pins (e.g.,   13.5 ).\n   Example formula:   V + 0.5   4. Supported Operators  You can build complex formulas using standard mathematical and bitwise operators. The parser respects standard order of operations (PEMDAS), and you can use parentheses   ( )  to force precedence.     Type  Operator  Description     Arithmetic   +    -    *    \u002F  Add, Subtract, Multiply, Divide    Bitwise   &  Bitwise AND    Bitwise   |  Bitwise OR    Bitwise   ^  Bitwise XOR    Bit Shift   \u003C\u003C    >>  Left Shift, Right Shift   5. Real-World Formula Examples  Here are common ways to use the parser based on standard SAE J1979 OBD2 formulas:   1. Engine RPM \nThe ECU reports RPM across two bytes. The formula is   (A * 256 + B) \u002F 4 .   Using standard math:   (B0 * 256 + B1) \u002F 4  Using ranges (Better):   [B0:B1] \u002F 4   2. Coolant Temperature \nReported as a single byte offset by -40 degrees Celsius.   Formula:   B0 - 40   3. Bitwise Flags \nIf you want to mask out the lower 4 bits of a byte:   Formula:   B2 & 15   4. Complex Multi-Byte Math   Formula:   ([B3:B6] >> 8) * 0.1   6. Special Expression Types  For advanced users or specific data formats, you can bypass the math parser entirely by entering one of these exact words into the Expression field:   RAW  If you type exactly   RAW  in the expression field, the WiCAN skips mathematical evaluation. Instead, it captures the entire multi-frame payload and outputs it as one continuous, unbroken Hexadecimal string.    Why use this?  This is vital for massive, repeating data sets—such as an EV reporting 96 different battery cell voltages in a single UDS response. You can send this massive   RAW  hex string to Home Assistant and use HA's powerful templating engine to slice it apart, rather than creating 96 individual PID cards on the WiCAN.    !NOTE \nIf you use RAW, do not use a 7 digit PID which has a trailing \"1\". A PID with a trailing \"1\", tells the CAN bus that there will only be one frame response.   DTC_RAW  If you type exactly   DTC_RAW , the WiCAN engages a specialized internal parser designed exclusively for reading Diagnostic Trouble Codes (e.g.,   P0104 ). It properly formats the ECU's error memory response so it can be parsed as active vehicle faults.  7. Pro-Tip: Bitfields and Home Assistant  When dealing with a vehicle PID that contains multiple status flags packed into a single byte or two (a \"bitfield\"), you   can  use the WiCAN's single-bit extraction syntax (e.g.,   B4:0 ,   B4:1 ) to create separate fields.  However,   it is much more efficient to send the entire byte or word to Home Assistant  and let Home Assistant decode the individual bits.  Why do this?    Saves WiCAN Resources:  The device evaluates and transmits one expression (e.g.,   B4 ) instead of processing up to eight separate expressions.   Reduces MQTT Traffic:  Instead of sending a massive JSON payload with multiple individual   true \u002F  false  states, you send a single, compact integer.  How to configure it:   On the WiCAN, create a single extraction field for your PID.  Set the Expression to the full byte (e.g.,   B4 ) or word (e.g.,   [B4:B5] ).  Route this value to your MQTT broker.  Home Assistant YAML Example  In Home Assistant, use the   bitwise_and  filter in your   value_template  to unpack the states from that single integer.  Here is an example extracting the Parking Lights (Bit 0) and Low Beams (Bit 1) from a single raw byte sent by the WiCAN:         # --- BIT 0: Parking Lights (Bitwise Value: 1) ---\n       -   name  :   \"Fusion Parking Lights\"\n         default_entity_id  :   \"binary_sensor.fusion_lights_parking\"\n         state_topic  :   \"homeassistant\u002Fwican\u002Ffusion\u002Flights_raw\"\n         value_template  :   >\n           {% set raw_val = value_json[\"lights raw byte\"] if value_json is defined else value %}\n           {{ 'ON' if (raw_val | int(0) | bitwise_and(1)) > 0 else 'OFF' }}\n         unique_id  :   \"fusion_lights_parking\"\n         device_class  :   light\n         icon  :   mdi:car-parking-lights\n         device  :   *  fusion_device\n   \n       # --- BIT 1: Low Beams (Bitwise Value: 2) ---\n       -   name  :   \"Fusion Low Beams\"\n         default_entity_id  :   \"binary_sensor.fusion_lights_low_beam\"\n         state_topic  :   \"homeassistant\u002Fwican\u002Ffusion\u002Flights_raw\"\n         value_template  :   >\n           {% set raw_val = value_json[\"lights raw byte\"] if value_json is defined else value %}\n           {{ 'ON' if (raw_val | int(0) | bitwise_and(2)) > 0 else 'OFF' }}\n         unique_id  :   \"fusion_lights_low_beam\"\n         device_class  :   light\n         icon  :   mdi:car-light-dimmed\n         device  :   *  fusion_device\n  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":203,"path":204,"dir":59,"title":205,"description":206,"keywords":207,"body":211},"content:5.Web_Interface:6.power-saving.md","\u002Fweb_interface\u002Fpower-saving","Power Saving","Since the WiCAN Pro remains plugged into your vehicle's OBD2 port 24\u002F7, managing power consumption is critical. The Power Saving tab allows you to configure exactly when the device should power down to protect your car's battery, and when it should wake up to report data.",[208,209,210],"1. Core Sleep Configuration","2. Electric Vehicles (EVs) & \"Probe and Sleep\"","3. Background Polling","  Power Saving & Sleep Mode  Since the WiCAN Pro remains plugged into your vehicle's OBD2 port 24\u002F7, managing power consumption is critical. The   Power Saving  tab allows you to configure exactly when the device should power down to protect your car's battery, and when it should wake up to report data.     1. Core Sleep Configuration  The WiCAN Pro can determine if your vehicle is running or parked by monitoring the 12V system voltage, or by querying specific vehicle data (PIDs). When using voltage, it looks for the high voltage of a spinning alternator (usually 13.5V+) or the lower resting battery voltage when off (usually ~12.6V).     Setting  Description     Keep Awake Based On  Master toggle to define the power-saving rule (  Disable ,   Voltage , or   Specified PID ).    Keep Awake If   (If Specified PID is selected)  The target PID name, operator (  > ,   \u003C ,   == ), and value that must be met to keep the device awake.    Sleep\u002FWake Voltage Threshold   (If Voltage is selected)  The threshold that triggers the sleep timer (Range: 12.0V - 15.0V).    Sleep After  How long the condition must fail before the device actually powers down (Range: 1 - 30 mins).  How the Sleep Logic Actually Works  Behind the scenes, the firmware operates on a strict state machine to prevent \"bouncing\" (falling asleep and waking up rapidly if conditions fluctuate):    Condition Fails:  When the battery voltage drops below your   Sleep Voltage  setting, or your   Specified PID  condition is no longer met, the WiCAN enters a warning state and starts the   Sleep After  countdown timer.   Timer Expires:  If the condition stays unmet for the entire duration of the timer, the WiCAN gracefully shuts down the CAN transceiver, drops the Wi-Fi\u002FVPN connections, and enters deep sleep.   The Wakeup Trigger:  The device monitors the voltage even while sleeping. If the voltage spikes by at least   +0.1V  above your Sleep Voltage setting (indicating the engine or EV contactors have started), it wakes up. Alternatively, if configured with a Periodic Interval, it wakes up automatically to check the PID status.   Resuming Operation:  Once the condition is stable, the WiCAN resumes standard operation.    !WARNING  Disabling Sleep Mode  will keep the Wi-Fi, CAN transceiver, and main processor running indefinitely. This will continuously drain your vehicle's battery and should only be used temporarily for testing or diagnostics.   2. Electric Vehicles (EVs) & \"Probe and Sleep\"  If you drive a modern EV (or certain hybrids), the standard   Voltage  sleep mode may not work reliably. EVs routinely activate their high-voltage DC-DC converters to top off the 12V battery while parked, which keeps the 12V bus voltage artificially high and prevents the WiCAN Pro from sleeping.   For EVs, it is highly recommended to use the \"Specified PID\" mode.  Modern EVs aggressively isolate their CAN bus gateways when parked. If you configure the WiCAN Pro to stay awake based on a PID (like   Engine RPM > 0 ), the device will periodically wake up to probe the car.   If the car is parked, the CAN bus is asleep, and the PID request will simply time out.  The WiCAN Pro's \"Probe and Sleep\" architecture interprets this timeout as the vehicle being \"Off\" and instantly returns to sleep, effectively preventing 12V battery drain without relying on voltage drops.   3. Background Polling  Even when your vehicle is parked and the WiCAN is asleep, you may still want to check in on the battery health or other vehicle info like tire pressure. You can configure the WiCAN to periodically wake up, connect to Wi-Fi, run its Automate groups, and go back to sleep. For Vehicle Group, since the car is most likely off, not running, you want the Vehicle Group set to Always.    Disable Wakeups:  The device will only wake up when you physically start the vehicle (or a voltage spike triggers a wake event).   Periodic Interval:  Wakes the device up every   X  minutes (e.g., every 60 minutes) for a brief data sync.   (Note: This is   required  if using the \"Specified PID\" sleep mode so the device can check if the car has turned on).   Scheduled (Time of Day):  Wakes the device up at specific times. You can add multiple triggers (e.g.,   08:00 AM  and   08:00 PM ).    !NOTE \nScheduled wakeups rely on the   Local Timezone  setting. You must ensure your timezone is configured correctly in the   System  tab for this feature to trigger at the correct local time.",{"id":213,"path":214,"dir":59,"title":215,"description":216,"keywords":217,"body":221},"content:5.Web_Interface:8.dashboard.md","\u002Fweb_interface\u002Fdashboard","Dashboard","The Dashboard tab provides a dedicated, interactive visual interface for your vehicle's data.",[218,219,220],"1. Live Data Tab","2. Logger Data Tab (Historical Analysis)","3. Exporting Data (Bulk Download)","  Dashboard & Data Visualization  The   Dashboard  tab provides a dedicated, interactive visual interface for your vehicle's data.  Rather than relying on third-party apps, the WiCAN Pro features a built-in dashboard that visualizes data in two distinct ways:   Live Data  (real-time monitoring) and   Logger Data  (historical chart analysis).   1. Live Data Tab  The   Live Data  tab acts as your real-time instrument cluster. It connects directly to the WiCAN's active data stream to display parameters as they are polled from the vehicle.  Controls and Indicators    Connection Status:  Located at the top of the dashboard, this indicator lets you know if the browser is actively receiving data from the WiCAN Pro, along with a \"Last updated\" timestamp.   Auto-refresh (5s):  By default, the dashboard automatically updates the live data widgets every 5 seconds. You can toggle this off if you want to freeze the current values.   Refresh Now:  A manual override button to instantly pull the latest data points from the device.    !NOTE \nIf you see a \"No Live Data Available\" message, ensure your vehicle's engine is running and that you have actively enabled parameters in the   Automate  tab. The dashboard only visualizes data the WiCAN is actively polling.   2. Logger Data Tab (Historical Analysis)  The   Logger Data  tab is a powerful analytical tool that reads the SQLite databases saved to your WiCAN's microSD card. It downloads these databases and processes them locally in your web browser, allowing you to scrub through hours or days of driving data without lag.    !IMPORTANT  An SD card formatted to FATFS must be installed  and the Logger must be enabled in the settings for this tab to function. If no SD card is detected, the dashboard will display a warning.  Step 1: Select a Date Range  Use the   Date Range  calendar picker to select the timeframe you want to analyze.   By default, it looks at the last 7 days.  When you select a range, the dashboard automatically queries the WiCAN Pro for any database files (  obd_logs ) created during that specific window.  Step 2: Choose Your Parameters  Once the databases are loaded into your browser's memory, a searchable list of available parameters will appear.   Use the   Search box  to quickly filter through large lists of data points.  Check the box next to any parameter to instantly generate a chart.  Step 3: Interactive Charts  For every parameter you select, the dashboard generates a dedicated, color-coded line chart.    Hover:  Move your mouse over the line to see the exact value and timestamp for any given data point.   Time Scaling:  The X-axis automatically scales from seconds to days depending on how much data you are viewing.   3. Exporting Data (Bulk Download)  If you want to perform deeper analysis using desktop software (like Excel, MATLAB, or MegaLogViewer), you do not need to physically remove the SD card from the WiCAN Pro.  Click the   \"Download Selected Database Files\"  button located above the charts. The dashboard will automatically compress all the SQLite databases from your selected date range into a single   .zip  archive and download it directly to your computer.",{"id":223,"path":224,"dir":59,"title":225,"description":226,"keywords":227,"body":231},"content:5.Web_Interface:9.can-monitor.md","\u002Fweb_interface\u002Fcan-monitor","CAN Monitor","The CAN Monitor tab transforms your WiCAN Pro into a live CAN bus sniffer. It allows you to watch raw data flying across the vehicle's network in real-time.",[228,229,230],"1. Monitor Settings","2. Using the Monitor","3. Understanding the Data Table","  CAN Monitor  The   CAN Monitor  tab transforms your WiCAN Pro into a live CAN bus sniffer. It allows you to watch raw data flying across the vehicle's network in real-time.  This tool is invaluable for reverse-engineering proprietary vehicle messages, verifying that your WiCAN is on the correct baud rate, or confirming that a specific ECU is broadcasting data.   1. Monitor Settings  Before you start listening to the bus, you must configure how the WiCAN interacts with it.     Setting  Description     Bitrate  Select the speed of the CAN bus you are connected to (e.g.,   500K  is standard for modern High-Speed CAN).    Filter  A hex value used to target specific CAN IDs. Default is   00000000 .    Mask  A hex value that works alongside the filter to allow multiple IDs through or restrict it to exactly one. Default is   FFFFFFFF  (allow everything).   2. Using the Monitor  Once your bitrate is set, click the   Start  button. The WiCAN will open a high-speed WebSocket connection and begin streaming live frames directly into your browser.    !WARNING  Important:  When you start the CAN Monitor, it halts the WiCAN's normal background tasks (like Automate polling and Sleep Mode monitoring) to dedicate maximum processing power to sniffing the bus.   You must reboot the device after using the CAN Monitor  to restore normal functionality. The UI will explicitly alert you about this when you click Start.   3. Understanding the Data Table  To keep the interface readable, the WiCAN does not infinitely scroll the data. Instead, it groups repeating CAN IDs into single rows and simply updates the data payload and occurrence count.  The live table contains the following columns:    ID:  The hexadecimal CAN Identifier of the broadcasting module (e.g.,   7E8h ).   Type:  The frame format. You will see   Std  (Standard 11-bit),   Ext  (Extended 29-bit),   RTR-Std , or   RTR-Ext  (Remote Transmission Requests).   Len:  The length of the data payload in bytes (typically 0 to 8).   Data:  The actual raw hex payload being transmitted by that ID.   Time:  The time delta (in milliseconds) since the last time this specific ID was seen. This is highly useful for determining the broadcast frequency of a module.   Count:  The total number of times this specific CAN ID has been seen since you clicked Start.  Stopping the Stream  Click   Stop  to halt the WebSocket stream and freeze the table. This allows you to safely scroll through the captured IDs and copy out any hex data you want to use in the   User Custom PIDs\u002FFilters  tab.",{"id":233,"path":234,"dir":59,"title":235,"description":236,"keywords":237,"body":241},"content:5.Web_Interface:10.terminal.md","\u002Fweb_interface\u002Fterminal","Terminal","The Terminal tab gives you a direct, interactive command-line interface (CLI) right in your web browser. It allows you to send raw commands either to the WiCAN Pro's internal operating system or directly to your vehicle's ECU.",[238,239,240],"1. Selecting a Terminal Type","2. Connecting and Sending Commands","3. Common ELM327 Commands","  Terminal  The   Terminal  tab gives you a direct, interactive command-line interface (CLI) right in your web browser. It allows you to send raw commands either to the WiCAN Pro's internal operating system or directly to your vehicle's ECU.  This tool is incredibly useful for manual diagnostics, testing Initialization Strings before adding them to an Automate Group, or debugging connections.   1. Selecting a Terminal Type  Before sending commands, you must choose which \"layer\" of the device you want to talk to using the   Terminal Type  dropdown:     Terminal Type  Description     WiCAN Command Line (console)  Talks to the WiCAN Pro's main processor. Use this to check device status, manage files, or send internal system commands (e.g.,   help ,   status ,   echo hello ).    ELM327  Bypasses the WiCAN's main processor and talks directly to the OBD chip. Use this to send standard   AT  commands (like   ATZ  for reset or   ATRV  to read voltage) or manually request OBD2 PIDs (like   010C  for RPM).    UDS   (Coming Soon)  Will provide a dedicated interface for Unified Diagnostic Services.   2. Connecting and Sending Commands    Connect:  Select your terminal type and click   Connect . The status badge at the top right will change from \"Disconnected\" to \"Connected\" (typically turning green).   Type your Command:  Click into the input box at the bottom of the screen.   Send:  Press the   Send  button (or hit   Enter  on your keyboard).   Read Output:  The terminal window will display your sent command and the subsequent response returned by the device or vehicle.    !TIP \nThe terminal output box is optimized for code. It uses a monospace font and automatically scrolls to the bottom as new data arrives so you can easily track fast responses.   3. Common ELM327 Commands  If you are using the   ELM327  terminal type, here are a few basic commands you can try to verify your connection to the vehicle:    ATZ  - Resets the ELM327 chip.   ATRV  - Reads the current vehicle battery voltage.   ATDP  - Describes the current OBD protocol being used.   0100  - Asks the ECU which standard Service 01 PIDs it supports.",{"id":243,"path":244,"dir":59,"title":245,"description":246,"keywords":247,"body":249},"content:5.Web_Interface:11.advanced.md","\u002Fweb_interface\u002Fadvanced","Advanced Settings","The Advanced tab contains low-level hardware configurations for the WiCAN Pro. Most users will not need to change these settings from their defaults, but they are available for specific tuning and debugging purposes.",[248],"Configuration Options","  Advanced Settings  The   Advanced  tab contains low-level hardware configurations for the WiCAN Pro. Most users will not need to change these settings from their defaults, but they are available for specific tuning and debugging purposes.   Configuration Options     Setting  Description     Motion Threshold  Controls the sensitivity of the WiCAN Pro's internal IMU (Inertial Measurement Unit). This slider ranges from 1 to 32, which the device calculates into   milli-g  (mg) of acceleration (e.g., a setting of 8 equals 31.2 mg). This determines how much physical movement or vibration is required to trigger motion-based wakeups or alerts.    ELM327 UDP Log  An advanced debugging tool that broadcasts raw ELM327 traffic over UDP.    !WARNING  ELM327 UDP Log Enabled  UDP logging requires significant processing power and can impact the overall performance of the WiCAN Pro. You should leave this   Disabled  unless you are actively debugging OBD2 communication issues.",{"id":251,"path":252,"dir":59,"title":253,"description":254,"keywords":255,"body":258},"content:5.Web_Interface:12.system.md","\u002Fweb_interface\u002Fsystem","System","The System tab provides device-level administration tools for your WiCAN Pro. This page allows you to manage timezones, backup your configurations, update the firmware, and manage security certificates.",[256,48,257],"1. General Settings & Actions","3. Certificate Manager","  System  The   System  tab provides device-level administration tools for your WiCAN Pro. This page allows you to manage timezones, backup your configurations, update the firmware, and manage security certificates.   1. General Settings & Actions     Setting \u002F Action  Description     Local Timezone  Sets the device's internal clock to your local region.   Note:  This must be set correctly for the \"Scheduled (Time of Day)\" Wakeup feature in the Power Saving tab to trigger accurately.    Reboot WiCAN  Performs a soft restart of the WiCAN Pro.    Download Configuration  Backs up your entire device state (Settings, Automate PIDs, Vehicle Groups, CAN Filters, etc.) into a single   .json  file. Highly recommended before performing a firmware update!    Upload Configuration  Restores a previously downloaded   .json  configuration file. The device will automatically reboot after successfully applying the uploaded settings.    Download Restart History  Downloads a diagnostic JSON log detailing the history of device restarts (e.g., wakeups, unexpected resets, planned reboots).   2. Firmware Update  The WiCAN Pro supports Over-The-Air (OTA) firmware updates directly through the web browser.   Download the latest firmware   .bin  file from the Wambs Forked   GitHub Releases page .   (Note: The UI will display a notification banner at the bottom of the sidebar if a new version is detected).  Click   Choose File  and select the   .bin  file you downloaded.  Click   Update .  A progress bar will appear to track the upload. Once it reaches 100%, the device will apply the update and automatically reboot.    !WARNING  Do not disconnect the WiCAN Pro from your vehicle's OBD2 port during a firmware update.  Interrupting power while the new firmware is being written can corrupt the device.   3. Certificate Manager  If you are routing data to secure endpoints (like an HTTPS webhook, ABRP, or an MQTT broker utilizing MQTTS), you must manage your SSL\u002FTLS certificates here.  The Certificate Manager allows you to store up to   10 named certificate sets . These sets can then be selected from the dropdown menus in the MQTT or Automate Destinations configurations.  Adding a New Certificate Set    New Cert Name:  Provide a unique name for this set (e.g.,   abrp_prod  or   my_home_mqtt ).   Only letters, digits, dashes, and underscores are allowed.   CA Certificate:  Upload the Certificate Authority (  .pem  or   .crt ) used to verify the server's identity.   Client Certificate & Key:  If your server requires mutual TLS (mTLS) authentication, upload your client cert (  .pem  or   .crt ) and the associated private key (  .pem  or   .key ).   Note: You must provide both if you are using mTLS.  Click   Add Set .  Managing Existing Sets  Below the upload form is a table of your existing sets, showing exactly which files (CA, Client Cert, Client Key) are included in each.   You can safely remove old certificates using the   Delete  button.   Note: The system contains a permanent, read-only   default  set that cannot be deleted.",{"id":260,"path":261,"dir":59,"title":262,"description":263,"keywords":264,"body":270},"content:5.Web_Interface:13.vpn.md","\u002Fweb_interface\u002Fvpn","VPN Settings","The VPN tab allows you to connect your WiCAN Pro to a remote secure network using either Tailscale or standard WireGuard.",[265,266,267,268,269],"1. Setting up Tailscale (Recommended)","2. Setting up WireGuard (Advanced)","3. Testing and Verifying the Connection","4. VPN Debug Tools","5. Seamless Mobile Hotspot Roaming","  VPN Settings  The   VPN  tab allows you to connect your WiCAN Pro to a remote secure network using either   Tailscale  or standard   WireGuard .  This feature is incredibly powerful if you want to securely route your vehicle's telemetry data to a home server (like Home Assistant) over a cellular hotspot, or if you want to remotely access the WiCAN's Web UI from anywhere in the world without opening ports on your router.   1. Setting up Tailscale (Recommended)  Tailscale is a Zero Trust mesh VPN built on top of WireGuard. It is the easiest and most secure way to remotely connect to your WiCAN Pro because it requires absolutely no port forwarding, DDNS, or firewall configuration.  When connected, Tailscale assigns your WiCAN Pro a private   100.x.x.x  IP address that is globally accessible from any of your authenticated devices.  Connecting the WiCAN Pro   Log in to your   Tailscale Admin Console .  Navigate to   Settings  >   Keys  and generate a new   Auth Key  (a reusable or non-expiring key is recommended for embedded devices).  On the WiCAN Pro, change the   VPN  dropdown to   Tailscale .  Paste your Auth Key into the provided field and click   Submit .  Once authenticated, the WiCAN's Network tab will display its live status as   connected (tailscale)  and reveal its newly assigned   100.x.x.x  IP address!  🏠 Integration: Home Assistant  Tailscale is the ultimate solution for piping live vehicle telemetry to Home Assistant while driving.   In Home Assistant, go to   Settings  >   Add-ons  and install the official   Tailscale  add-on.  Start the add-on and log in using the   exact same Tailscale account  you used to generate the WiCAN's Auth Key.  Open your Tailscale Admin Console and verify both Home Assistant and the WiCAN Pro are listed under \"Machines\" with green connected dots.  In your Home Assistant MQTT or REST integrations, simply use the WiCAN's   100.x.x.x  Tailscale IP address as the target. They are now securely networked together, no matter where the vehicle drives!   2. Setting up WireGuard (Advanced)  If you prefer to manage your own keys and routing, the WiCAN Pro fully supports native WireGuard connections.  The Easy Way: Importing a Config File  The simplest way to configure WireGuard is to generate a configuration file on your VPN server (using tools like   wg-easy , PiVPN, or your router's VPN dashboard).   Change the   VPN  dropdown to   WireGuard .  Scroll down to the   Configuration File  section.  Click   Choose File  and select the   .conf  file generated by your server.  The WiCAN Pro will automatically parse the file and fill in all the Interface and Peer fields for you.  Manual Configuration  If you prefer to enter the details manually, the fields are broken down into standard WireGuard structures:    Interface:  Represents the WiCAN Pro itself.\n    Private \u002F Public Key:  The cryptographic keys identifying the device.   Address:  The internal IP address assigned to the WiCAN on the VPN (e.g.,   10.2.2.3\u002F32 ).   Peer:  Represents your VPN Server.\n    Public Key & Preshared Key:  The cryptographic keys of the server.   Allowed IPs:  Defines what traffic goes through the VPN. Setting this to   0.0.0.0\u002F0  routes   all  WiCAN traffic through the VPN.   Endpoint:  The public IP address or hostname and port of your server (e.g.,   198.51.100.1:51820 ).   Persistent Keepalive:  Sends a ping every X seconds to keep the connection alive.    !WARNING   Cellular Hotspot Users:  Mobile carriers use strict NAT (CGNAT) and will aggressively kill idle UDP connections. If you intend to use a mobile hotspot while driving on a standard WireGuard tunnel,   you must set your Persistent Keepalive to   15 . If left blank or set to   0 , your VPN tunnel will silently drop.   3. Testing and Verifying the Connection    For Tailscale:  Check the   Network  tab on the main dashboard. If the key is valid, the UI will dynamically fetch and display your Mesh IP. If authentication fails or the key is rejected, it will actively warn you with a   connecting \u002F invalid key  status.   For WireGuard:  Click the   Test Connection  button on the VPN settings page. The WiCAN Pro will attempt a live handshake with your server, and a success or failure notification will appear.   4. VPN Debug Tools  If your connection fails, the   VPN Debug  section at the bottom of the page provides low-level diagnostics to help you pinpoint the issue.    Refresh:  Updates the live status panel. Pay attention to the   Gating  row—it will tell you if prerequisite requirements are met (e.g., ensuring Wi-Fi is connected and the device's clock is synced via NTP, which cryptographic tunnels require to function).   Resolve Endpoint:  Forces the WiCAN to look up the DNS record of your Peer Endpoint to ensure your router\u002Fcellular hotspot is properly resolving the server's address.   Resolve NTP:  Verifies that the WiCAN can reach the global time servers (  time.windows.com  and   pool.ntp.org ) required to set its internal clock.   5. Seamless Mobile Hotspot Roaming  If you plan to have the WiCAN Pro automatically switch from your Home Wi-Fi to your Mobile Hotspot as you drive away from your house, the firmware handles this transition natively using active signal monitoring and dynamic VPN teardowns.  How \"Sticky Client\" Roaming Works  The WiCAN actively monitors its connection to your Home Wi-Fi. If the signal drops to an unusable level (-92 dBm for 15 consecutive seconds) as you drive down the street, it will aggressively disconnect. This triggers the VPN manager to instantly purge stale UDP sockets and immediately scan your Fallback Network list for your Mobile Hotspot, resulting in a lightning-fast VPN reconnection.    !TIP  Pro Tip for the Fastest Hand-Off:  For the ultimate seamless experience, set your mobile hotspot's SSID and Password to be   exactly identical  to your Home Wi-Fi. This allows the ESP32's internal hardware to handle the hand-off dynamically before the Wi-Fi connection even formally drops!",{"id":272,"path":273,"dir":59,"title":274,"description":275,"keywords":276,"body":278},"content:5.Web_Interface:14.about.md","\u002Fweb_interface\u002Fabout","About","The About tab provides essential read-only information regarding your WiCAN Pro's hardware and software versions.",[277],"Device Information","  About  The   About  tab provides essential read-only information regarding your WiCAN Pro's hardware and software versions.   Device Information  When you load this page, the WiCAN Pro queries its internal system to display the following details:     Field  Description     Firmware ver  The current version of the operating system running on the device (e.g.,   1.00 ). You should check this after performing an OTA update to confirm the new firmware was applied successfully.    Hardware ver  The physical board revision of your WiCAN Pro (e.g.,   v2.10 ).    Git ver  The specific repository commit or release tag used to build your current firmware.    Designed By  A quick link back to the official   meatpi.com  website for support, documentation, and store access.",{"id":280,"path":281,"dir":59,"title":282,"description":283,"keywords":284,"body":289},"content:5.Web_Interface:15.Local-API.md","\u002Fweb_interface\u002Flocal-api","Local API (REST)","The WiCAN Pro's web interface is entirely driven by a local REST API. This means you can query the device directly from your browser, Home Assistant, Node-RED, or custom scripts using standard HTTP requests to pull raw JSON data or trigger actions.",[285,286,287,288],"Why Use the Local API?","Status & Telemetry","Configuration Dumps","System Actions (Advanced)","  Local API (REST)  The WiCAN Pro's web interface is entirely driven by a local REST API. This means you can query the device directly from your browser, Home Assistant, Node-RED, or custom scripts using standard HTTP requests to pull raw JSON data or trigger actions.  Why Use the Local API?  While MQTT is fantastic for streaming live vehicle telemetry, the local REST API serves a different, highly useful purpose for power users:    Device Health Monitoring:  Build REST sensors in Home Assistant to track the WiCAN's uptime, Wi-Fi signal strength, and sleep countdown timers independently of your vehicle data.   Broker-less Polling:  If you don't want to set up an MQTT broker, you can write simple Python or Bash scripts to poll   \u002Fcheck_status  directly over your local network.   Automated Troubleshooting:  Programmatically fetch the   \u002Frestart_tracker\u002Fhistory  to log any unexpected reboots or power drops over time without needing to open the Web UI.   Remote Management:  Trigger a remote   \u002Fsystem_reboot  from a custom Node-RED flow if a specific condition is met, or automatically sync the Real-Time Clock.  Below is a reference of the primary endpoints available on your device's local IP address (e.g.,   http:\u002F\u002F192.168.0.10 ).   Status & Telemetry  These endpoints use   GET  requests. You can easily query these in a browser or use them to build REST sensors in Home Assistant.   \u002Fcheck_status    Method:    GET   Description:  Returns a comprehensive JSON object containing the live status of the device.   Key Data Points:  Battery voltage (  batt_voltage ), Wi-Fi connection state (  wifi_mode ,   sta_ip ), sleep countdown (  time_to_sleep_sec ), system uptime (  uptime ), and the restart tracker metrics (  restart_last_reset_reason ,   restart_boot_count ).   \u002Fapi\u002Fdestinations_stats    Method:    GET   Description:  Returns health statistics for your configured Automate destinations and groups.   Key Data Points:  Active MQTT\u002FHTTP destination success and failure counts, and the active state of your Vehicle Groups (  active_groups ).   \u002Frestart_tracker\u002Fhistory    Method:    GET   Description:  Returns the historical log of reboots and crash data as a JSON file, which is highly useful for debugging power or sleep issues.   \u002Fwifi_scan    Method:    GET   Description:  Initiates a Wi-Fi scan and returns a JSON list of available networks nearby, including their SSID, signal strength (  rssi ), and security type (  auth_mode ).   Configuration Dumps  These   GET  endpoints output the device's currently saved settings in JSON format.     \u002Fload_config : Returns the primary system settings (Wi-Fi, MQTT broker details, sleep timers, CAN bus baud rates, etc.).    \u002Fload_auto_pid : Returns the active Automate configuration, including standard PIDs, webhook modes, and low-voltage behavior settings.    \u002Fload_auto_pid_car_data : Returns the full loaded vehicle profile, including all Custom PIDs, Vehicle Groups, and Custom CAN filters.    \u002Fapi\u002Fwebhook : Returns the current Webhook configuration and health statistics (  success_count ,   last_error ,   status ).    \u002Fvpn\u002Fdebug : Returns deep diagnostic data for the VPN connection, including ping timings and routing info.   System Actions (Advanced)  These endpoints require a   POST  or   DELETE  request with a specific JSON payload. They are used to alter the device state or save configurations.   \u002Fsystem_reboot    Method:    POST   Description:  Forces the device to immediately reboot.   \u002Fautopid\u002Ftest_pid    Method:    POST   Description:  Sends a temporary PID request to the vehicle and returns the raw hex and decoded value. This is the exact endpoint the \"Test\" button uses in the Automate UI.   \u002Fstore_config    Method:    POST   Description:  Saves new primary system settings to the device's flash memory.   \u002Fsystem_commands    Method:    POST   Description:  Used to send specific internal commands. For example, sending a payload with   {\"command\": \"set_rtc_time\"}  alongside the current hour, minute, and second will manually sync the Real-Time Clock.",{"id":291,"path":292,"dir":293,"title":15,"description":7,"keywords":294,"body":297},"content:6.External-Apps-Tools-Decoding:1.Overview.md","\u002Fexternal-apps-tools-decoding\u002Foverview","external-apps-tools-decoding",[295,296],"--\ntitle: Apps, Tools & Decoding Overview\nnavigation: true","Supported Software & Pipelines","  --\ntitle: Apps, Tools & Decoding Overview\nnavigation: true  External Apps, Tools & Decoding  The WiCAN Pro is designed to be the ultimate bridge between your vehicle's CAN bus and your favorite third-party software.  Rather than locking you into a proprietary app, the WiCAN Pro broadcasts standard formats that can be consumed and decoded by smart home platforms, digital dashboard apps, and professional reverse-engineering tools.   Supported Software & Pipelines  Explore our detailed setup guides for connecting the WiCAN Pro to external platforms and cracking your vehicle's data:     Home Assistant & MQTT :  Understand the pros and cons of using MQTT vs. Webhooks, and learn how to configure Home Assistant to seamlessly decode and display your vehicle's telemetry using custom YAML.    Decoding PIDs with FORScan & Wireshark :  A hardcore reverse-engineering guide showing you how to use FORScan alongside Wireshark to sniff, isolate, and decode proprietary PIDs for your specific vehicle.    RealDash :  Build stunning, highly customized digital instrument clusters on your phone, tablet, or Android head unit.    Car Scanner ELM OBD2 :  Connect to one of the most popular iOS\u002FAndroid diagnostic apps for quick code reading and live data.    SocketCAN \u002F slcan :  Connect the WiCAN Pro to Linux environments to use standard   can-utils  (  candump ,   cansend , etc.) for direct bus manipulation.",{"id":299,"path":300,"dir":293,"title":301,"description":302,"keywords":303,"body":310},"content:6.External-Apps-Tools-Decoding:2.Home-Assistant-MQTT.md","\u002Fexternal-apps-tools-decoding\u002Fhome-assistant-mqtt","Home Assistant & MQTT","Integrating the WiCAN Pro with Home Assistant over MQTT unlocks incredible potential for vehicle monitoring. However, because CAN bus data is highly complex and transmits at lightning speed, a poorly planned setup will quickly result in messy configuration files and broken data.",[304,305,306,307,308,309],"Why MQTT? The Advantages for Vehicle Telemetry","The Ultimate Debugging Tool: MQTT Explorer","Phase 1: Initial MQTT Broker Connection","Phase 2: MQTT Topic Naming & Payload Format","Phase 3: Active vs. Passive Polling","Phase 4: Home Assistant Configuration Best Practices","  Home Assistant & MQTT: The Ultimate Guide  Integrating the WiCAN Pro with Home Assistant over MQTT unlocks incredible potential for vehicle monitoring. However, because CAN bus data is highly complex and transmits at lightning speed, a poorly planned setup will quickly result in messy configuration files and broken data.  Follow these best practices to build a bulletproof, highly optimized integration from the ground up.    !NOTE \nThe Expression Hex type mentioned in some advanced examples is only available on the WiCAN Pro forked releases.   Why MQTT? The Advantages for Vehicle Telemetry  Before diving into the configuration, it is helpful to understand why MQTT (Message Queuing Telemetry Transport) is the gold standard for bridging your vehicle's CAN bus to your smart home:    Extremely Lightweight:  MQTT has incredibly small packet headers. This means it can transmit massive amounts of high-frequency data (like Engine RPM) without bogging down your Wi-Fi network or Home Assistant server.   Lightning Fast:  It operates on a publish\u002Fsubscribe model, allowing for near real-time data streaming from your truck straight to your dashboard with virtually zero latency.   Low Bandwidth:  By only sending tiny text or hex payloads, it uses a fraction of the bandwidth compared to standard HTTP API requests.   Reliability:  It is specifically designed for environments where network connections might drop or fluctuate (like a vehicle pulling into or out of a garage).   Rich Entity Customization:  When defining MQTT sensors manually in Home Assistant, you have total control over the metadata. You can explicitly set the   unit_of_measurement  (like PSI or °C), define the   state_class  (like   measurement  for long-term statistics graphing), assign a   unique_id  to allow UI editing, and explicitly define the exact backend name using   default_entity_id .   The Ultimate Debugging Tool: MQTT Explorer  Before you write a single line of YAML code in Home Assistant, download a free desktop program called   MQTT Explorer .  When you connect MQTT Explorer to your Home Assistant broker, you get a live, visual tree of every single message the WiCAN broadcasts. It is invaluable for troubleshooting because it allows you to:   View all WiCAN activity in real-time with precise timestamps.  Monitor the   online  \u002F   offline  availability topics to confirm connection stability.  See built-in WiCAN hardware metrics, such as the internal device battery level and signal strength.  Copy the exact JSON or Hex payloads to reference while building your Home Assistant templates.    !TIP  Mocking Data:  You can manually inject\u002Fpublish custom MQTT payloads directly to your broker using MQTT Explorer. This allows you to instantly test and debug your Home Assistant entity decoding logic   without  needing the truck running or the WiCAN device connected!   Phase 1: Initial MQTT Broker Connection  Before you can start routing vehicle data, you must connect the WiCAN Pro to your Home Assistant MQTT broker (typically the Mosquitto Broker add-on).  Navigate to the   Settings  tab in the WiCAN Pro web interface and locate the   MQTT  section. Configure the fields as follows:    Enable MQTT:  Toggle this to   ON .   Broker Address:  Enter the local IP address of your Home Assistant instance (e.g.,   192.168.1.100 ). Do not add   http:\u002F\u002F  or port numbers here.   Port:  Enter   1883  (the standard unencrypted MQTT port).   Client ID:  Give the WiCAN a unique name so your broker can identify it (e.g.,   wican_f350 ).   Username & Password:  Enter the credentials for the specific Home Assistant user you created for MQTT access.   Keep Alive:    60  seconds is the standard default and works perfectly.  Once entered, save your settings. The WiCAN Pro will now maintain a persistent connection to Home Assistant whenever it is powered on and connected to your network.   Phase 2: MQTT Topic Naming & Payload Format  How you name your MQTT topics dictates how easily you can organize them in Home Assistant. Never dump raw PIDs into the root of your MQTT broker.  1. Use a Strict, Hierarchical MQTT Topic Prefix  Use a logical, nested structure that identifies the system, the vehicle, the module, and the specific data point.    Format:    \u003Csystem>\u002F\u003Cdevice>\u002F\u003Cvehicle>\u002F\u003Cmodule>_\u003Cdata_name>   Good Example:    homeassistant\u002Fwican\u002Ff350\u002Fpcm_engine_rpm   Good Example:    homeassistant\u002Fwican\u002Ff350\u002Fbcm_remote_start_failures  2. Choose the Right Payload Format    For simple, single-byte values (like RPM or Engine Temp):  Let WiCAN handle the math and send the parsed Decimal\u002FInteger over MQTT.   For multi-byte complex responses:  Send the payload as   Raw (Hex)  to Home Assistant and decode it using Jinja2 templates in your YAML.   Phase 3: Active vs. Passive Polling  1. Setting up an Active Request (Polling)  Use this for data the ECU only provides when asked (e.g., Engine RPM, Coolant Temp).    Period:  Set an appropriate interval (e.g.,   1000  ms for fast data like RPM, or   5000  ms for slow data like Coolant Temp).   TX ID (Header):  The physical address of the module you are querying (e.g.,   7E2  for the TCM).   TX Data (Request):  The specific PID request hex (e.g.,   22 1E 12 ).   MQTT Topic:  Paste your structured topic here (e.g.,   homeassistant\u002Fwican\u002Ff350\u002Ftcm_gear_raw ).   Expression \u002F Output:  Choose how WiCAN formats the reply. Choose standard math expressions if WiCAN is doing the math for you, or select   Raw (Hex)  to pass the raw string directly to HA.    !WARNING  Don't Over-Poll:  Do not poll modules faster than necessary, or you risk flooding the vehicle's CAN bus and causing network collisions.  2. Setting up a Passive Listener (Sniffing)  Use this for high-frequency data the truck broadcasts automatically, or for event-based data (e.g., TPMS tire pressure bursts, Door Locks, or Remote Start Failures).   You do not want to actively poll for these.    Trigger \u002F Interval:  Leave the polling interval blank or disabled.   RX ID (Listen Address):  Enter the specific CAN ID that broadcasts the data (e.g.,   18FEF433  for TPMS events).   TX ID \u002F TX Data:  Leave these completely blank! You are only listening, not asking.   MQTT Topic:  Enter your topic (e.g.,   homeassistant\u002Fwican\u002Ff350\u002Fbcm_slow_evnt1_all ).   Expression \u002F Output:  Set this to   Raw (Hex) . Because broadcast packets are often massive (like a 19-byte TPMS message), forcing it to raw hex prevents WiCAN from trying to format it as JSON and accidentally truncating the data.    !TIP  Data Starts At:  If you are using Raw (Hex) output, pay attention to where the actual data begins. If WiCAN includes the header in the output (e.g.,   07 62 41 B8 08 08 08 08 ), you can either tell WiCAN to strip it by adjusting the starting byte, or just pass the whole string to Home Assistant and let Jinja2 slice it up using   regex_findall . Passing the whole string is usually the safest method!   Phase 4: Home Assistant Configuration Best Practices  Because you will be creating dozens (or hundreds) of sensors, keeping your   configuration.yaml  clean is critical.  1. Group Entities Using a Device Anchor  Instead of having 50 loose sensors floating in Home Assistant, assign them all to a single \"Vehicle\" device page. Define a YAML anchor (  &device_name ) once, and inject it into every sensor.     .wican_vehicle_def  :   &  f350_device\n     identifiers  :\n       -   \"wican_pro_f350\"\n     name  :   \"Ford F-350\"\n     model  :   \"Super Duty\"\n     manufacturer  :   \"Ford\"\n   \n   mqtt  :\n     sensor  :\n       -   name  :   \"Engine RPM\"\n         state_topic  :   \"homeassistant\u002Fwican\u002Ff350\u002Fpcm_engine_rpm\"\n         device  :   *  f350_device   # \u003C--- Automatically groups this sensor to the truck\n  2. Apply Custom Metadata  By defining specific metadata—like setting a binary_sensor's device_class to problem—Home Assistant will automatically colorize the icon in your dashboard and log it appropriately without you writing any custom dashboard code. You can also firmly lock in the backend name using default_entity_id.  3. Decoding Bitmaps (Multiple States in One Message)  Vehicle modules often use Bitmaps to send multiple true\u002Ffalse statuses in a single byte (e.g., Remote Start Failure reasons, where Bit 0 is \"Hood Open\" and Bit 1 is \"Not in Park\"). Use Jinja2's bitwise_and filter to extract multiple active states and combine them into a clean, comma-separated list.         -   name  :   \"Remote Start Failure Reasons\"\n         state_topic  :   \"homeassistant\u002Fwican\u002Ff350\u002Fbcm_remote_start_failures\"\n         value_template  :   >\n           {% set raw_val = value | int %}\n           {% set result = namespace(reasons=[]) %}\n           {% set bitmask = {\n             128: 'Alarm Triggered',\n             32: 'Hood Open',\n             16: 'Ignition Not Off',\n             1: 'Vehicle Not In Park'\n           } %}\n           {% for bit, reason in bitmask.items() %}\n             {% if raw_val | bitwise_and(bit) %}\n               {% set result.reasons = result.reasons + [reason] %}\n             {% endif %}\n           {% endfor %}\n           {{ result.reasons | join(', ') if result.reasons else 'None' }}\n  4. Bulletproof Raw Hex Parsing  If WiCAN sends a long string of Hex data (like 07 62 41 B8 08), spaces and formatting can easily break standard text slicing. Use regex_findall to cleanly extract the hex pairs into a perfect array.         value_template  :   >\n         {# Strips all formatting and creates an array of 2-character hex pairs #}\n         {% set h = value | regex_findall('[A-Fa-f0-9]{2}') %}\n         {# Grabs the 5th byte, converts from hex to integer, and does the math #}\n         {{ ((h[4] | int(base=16)) * 0.05) | round(1) }}\n  5. Use YAML Anchors for Repeating Sensors (Like TPMS)  If you have 4 tires sending identical 19-byte hex strings, do not write the decoding math 4 separate times. Write it once as an anchor (&tpms_pressure), and reuse it to keep your code DRY (Don't Repeat Yourself).     .tpms_calc  :   &  tpms_pressure   >\n     {% set h = value | regex_findall('[A-Fa-f0-9]{2}') %}\n     {{ ((h[6] | int(base=16)) * 0.2) | round(1) }}\n   \n   mqtt  :\n     sensor  :\n       -   name  :   \"Front Left Tire\"\n         state_topic  :   \"homeassistant\u002Fwican\u002Ff350\u002Ftpms_fl\"\n         value_template  :   *  tpms_pressure\n       -   name  :   \"Front Right Tire\"\n         state_topic  :   \"homeassistant\u002Fwican\u002Ff350\u002Ftpms_fr\"\n         value_template  :   *  tpms_pressure\n  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":312,"path":313,"dir":293,"title":314,"description":315,"keywords":316,"body":322},"content:6.External-Apps-Tools-Decoding:3.FORScan-Wireshark.md","\u002Fexternal-apps-tools-decoding\u002Fforscan-wireshark","Decoding PIDs with FORScan & Wireshark","This guide provides detailed instructions for reverse-engineering proprietary PIDs for Ford cars and trucks using FORScan and Wireshark. It will also guide you through creating the JSON car configuration file and verifying it using the WiCAN Pro Test Button.",[317,318,319,320,321],"Phase 1: Setup & Connection","Phase 2: Isolating & Capturing the PID","Phase 3: Analysis (Finding the Hex)","Phase 4: Creating the Configuration Profile","Phase 5: Using the \"Test Button\" to Verify","  Decoding PIDs with FORScan & Wireshark  This guide provides detailed instructions for reverse-engineering proprietary PIDs for Ford cars and trucks using FORScan and Wireshark. It will also guide you through creating the JSON car configuration file and verifying it using the WiCAN Pro Test Button.   Phase 1: Setup & Connection  WiCAN Pro Configuration   Ensure the WiCAN Pro is plugged into the vehicle and powered on.  Connect your PC to the WiCAN Pro's WiFi (AP Mode) or the same local network (Station Mode).  Note the IP Address: The default is usually   192.168.0.10  for AP mode, or your assigned local IP. The Data Port is typically   35000 .  FORScan Setup   Open FORScan on your PC.  Go to Settings (Gear Icon) and then Connection.  Connection Type: Select WiFi.  Adapter: Select \"ELM327 compatible\".  IP Address: Enter the WiCAN Pro's IP (e.g.,   192.168.0.10 ).  Port: Enter   35000 .  Wireshark Setup   Open Wireshark.  Select the WiFi adapter connecting you to the WiCAN Pro.  Apply Filter: In the top bar, type the appropriate filter to hide background noise.   Phase 2: Isolating & Capturing the PID  Isolate the PID   Go to the Dashboard (Gauges icon) in FORScan.  Click the Settings\u002FGear icon inside the Dashboard.  Delete ALL existing PIDs from the list.  Add ONLY the one PID you want to engineer (e.g., \"Fuel Rail Pressure\" or \"Tire Pressure\").  Capture the Data   Click Play (Start Streaming) in FORScan.  Wait for a valid value to appear (e.g.,   65 PSI ). Note this value mentally.  Click Stop in FORScan.  Click Stop in Wireshark immediately.   Phase 3: Analysis (Finding the Hex)  Inspect the Stream   In Wireshark, right-click any of the last few packets (colored green\u002Fblue\u002Fblack).  Select Follow > TCP Stream.  A window will pop up showing the ASCII communication.  Look for the command FORScan sent. It is usually a Mode 22 request for Ford.  Example:   22 28 13  (where   22  is the Mode, and   28 13  is the PID address).  Extract and Map Bytes   Cleaned Response:   62 28 13 04 BE . This represents the aligned data structure we standardized.  Byte Mapping breakdown:\n    B0 : PCI Length (e.g.,   05 ).   B1 : Service Byte (  62 ).   B2 : PID High (  28 ).   B3 : PID Low (  13 ).   B4 : Data High (  04 ). This is where your data usually starts.   B5 : Data Low (  BE ).  Calculate the Formula: You can use an LLM like Gemini to help you calculate the formula that converts the hex data back into your noted value.   Phase 4: Creating the Configuration Profile  Once you have isolated your PID request, initialization string, and calculated the math expression, you must load it into the WiCAN Pro. There are two approaches to building your profile:  Approach A: Using the Web UI (Recommended)  Instead of writing JSON code manually and risking syntax errors, you can use the WiCAN Pro's built-in Automate engine to build and export your profile.   Navigate to the   Automate  tab in the WiCAN Pro Web UI.  Go to the   Vehicle Groups  sub-tab and click   + Create New Vehicle Group .  Enter your Initialization String (if required by the specific ECU module you are querying).  Click   + Add PID Card  and enter your discovered PID request (e.g.,   222813 ).  In the Extraction Field, enter your calculated math expression (e.g.,   B4*2 ).  Once you have built your PIDs and tested them, scroll up to the   Active Vehicle Profile  section.  Click the   Save Profile  button. The WiCAN Pro will automatically compile your groups into a perfectly formatted JSON file and download it to your computer.  Approach B: Writing the JSON by Hand  If you prefer to edit files directly, you can construct a   car_data.json  file manually using the data obtained in the previous phases.   Open a text editor (like VS Code or Notepad++).  Structure your JSON to include the vehicle model, initialization string, and your custom PIDs.  Ensure your   pid ,   pid_init , and   expression  fields exactly match the data you reverse-engineered.   Phase 5: Using the \"Test Button\" to Verify  Upload the JSON   Go to the WiCAN Pro Web UI -> Automate, and under the Vehicle Specific Tab, select Choose File.  Upload   car_data.json .  At Vehicle Model, select your car name (this comes from the name in your JSON file).  Reboot the WiCAN Pro by going to Automate -> Submit Changes.  Navigate to Vehicle Settings   Go to Automate -> Vehicle Specific.  You should see your new PID (e.g., \"Tire_Press_FL\") listed.  Run the Test   Pre-requisite: Ensure the car key is ON.  Click the Test button next to your PID.  Analyze the Result: The value should match your FORScan value (e.g.,   65.7 ).  Troubleshooting with the Test Button   Value is huge (e.g., 20,000+): Your index is too low. You are reading the PID bytes (  28 13 ). Change your expression to use the higher bytes (e.g.,   B6  \u002F   B7 ).  Value is tiny\u002Fzero: Your index is too high. Change the expression to use lower bytes like   B2  \u002F   B3 .  \"No Data\" \u002F \"Error\": The WiCAN isn't receiving a response. Check your   pid_init  (Protocol\u002FHeader settings).  Final Verification   Once the Test Button shows the correct value, you can be 100% confident the MQTT data will also be correct, now that the firmware logic is unified.",{"id":324,"path":325,"dir":293,"title":326,"description":327,"keywords":328,"body":332},"content:6.External-Apps-Tools-Decoding:4.Car-Scanner.md","\u002Fexternal-apps-tools-decoding\u002Fcar-scanner","Car Scanner ELM OBD2","Car Scanner ELM OBD2 is one of the most popular and versatile diagnostic apps available for iOS and Android. It is an excellent tool for reading and clearing Check Engine Lights (DTCs), viewing live sensor data, and checking emissions readiness.",[329,330,331],"Part 1: WiCAN Pro Setup","Part 2: Car Scanner Setup (Wi-Fi & BLE)","Part 3: Extracting PIDs & Expressions (The 5-Phase Process)","  Car Scanner ELM OBD2 Setup   Car Scanner ELM OBD2  is one of the most popular and versatile diagnostic apps available for iOS and Android. It is an excellent tool for reading and clearing Check Engine Lights (DTCs), viewing live sensor data, and checking emissions readiness.  The WiCAN Pro acts as a high-speed wireless ELM327 adapter, making it fully compatible with the Car Scanner app via Wi-Fi or Bluetooth Low Energy (BLE).   Part 1: WiCAN Pro Setup  Before using Car Scanner, you must configure the WiCAN Pro's internal firmware to broadcast the correct protocol (ELM327) and activate the correct radio (Wi-Fi or BLE).  Accessing the Web UI   Plug the WiCAN Pro into the Equinox EV's OBD2 port.  On your phone or laptop, connect to the WiCAN's default Wi-Fi network (usually named   WiCAN-XXXX ).  Open a web browser and go to   http:\u002F\u002F192.168.0.10  (or   http:\u002F\u002Fwican.local ).  Setting the Protocol   In the WiCAN Web UI, navigate to the   Settings  tab.  Look for the   Protocol  dropdown menu.  Ensure it is set to   ELM327  (Do   not  leave it on RealDash CAN or SocketCAN, or Car Scanner will fail to connect).  Configuring Radio Mode (Wi-Fi vs BLE)    For Wi-Fi (Default\u002FRecommended):  Go to the   Network  tab. Leave the mode as   AP  (Access Point) or   AP+Station . Ensure the TCP server is active on Port   35000 .   For BLE (Bluetooth Low Energy):  Go to the   Network  tab. You must explicitly change the mode to enable BLE (e.g., changing from \"AP\" to a BLE-enabled mode, depending on your firmware version). Save and reboot the adapter.  Power Management (Crucial for Reverse Engineering)   Go to the   Settings  tab and look for Power or Sleep settings.  Temporarily increase or disable the   Sleep After  timer. You do not want the adapter going to sleep based on voltage drops while you are sitting parked trying to capture data logs.   (Remember to set this back to a short time when you finish so you don't drain the EV's 12V battery!)    !NOTE \nIf you prefer to use Bluetooth instead of Wi-Fi, ensure   BLE Status  is enabled in the   Settings > BLE  tab. Note that when a BLE connection is active, the WiCAN's Wi-Fi Access Point is temporarily disabled.   Phase 2: App Setup   Download and open   Car Scanner ELM OBD2  on your iOS or Android device.  Tap the   Settings  (gear) icon in the top or bottom corner of the screen.  Tap on   Connection .  Part 2: Car Scanner Setup (Wi-Fi & BLE)   Critical Pre-Requisite: The Global B Gateway  Many vehicles have an electrical architecture which isolates the OBD2 port for cybersecurity.\n  You may not be able to read CAN bus data while the car is off or in remote start.  Before attempting any connection, you maybe required to physically enter the car with the key\u002Ffob and start the vehicle.  Option A: Wi-Fi Setup (Recommended for speed and stability)   Connect your phone to the   WiCAN-XXXX  Wi-Fi network.   (Note: Ensure your phone does not drop the connection because of \"No Internet access.\" You may need to temporarily turn off cellular data or use Airplane Mode).  Open   Car Scanner  and tap the   Gear Icon (Settings) .  Go to   Connection  ->   Choose connection type .  Select   Wi-Fi .  Set the   IP address  to   192.168.0.10  and the   Port  to   35000 .  Option B: BLE Setup (Bluetooth Low Energy)   Ensure your phone's Bluetooth is turned   ON . (Do   not  try to pair the WiCAN Pro in your phone's standard Bluetooth menu; it must be paired directly inside the app).  Open   Car Scanner  and tap the   Gear Icon (Settings) .  Go to   Connection  ->   Choose connection type .  Select   Bluetooth LE (4.0+) .  Tap   Select device  and choose the WiCAN Pro from the list of available BLE devices.  ECU Protocol Configuration (For Both Wi-Fi & BLE)   In Car Scanner   Settings , go to   Adapter OBDII ELM327  ->   Advanced Settings .  Find the   ECU Protocol  dropdown.  Change it to your vehicles Protocol, a common one is   ISO 15765-4 CAN (11 bit ID, 500 Kbaud)  (Protocol 6).\n    Fallback:  If connection fails, try   ISO 15765-4 CAN (29 bit ID, 500 Kbaud)  (Protocol 7), or set to   Automatic .  Go back to   Settings  ->   Connection Profile  and select your vehicle profile.   Phase 1: Connecting to Your Vehicle   Ensure your vehicle's ignition is turned   ON  (engine running is preferred for live data).  Return to the main dashboard of the Car Scanner app.  Tap the large   Connect  button at the bottom of the screen.  If this is your first time connecting, the app will prompt you to select your vehicle make and model profile. Choose the one that matches your vehicle to ensure custom sensors load correctly.  The app will run through an initialization sequence. The connection icons at the top of the screen (Phone to ELM, ELM to ECU) should turn green.  Part 3: Extracting PIDs & Expressions (The 5-Phase Process)  Because Car Scanner hides its proprietary formulas, you must use the app's diagnostic trace log to capture the raw CAN traffic, reverse-engineer the math, and format it for the WiCAN Pro's standalone Automate (MQTT) tab.  Optional Alternative: Using Linux & socat (Wi-Fi Only)  When using Wi-Fi, instead of relying on the Car Scanner app's internal trace logs (Phases 1 & 2), you can use a Linux system as an intermediary between Car Scanner and the WiCAN Pro device. This allows you to view the traffic in real-time.    Set up   socat  routing:  On your Linux machine, run the following command to listen on port   35000  and forward the traffic to the WiCAN Pro's IP address (e.g.,   192.168.30.162 ):     socat   -v   TCP-LISTEN:35000,fork,reuseaddr   TCP:192.168.30.162:35000\n   Connect the App: * In the Car Scanner app's Wi-Fi connection settings, set the IP address to your Linux machine's IP address (leave the port as 35000).    Read the Output:  Once you connect, the -v flag in the command prints the raw ELM327 hex payloads directly to your Linux terminal. When you see your targeted sensor data, you can skip directly to Phase 3 without needing to export log files.  Phase 1: Isolate and Capture the Data  If you let Car Scanner run its default dashboard, the log will contain hundreds of different PIDs firing every second, making it impossible to read. You must force the app to ask the car only one question.    Enable Trace Logging:  * Open Car Scanner ->   Settings  ->   Advanced Settings .   Check   Save ELM327 communication log . (Clear the old log if prompted).   Connect to the Vehicle:   Ensure the vehicle is running. Connect the app to the WiCAN Pro.   Isolate the Sensor:   Go to   All Sensors  on the main menu.  Tap the   Pause  icon immediately so data stops polling.  Tap the   Filter\u002FGear icon  at the top. Select   Uncheck All .  Search for your target sensor (e.g.,   HV Battery State of Charge  or   High Voltage Level ) and check   only  that box.   Record the Value:   Unpause the data stream. Let it run for 5 to 10 seconds.   Write down the exact number on the screen.  (e.g.,   82.4% ).   Disconnect:   Hit pause, back out, and tap   Disconnect  so the app stops writing to the log.  Phase 2: Extract and Parse the Log  You will now pull the text file and find the exact ELM327 conversation between the app and the vehicle.    Export the Log:   Go to   Settings  ->   Advanced Settings  ->   Send ELM327 communication log .  Export it to a text editor on your phone or computer.   Locate the Polling Loop:   Scroll past the initial startup handshake (  AT Z , protocol selection, etc.).  Look for a repeating pattern. This is the app asking for your single sensor over and over.   Example Log Snippet:     > AT SH 7E4\n   > 22 80 1E\n   \u003C 62 80 1E 20 30\n  Phase 3: Identify the AT Commands, PID, and Response  Break down the log snippet to get the variables you need.    The Header (Target Module):    AT SH 7E4   The app is sending an \"AT Set Header\" command to target module   7E4  (GM's typical EV Powertrain\u002FEnergy module).   The Extended PID:    22 80 1E    22  is the UDS Service (Read Data).   80 1E  is the specific DID (Data Identifier).   The Response Data:    62 80 1E 20 30    62  means success.   80 1E  echoes the PID.    20 30  is your raw hex data payload! (Byte A is   20 , Byte B is   30 ).  Phase 4: Determine the Expression  You now have your raw hex data (  20 30 ) and your reported display value (  82.4 ). You need to find the mathematical bridge between them.    Convert Hex to Decimal:   Byte A (  20  hex) =   32  (decimal)  Byte B (  30  hex) =   48  (decimal)   Combine the Bytes (16-bit math):   Standard OBD2 formula to combine two bytes:   (A * 256) + B .   (32 * 256) + 48 = 8240   Solve the Algebra:   You know the raw decimal value is   8240 , and the app displayed   82.4 .  The expression is simply dividing by 100.   Formula:    ((A * 256) + B) \u002F 100  Phase 5: Translate to WiCAN for Home Assistant  Now that you have successfully cracked the sensor, format it for the WiCAN Web UI's   Automate  tab using zero-indexed byte arrays.  In WiCAN's byte array, the data bytes (A and B from Car Scanner) are typically found at positions   B4  and   B5 .   In the WiCAN Automate -> Vehicle Groups menu, enter the following:    Name:    hv_soc    (This becomes your MQTT\u002FHome Assistant entity ID)   Cycle (ms):    5000    (Polls every 5 seconds)   Init:    ATSH7E4;    (Must include the ATSH prefix and end with a semicolon)   PID:    22801E   Expression:    ((B4*256)+B5)\u002F100    (Or using WiCAN's shorthand:   [B4:B5]\u002F100 )   MQTT Dest:  \u002Fhomeassistant\u002Fwican\u002Fvehicle\u002Fpid_hv_soc (This becomes your MQTT\u002FHome Assistant MQTT dest)*  Save the PID, ensure the Automate toggle is enabled, and the WiCAN will begin querying the vehicle independently and publishing the decoded data directly to your Home Assistant MQTT broker. You will need to create the coreesponding HA entity using the same MQTT Dest as in the Wican Pro.  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":334,"path":335,"dir":293,"title":336,"description":337,"keywords":338,"body":341},"content:6.External-Apps-Tools-Decoding:5.SocketCAN.md","\u002Fexternal-apps-tools-decoding\u002Fsocketcan","SocketCAN \u002F slcan Setup","For advanced reverse engineering, Linux is the ultimate playground. The Linux kernel features a built-in CAN networking stack called SocketCAN.",[339,340],"Phase 1: WiCAN Pro Configuration","Phase 2: Linux Setup (socat & slcand)","  SocketCAN & Linux Integration (slcan)  For advanced reverse engineering, Linux is the ultimate playground. The Linux kernel features a built-in CAN networking stack called   SocketCAN .  By putting the WiCAN Pro into   slcan  mode, you can map its wireless network stream to a virtual network interface (like   slcan0 ) on your Linux machine (Ubuntu, Kali, Raspberry Pi, etc.). This gives you full access to the powerful   can-utils  suite (candump, cansend, cansniffer).   Phase 1: WiCAN Pro Configuration  Before connecting your Linux machine, you must configure the WiCAN Pro to broadcast the correct protocol.   Access the WiCAN Pro Web UI.  Navigate to   Settings > CAN .  Configure the following fields:\n    CAN Bitrate:  Set this to match your vehicle's bus speed (e.g.,   500K ).   CAN Mode:  Choose   Normal  if you plan to send data (cansend), or   Silent  if you only want to passively sniff.   Port Type:    TCP  (Recommended for reliable serial-over-network streaming).   TCP\u002FUDP Port:    3333  (Default).   Protocol:  Select   slcan .  Click   Submit Changes  and allow the device to reboot.   Phase 2: Linux Setup (socat & slcand)  Open a terminal on your Linux machine. You will need the   socat  and   can-utils  packages installed. On Debian\u002FUbuntu-based systems, you can install them via:     sudo   apt   update\n   sudo   apt   install   socat   can-utils\n  1. Create the Virtual Serial Port  We use socat to connect to the WiCAN's IP address and map that TCP stream to a fake serial port on your computer (\u002Fdev\u002FttyWiCAN).  Replace 192.168.0.10 with your WiCAN's actual IP address:     sudo   socat   pty,link=\u002Fdev\u002FttyWiCAN,raw,echo=  0   tcp:192.168.0.10:3333   &\n  2. Attach the slcan Daemon  Now that Linux sees a \"serial port\" at \u002Fdev\u002FttyWiCAN, we tell the slcand daemon to attach to it and create a CAN network interface named slcan     sudo   slcand   -o   -c   -s6   \u002Fdev\u002FttyWiCAN   slcan0\n  (Note: -s6 tells the daemon the speed is 500kbps, -o opens the port, and -c closes it when the daemon stops).  3. Bring the Interface Up  Finally, bring the new CAN network interface online just like you would a standard ethernet or Wi-Fi interface.     sudo   ip   link   set   up   slcan0\n  Phase 3: Using can-utils  With slcan0 successfully running, your Linux machine now has direct, low-level access to the vehicle's CAN bus.  Sniffing Traffic (candump)\nTo see a live stream of all raw CAN frames flying across the bus:     candump   slcan0\n  To view a colorized, live-updating screen of CAN traffic (excellent for finding which bytes change when you press a button in the car):     cansniffer   -c   slcan0\n  Sending Data (cansend)\nIf your WiCAN Pro is in Normal mode, you can inject raw frames onto the bus.  Example: Sending a standard OBD2 Service 01 PID 0C (Engine RPM) request to the primary ECU:     cansend   slcan0   7DF#02010C0000000000\n   !WARNING \nDisable Automate: If you are using SocketCAN to reverse-engineer data, make sure you disable the \"Automate\" engine in the WiCAN Web UI. Having the WiCAN Pro automatically request PIDs in the background while you are simultaneously trying to use candump will result in a chaotic, confusing data stream.  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":343,"path":344,"dir":293,"title":345,"description":346,"keywords":347,"body":350},"content:6.External-Apps-Tools-Decoding:6.BUSMASTER.md","\u002Fexternal-apps-tools-decoding\u002Fbusmaster","BUSMASTER Setup","BUSMASTER is an open-source PC software for designing, monitoring, analyzing, and simulating CAN networks. It is highly regarded by engineers for its rich feature set, including node simulation and message logging.",[339,348,349],"Phase 2: Connecting to the Network","Phase 3: BUSMASTER Configuration","  BUSMASTER Setup   BUSMASTER  is an open-source PC software for designing, monitoring, analyzing, and simulating CAN networks. It is highly regarded by engineers for its rich feature set, including node simulation and message logging.  The WiCAN Pro supports BUSMASTER natively over Wi-Fi by utilizing the   slcan  (SocketCAN) protocol and a virtual serial communication (VSCOM) bridge.   Phase 1: WiCAN Pro Configuration  Before opening BUSMASTER, you must configure the WiCAN Pro to output the correct protocol.   Access the WiCAN Pro Web UI.  Navigate to   Settings > CAN .  Configure the following fields:\n    CAN Bitrate:  Set this to match your vehicle's bus speed (e.g.,   500K ).   CAN Mode:  Choose   Normal  if you want to interact and simulate nodes, or   Silent  if you only want to passively log and monitor traffic.   Port Type:  Select   TCP .   TCP\u002FUDP Port:  Note this number (typically   3333  by default).   Protocol:  Select   slcan .   (Note: Do not use the ELM327 protocol, as it will not work with BUSMASTER)  Click   Submit Changes  and allow the WiCAN Pro to reboot.   Phase 2: Connecting to the Network   Ensure your Windows PC is connected to the WiCAN Pro's network.\n   If in   AP Mode , connect your PC directly to the WiCAN's Wi-Fi hotspot. The IP will usually be   192.168.0.10  (for WiCAN Pro).  If in   Station Mode , ensure both your PC and the WiCAN are on the same local network. Check the WiCAN's Status tab for its assigned IP address.   Phase 3: BUSMASTER Configuration   Download and install   BUSMASTER  on your Windows PC.  Open BUSMASTER.  In the top menu, go to   CAN > Driver Selection .  Select the   VSCOM  (Virtual Serial COM) or   SocketCAN\u002FLawicel  hardware driver.  Go to   CAN > Channel Configuration  or click the   Connect  button.  When prompted for connection details, enter the WiCAN's IP address and Port (e.g.,   192.168.0.10:3333 ).  Set the baud rate to match what you configured in the WiCAN Web UI (e.g., 500 kbps).  Click   Connect  or   OK .  You should now see the green connection indicator in BUSMASTER, and raw CAN traffic will begin populating the message window!    !WARNING  Failed to start the hardware:  If you immediately receive a \"Failed to start the hardware\" error in BUSMASTER, it typically means your IP\u002FPort is incorrect, or the WiCAN Pro is not set to the   slcan  protocol. Double-check your Web UI settings and ensure your PC's firewall isn't blocking outbound TCP connections.",{"id":352,"path":353,"dir":293,"title":354,"description":355,"keywords":356,"body":358},"content:6.External-Apps-Tools-Decoding:7.SavvyCAN.md","\u002Fexternal-apps-tools-decoding\u002Fsavvycan","SavvyCAN Setup","SavvyCAN is an open-source, cross-platform CAN bus analyzer and reverse-engineering tool. It is widely used for capturing, filtering, and manipulating CAN frames.",[339,348,357],"Phase 3: SavvyCAN Configuration","  SavvyCAN Setup   SavvyCAN  is an open-source, cross-platform CAN bus analyzer and reverse-engineering tool. It is widely used for capturing, filtering, and manipulating CAN frames.  The WiCAN Pro has a dedicated protocol setting specifically designed for SavvyCAN integration.   Phase 1: WiCAN Pro Configuration  Before opening SavvyCAN, you must configure the WiCAN Pro to broadcast the correct protocol.   Access the WiCAN Pro Web UI.  Navigate to   Settings > CAN .  Configure the following fields:\n    CAN Bitrate:  Set this to match your vehicle's bus speed (e.g.,   500K ).   CAN Mode:  Choose   Normal  if you want to inject frames, or   Silent  if you only want to passively sniff the bus without acknowledging packets.   Protocol:  Select   savvycan  from the dropdown list.   Note:  Once you select   savvycan , the WiCAN Pro will automatically lock the   Port Type  to   TCP  and the   TCP\u002FUDP Port  to   23 . This is required for SavvyCAN to communicate correctly.  Click   Submit Changes  and allow the WiCAN Pro to reboot.   Phase 2: Connecting to the Network  Ensure your PC (Windows, Mac, or Linux) is connected to the WiCAN Pro's network.   If the WiCAN is in   AP Mode , connect your PC directly to the WiCAN's Wi-Fi hotspot. The IP address will typically be   192.168.0.10 .  If the WiCAN is in   Station Mode , ensure both your PC and the WiCAN are on the same local network. Check the WiCAN's Status tab for its assigned IP address.   Phase 3: SavvyCAN Configuration   Download and open   SavvyCAN  on your computer.  In the top menu, go to   Connection > Open Connection Window .  Click on   Add New Device Connection .  Select the connection type (usually listed as a Network connection or TCP bridge).  Enter the connection details:\n    IP Address:  Enter the WiCAN's IP address (e.g.,   192.168.0.10 ).   Port:    23  (This must match the auto-assigned port from Phase 1).  Click   Create New Connection .  Once connected, the status should indicate it is active, and you will begin seeing raw CAN frames populating the main capture window.    !WARNING  Disable Automate:  If you are using SavvyCAN to capture a clean log of your vehicle's background CAN traffic, make sure you disable the \"Automate\" engine in the WiCAN Web UI. Having the WiCAN Pro actively poll PIDs in the background will flood your SavvyCAN capture with diagnostic requests and responses, making it difficult to analyze normal vehicle behavior.",{"id":360,"path":361,"dir":293,"title":362,"description":363,"keywords":364,"body":367},"content:6.External-Apps-Tools-Decoding:8.RealDash.md","\u002Fexternal-apps-tools-decoding\u002Frealdash","RealDash Setup","RealDash is a highly customizable digital dashboard application available for Android, iOS, and Windows. It is widely used to create stunning instrument clusters on tablets and Android head units.",[339,348,365,366],"Phase 3: RealDash App Configuration","Phase 4: Importing Custom XMLs (Optional)","  RealDash Setup   RealDash  is a highly customizable digital dashboard application available for Android, iOS, and Windows. It is widely used to create stunning instrument clusters on tablets and Android head units.  The WiCAN Pro features a native   realdash66  protocol setting that optimizes data throughput specifically for RealDash's 66-byte CAN protocol, allowing for incredibly fluid gauge animations.   Phase 1: WiCAN Pro Configuration  Before launching RealDash, you must set the WiCAN Pro to broadcast the correct data format.   Access the WiCAN Pro Web UI.  Navigate to   Settings > CAN .  Configure the following fields:\n    CAN Bitrate:  Set this to match your vehicle's bus speed (e.g.,   500K ).   CAN Mode:    Normal  or   Silent , depending on whether you need to send data to the vehicle or just listen passively.   Port Type:    TCP  or   UDP  (TCP is generally recommended for reliable connections over Wi-Fi).   TCP\u002FUDP Port:  Note this number (typically   3333 ).   Protocol:  Select   realdash66  from the dropdown list.  Click   Submit Changes  and allow the WiCAN Pro to reboot.   Phase 2: Connecting to the Network  Ensure the device running RealDash (your tablet, phone, or head unit) is connected to the WiCAN Pro's network.   If the WiCAN is in   AP Mode , connect your device directly to the WiCAN's Wi-Fi hotspot. The IP address will typically be   192.168.0.10 .  If the WiCAN is in   Station Mode , ensure both your device and the WiCAN are on the same local network. Check the WiCAN's Status tab for its assigned IP address.   Phase 3: RealDash App Configuration   Open the   RealDash  application on your device.  Tap anywhere on the dashboard to open the top menu, then tap the   Settings  (Gear) icon.  Navigate to   Garage > Connections .  Tap the   Add  button to create a new connection.  Select   Adapters (CAN\u002FLIN) .  Select   RealDash CAN .  Select   WiFi \u002F LAN .  Enter the connection details:\n    IP Address:  Enter the WiCAN's IP address (e.g.,   192.168.0.10 ).   Port:  Enter   3333  (or the specific port you configured in Phase 1).  Tap the Checkmark or   Done  to save the connection.   Phase 4: Importing Custom XMLs (Optional)  RealDash uses XML files to map raw CAN data into readable dashboard gauges (like RPM, Coolant Temp, or Speed). If you are reading proprietary vehicle data rather than standard OBD2, you will need to load a custom XML file.   In RealDash, return to   Garage > Connections .  Tap on your newly created   RealDash CAN  connection to open its settings.  Scroll down and look for   Custom Channel Description File  (or similar XML import option).  Tap   Import  and select the XML file containing your vehicle's CAN mappings.  Restart RealDash to ensure the new mappings take effect.    !WARNING  Disable Automate:  If you are feeding raw CAN data directly into RealDash using the   realdash66  protocol, it is highly recommended to disable the WiCAN's internal \"Automate\" engine. Letting RealDash handle the data mapping prevents conflicts and reduces unnecessary traffic on your vehicle's CAN bus.",{"id":369,"path":370,"dir":293,"title":371,"description":372,"keywords":373,"body":377},"content:6.External-Apps-Tools-Decoding:9.Command_Reference.md","\u002Fexternal-apps-tools-decoding\u002Fcommand_reference","WiCAN Pro MQTT Command Reference","The WiCAN Pro exposes a powerful command and response channel over MQTT. This interface allows you to remotely control the device, query its status, and trigger on-demand diagnostic polling (AutoPID groups). This is incredibly useful for integrating the WiCAN Pro into smart home platforms like Home Assistant.",[374,375,376],"MQTT Topics Overview","Command Payloads","Home Assistant Integration Example","  WiCAN Pro MQTT Command Reference  The WiCAN Pro exposes a powerful command and response channel over MQTT. This interface allows you to remotely control the device, query its status, and trigger on-demand diagnostic polling (AutoPID groups). This is incredibly useful for integrating the WiCAN Pro into smart home platforms like Home Assistant.  MQTT Topics Overview  The device uses the following topics based on its unique Device ID.\n  (Note: Replace   \u003Cdevice-id>  with your specific WiCAN device ID, e.g.,   wican-abcdef ).     Topic  Direction  Purpose     wican\u002F\u003Cdevice-id>\u002Fcmd  Publish (Send to device)  Send commands to the device.    wican\u002F\u003Cdevice-id>\u002Frsp  Subscribe (Receive from device)  Receive command responses.    wican\u002F\u003Cdevice-id>\u002Fbattery  Subscribe  Battery voltage, published on connect (Retained).    wican\u002F\u003Cdevice-id>\u002Fstatus  Subscribe  Device availability (  online  \u002F   offline ) (Retained, LWT).   Command Payloads  Commands are formatted as JSON and published to the   wican\u002F\u003Cdevice-id>\u002Fcmd  topic.  1. Get Battery Voltage  Query the current 12V battery voltage directly from the WiCAN Pro.   Publish to   cmd :     {  \"cmd\"  :   \"get_vbatt\"  }\n   Response on   rsp :     {  \"battery_voltage\"  :   12.34  }\n  2. Reboot Device  Trigger a remote reboot of the WiCAN Pro adapter.   Publish to   cmd :     {  \"cmd\"  :   \"reboot\"  }\n   Response on   rsp :     {  \"rsp\"  :   \"ok\"  }\n   (Note: The device will reboot approximately 2 seconds after acknowledging this command).  3. Manage AutoPID Groups (On-Demand Diagnostics)  Activate or deactivate a specific AutoPID group configured in the Web UI. This allows you to wake up the network or poll specific ECU data only when needed (preventing constant 12V battery drain).   Publish to   cmd :     {\n     \"command\"  :   \"set_group\"  , \n     \"group_name\"  :   \"PCM\"  , \n     \"active\"  :   true  , \n     \"timeout\"  :   5\n   }\n   Parameters:    group_name    (String) : Must exactly match the group name configured in the WiCAN Web UI.   active    (Boolean) :   true  to start polling the group,   false  to stop.   timeout    (Integer, Optional) : Minutes until the group auto-deactivates. If omitted, defaults to   15  minutes.   Response on   rsp :     {  \"group\"  :   \"PCM\"  ,   \"active\"  :   true  ,   \"timeout\"  :   5  }\n   Home Assistant Integration Example  Using the   set_group  command, you can trigger on-demand diagnostics from a Home Assistant automation.  For example, you can create an automation that tells the WiCAN Pro to start polling your \"Equinox_EV\" AutoPID group for 10 minutes as soon as your garage door opens or when the vehicle starts charging:     alias  :   \"WiCAN: Start Polling on Garage Open\"\n   description  :   \"Triggers the WiCAN Pro to poll vehicle data for 10 minutes\"\n   trigger  :\n     -   platform  :   state\n       entity_id  :   cover.garage_door\n       to  :   \"open\"\n   action  :\n     -   service  :   mqtt.publish\n       data  :\n         topic  :   \"wican\u002Fwican-abcdef\u002Fcmd\"   # Replace with your device ID\n         payload  :   '{\"command\": \"set_group\", \"group_name\": \"Equinox_EV\", \"active\": true, \"timeout\": 10}'\n   mode  :   single\n  Example 2: PyScript Integration (Scheduled Battery Polling)  If you prefer writing Python logic using the   pyscript  custom integration, you can easily schedule MQTT publishes. The following script runs every 10 seconds to poll the WiCAN Pro for its current 12V battery voltage:     TOPIC_CMD = \"wican\u002Fwican-abcdef\u002Fcmd\" # Replace with your specific device ID topic\n   \n   @time_trigger(\"period(now, 10s)\")\n   def get_wican_voltage():\n       \"\"\"Runs every 10 seconds to poll battery voltage the wican reports.\"\"\"  \n       service.call(\"mqtt\", \"publish\", \n           topic=TOPIC_CMD, \n           payload='{\"cmd\": \"get_vbatt\"}')\n  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":379,"path":380,"dir":381,"title":382,"description":383,"keywords":384,"body":386},"content:7.How-To-Guides:1.Overview.md","\u002Fhow-to-guides\u002Foverview","how-to-guides","How-To Guides Overview","Welcome to the How-To Guides! While the rest of the documentation focuses on what individual settings do, this section is entirely focused on practical workflows.",[385],"Available Guides","  How-To Guides  Welcome to the How-To Guides! While the rest of the documentation focuses on what individual settings do, this section is entirely focused on   practical workflows .  Here, you'll find step-by-step tutorials on how to accomplish specific tasks using the WiCAN Pro's built-in features without needing to rely on external software.   Available Guides     Reading & Clearing DTCs :  Learn how to use the WiCAN Pro's   mqtt_on_demand  feature and   DTC_RAW  expression to build an efficient, on-demand Check Engine Light scanner.   (Note: We drafted this guide earlier!)    Power Management & Sleep Mode :  Prevent your vehicle's battery from dying while parked. Learn how to configure voltage thresholds, sleep timers, and periodic wakeups.    SmartConnect Setup :  Configure the WiCAN Pro to automatically switch between your home Wi-Fi network and your vehicle's mobile hotspot or Bluetooth.    Configuring Battery Alerts :  Set up automated MQTT payloads that notify your smart home if your car battery drops below a critical level.",{"id":388,"path":389,"dir":381,"title":390,"description":391,"keywords":392,"body":396},"content:7.How-To-Guides:2.Power-Management.md","\u002Fhow-to-guides\u002Fpower-management","Power Management & Sleep Mode","Because the WiCAN Pro plugs into the OBD2 port, it has constant access to your vehicle's 12V battery. If left running continuously, it will keep your vehicle's CAN bus awake, which can drain your battery over a few days.",[393,394,395],"Step 1: Enabling Sleep Mode","Step 2: Configuring Wakeups","Step 3: Low-Voltage Protection for Automate","  Power Management & Sleep Mode  Because the WiCAN Pro plugs into the OBD2 port, it has constant access to your vehicle's 12V battery. If left running continuously, it will keep your vehicle's CAN bus awake, which can drain your battery over a few days.  To prevent this, the WiCAN Pro features an intelligent Power Saving engine.   Step 1: Enabling Sleep Mode  By default, Sleep Mode should be enabled. You can configure it in the   Power Saving  tab.   Navigate to the   Power Saving  tab.   Sleep Mode:  Ensure this is set to   Enable .   Sleep Voltage:  This is the critical threshold. When your engine turns off, the alternator stops charging, and the battery voltage drops. Set this just below your vehicle's running voltage (e.g.,   13.2V ).   Sleep After:  This is the timer. If the voltage drops below your threshold (e.g., 13.2V) and stays there for this amount of time (e.g.,   5  min), the WiCAN Pro will go to sleep.    !WARNING  Sleep Mode Disabled Warning \nDisabling sleep mode will continuously drain your vehicle's battery and may cause battery discharge when the vehicle is off. The Web UI will require you to explicitly agree to an \"I understand the risks\" prompt if you attempt to disable it.   Step 2: Configuring Wakeups  Even while asleep, the WiCAN Pro can periodically wake up to check the vehicle's status (like battery voltage or tire pressure) and send an update over MQTT.  In the   Power Saving  tab, configure the   Wakeup Mode :    Disable Wakeups:  The device will only wake up when you turn the engine back on and the voltage spikes.   Periodic Interval:  The device will wake up every X minutes (e.g.,   60  min).   Scheduled (Time of Day):  The device will wake up at specific times (e.g., 12:00 AM).   (Note: You must ensure your Local Timezone is set correctly in the System tab for this to work)   Step 3: Low-Voltage Protection for Automate  When the WiCAN Pro wakes up to send a periodic update, you don't want it heavily polling the ECU if your battery is already dangerously low.   Navigate to the   Automate  tab.  Locate the   Low-Voltage Behavior  setting.  Select   Pause PID polling only (Custom Voltage)  or   Pause Automate on low voltage .  If using a custom voltage, set the   PID Polling Min Voltage  slider (e.g.,   12.0V ).  This ensures that if your battery drops to 12.0V, the WiCAN Pro will still wake up to report the low voltage, but it will skip querying the heavy PIDs, saving precious battery life.",{"id":398,"path":399,"dir":381,"title":400,"description":401,"keywords":402,"body":408},"content:7.How-To-Guides:3.Reading-DTCs.md","\u002Fhow-to-guides\u002Freading-dtcs","Reading & Clearing DTCs","This guide provides comprehensive instructions to query Diagnostic Trouble Codes (DTCs) from your vehicle and generate readable text strings within Home Assistant. This is an involved process but highly rewarding for building a custom digital dashboard.",[403,404,405,406,407],"Phase 1: Creating the DTC Query in the WiCAN Web UI","Phase 2: The Home Assistant Sensor (configuration.yaml)","Phase 3: The Dictionary Macro","Phase 4: The Dashboard UI","Phase 5: Home Assistant Alert Automation (Optional)","  Reading & Clearing DTCs (Trouble Codes)  This guide provides comprehensive instructions to query Diagnostic Trouble Codes (DTCs) from your vehicle and generate readable text strings within Home Assistant. This is an involved process but highly rewarding for building a custom digital dashboard.    !NOTE \nThis workflow requires the Beta 9 (or newer) firmware from the forked   wambs\u002Fwican-fw  releases. You will also need to manually search for your specific vehicle manufacturer's DTC definitions to build your dictionary.   Phase 1: Creating the DTC Query in the WiCAN Web UI  We will configure the WiCAN to broadcast a Mode   03  command, process the hex data using the custom firmware, and publish it directly to a dedicated MQTT topic.    Open your WiCAN Pro Web UI in your browser.  Navigate to the   Automate  tab and select the   Vehicle Groups  section.  Click   Add New Group  and configure the group:\n    Init:  This maybe vehicle dependent, mine was   ATTP6;ATSH7DF;ATCRA;   Polling Interval:    60000  (Polling every 60 seconds prevents choking the CAN bus).  Add a new PID to the group with the following parameters:\n    Name:    DTC_RAW  (This dictates your JSON key in the payload).   MQTT Topic (Send_to):    homeassistant\u002Fwican\u002Fyour_car\u002Fdtcs  (This explicitly routes this specific PID's data to its own topic).   PID:    03  (The OBD2 standard for requesting DTCs).   Expression:    DTC_RAW  (Triggers the custom C loop to merge the multi-frame ISO-TP data).  Once saved, your WiCAN will begin broadcasting to your new dedicated topic.   An active payload will look like:   {\"dtc_raw\": \"4303C60FC68B2104\"} .  A clear payload (no DTCs) will look like:   {\"dtc_raw\": \"4300\"} .   Phase 2: The Home Assistant Sensor (configuration.yaml)  Now we ingest that optimized hex string from your new dedicated topic. Open your Home Assistant   configuration.yaml  file and add the following under your   mqtt: sensor:  block.   Note: Be sure to change the device anchor (  *f350_device ) and topics to match your setup.           -   name  :   \"F-350 Active DTCs\"\n           default_entity_id  :   \"sensor.f350_dtcs\"\n           unique_id  :   \"f350_dtcs\"\n           device  :   *  f350_device\n           state_topic  :   \"homeassistant\u002Fwican\u002Ff350\u002Fdtcs\"\n           icon  :   mdi:engine-outline\n           # 1. Keep the main state under 255 characters\n           value_template  :   >-\n             {%- set ns = namespace(payload='') -%}\n   \n             {# Safety check: Only loop items if it's actually a JSON dictionary #}\n             {%- if value_json is defined and value_json is mapping -%}\n               {%- for key, val in value_json.items() -%}\n                 {%- set clean_val = val | string | replace(' ', '') | upper -%}\n                 {%- set idx = clean_val.find('43') -%}\n                 {%- if idx != -1 -%}\n                   {%- set ns.payload = clean_val[idx:] -%}\n                 {%- endif -%}\n               {%- endfor -%}\n             {%- else -%}\n               {# If it's a raw string, bypass JSON parsing entirely #}\n               {%- set clean_val = value | string | replace(' ', '') | upper -%}\n               {%- set idx = clean_val.find('43') -%}\n               {%- if idx != -1 -%}\n                 {%- set ns.payload = clean_val[idx:] -%}\n               {%- endif -%}\n             {%- endif -%}\n   \n             {%- if ns.payload.startswith('43') and ns.payload | length >= 4 -%}\n               {%- set count = ns.payload[2:4] | int(base=16, default=0) -%}\n               {{- 'System Clear' if count == 0 else count ~ ' Active Codes' -}}\n             {# THE MEMORY FIX: If the payload is bad\u002Fmissing, echo our own last known state! #}\n             {%- elif states('sensor.f350_dtcs') not in ['unknown', 'unavailable'] -%}\n               {{- states('sensor.f350_dtcs') -}}\n               \n             {# If Home Assistant freshly rebooted and has no history, default to quiet. #}\n             {%- else -%}\n               System Clear\n             {%- endif -%}\n   \n           json_attributes_topic  :   \"homeassistant\u002Fwican\u002Ff350\u002Fdtcs\"\n           json_attributes_template  :   >-\n             {%- from 'ford_dtc.jinja' import get_meaning -%}\n             {%- set ns = namespace(payload='', codes=[], details=[]) -%}\n   \n             {%- if value_json is defined and value_json is mapping -%}\n               {%- for key, val in value_json.items() -%}\n                 {%- set clean_val = val | string | replace(' ', '') | upper -%}\n                 {%- set idx = clean_val.find('43') -%}\n                 {%- if idx != -1 -%}\n                   {%- set ns.payload = clean_val[idx:] -%}\n                   {%- set count = ns.payload[2:4] | int(base=16, default=0) -%}\n                   {%- if count > 0 -%}\n                     {%- for i in range(count) -%}\n                       {%- set offset = 4 + (i * 4) -%}\n                       {%- if ns.payload | length >= offset + 4 -%}\n                         {%- set dtc_hex = ns.payload[offset:offset+4] -%}\n                         {%- set first_char = dtc_hex[0] -%}\n                         {%- set prefix = {'0':'P0', '1':'P1', '2':'P2', '3':'P3', '4':'C0', '5':'C1', '6':'C2', '7':'C3', '8':'B0', '9':'B1', 'A':'B2', 'B':'B3', 'C':'U0', 'D':'U1', 'E':'U2', 'F':'U3'} -%}\n                         {%- set dtc = prefix.get(first_char, 'P0') ~ dtc_hex[1:] -%}\n                         {%- set meaning = get_meaning(dtc) | trim -%}\n                         {%- set ns.codes = ns.codes + [dtc] -%}\n                         {%- set ns.details = ns.details + [dtc ~ ': ' ~ meaning] -%}\n                       {%- endif -%}\n                     {%- endfor -%}\n                   {%- endif -%}\n                 {%- endif -%}\n               {%- endfor -%}\n             {%- endif -%}\n   \n             {# DIAGNOSTIC X-RAY ADDED TO JSON OUTPUT #}\n             {{- {\"active_codes\": ns.codes, \"descriptions\": ns.details, \"debug_payload\": ns.payload, \"debug_count\": count} | tojson -}}\n  Phase 3: The Dictionary Macro   For the YAML above to work, Home Assistant needs a dictionary file to look up the English definitions of the codes.  In your Home Assistant config directory (where configuration.yaml lives), create a folder named exactly custom_templates.  Inside that folder, create a file named ford_dtc.jinja (or name it appropriately for your car brand).  Paste your mapping macro inside it:     {%   macro get_meaning(dtc) %  }\n   {%   set dtc_map =   {\n     'U060F'  :   'Lost Communication with Mass or Volumn Air Flow Sensor A'  ,\n     'U068B'  :   'Lost Communication with Turbocharger\u002FSupercharger Inlet Pressure Sensor A'  ,\n     'P2104'  :   'Electronic Throttle Control System - Forced Idle'\n     \u002F* ... paste your entire factory list here ... *\u002F\n   } %}\n   {{   dtc_map.get(dtc  ,   'Unknown Code - Refer to Factory Service Manual')   }}\n   {%   endmacro %  }\n  Crucial Step: Restart Home Assistant completely so it registers the new .jinja file and applies the configuration.yaml changes.   Phase 4: The Dashboard UI  Finally, we build the interactive dashboard element. This uses a custom button that toggles a dropdown list of your faults on a single tap, and clears the codes on a long press.   Go to Settings > Devices & Services > Helpers and create a Toggle helper named Show F350 Codes (this creates input_boolean.show_f350_codes).  Add this YAML to your Lovelace dashboard:     type  :   vertical-stack\n   cards  :\n     # 1. THE INTERACTIVE CHECK ENGINE BUTTON\n     -   type  :   custom:button-card\n       entity  :   sensor.f350_dtcs\n       name  :   CHECK ENGINE\n       icon  :   mdi:engine\n       show_name  :   true\n       show_icon  :   true\n       \n       tap_action  :\n         # Tapping toggles the dropdown list\n         action  :   call-service\n         service  :   input_boolean.toggle\n         service_data  :\n           entity_id  :   input_boolean.show_f350_codes\n           \n       hold_action  :\n         # Long press sends Mode 04 to wipe the codes and turn off the CEL\n         action  :   call-service\n         service  :   mqtt.publish\n         service_data  :\n           # ---> BASE TX TOPIC TO CLEAR CODES \u003C---\n           topic  :   \"homeassistant\u002Fwican\u002Ff350\u002Ftx\"   \n           payload  :   \"04  \\r  \"\n           \n       styles  :\n         card  :\n           -   width  :   110px\n           -   height  :   110px\n           -   background-color  :   '#1a1a1a'\n         icon  :\n           -   width  :   50px\n         name  :\n           -   font-size  :   10px\n           -   font-weight  :   bold\n           \n       state  :\n         -   value  :   System Clear\n           color  :   '#333333'\n           styles  :\n             card  :\n               -   border  :   none\n             icon  :\n               -   color  :   '#444'\n               -   animation  :   none\n             name  :\n               -   color  :   '#444'\n  Phase 5: Home Assistant Alert Automation (Optional)  You can set up an automation to notify you (via text message or smart speakers) immediately when the truck throws a new code.     alias  :   \"F-350: New DTC Detected\"\n   description  :   Alerts when the truck throws a new diagnostic trouble code.\n   trigger  :\n     -   platform  :   state\n       entity_id  :   sensor.f350_dtcs\n   condition  :\n     -   condition  :   template\n       value_template  :   \"{{ 'Active Codes' in trigger.to_state.state }}\"\n     -   condition  :   template\n       value_template  :   \"{{ trigger.from_state.state == 'System Clear' }}\"\n   action  :\n     -   service  :   notify.notify\n       data  :\n         message  :   \"Attention: The vehicle is reporting {{ trigger.to_state.state }}.\"\n   mode  :   single\n  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":410,"path":411,"dir":381,"title":412,"description":413,"keywords":414,"body":418},"content:7.How-To-Guides:4.EV-Battery-Cells.md","\u002Fhow-to-guides\u002Fev-battery-cells","Efficiently Polling EV Cell Voltages","When monitoring an Electric Vehicle (EV), you often need to track the voltage of every individual cell in the high-voltage battery pack. In many modern EVs, this can mean tracking 90+ individual cells.",[415,416,417],"Phase 1: WiCAN Web UI Configuration","Phase 2: The MQTT Payload","Phase 3: Home Assistant Decoding (Jinja2)","  Efficiently Polling EV Battery Cell Voltages  When monitoring an Electric Vehicle (EV), you often need to track the voltage of every individual cell in the high-voltage battery pack. In many modern EVs, this can mean tracking 90+ individual cells.   The Problem:  Polling 90+ individual PIDs one by one will flood the vehicle's CAN bus, potentially causing network collisions, and it will take several seconds just to complete a single update cycle.   The Solution:  Many EVs group cell data into bulk PIDs (e.g., 32 cells per PID). Using the WiCAN Pro's forked firmware features, we can request these massive data blocks, output the raw multi-frame hex string to a single MQTT group topic, and let Home Assistant instantly slice and decode the data. This drastically reduces CAN bus traffic.   Phase 1: WiCAN Web UI Configuration  We will group three bulk PIDs together to capture all 93 cells and send them as a single JSON payload.    Access the WiCAN Pro Web UI and navigate to   Automate > Vehicle Groups .  Click   Add New Group  and configure the header:\n    Group Name:    Cell Voltages (BMS 220102 to 4)   Period:    11200  ms (Polling every ~11 seconds is plenty fast for battery degradation\u002Fbalance monitoring).   Init:    ATAL; ATSH7E4; ATCRA7EC;  (Adjust based on your specific EV's BMS header).   Group MQTT Topic:    wican\u002Fev3\u002Fcellvoltages  Add the PID Cards for your raw data blocks:\n    PID 1:    220102  |   Name:    raw01  |   Extraction:    raw  |   Destination:    MQTT_Grp   PID 2:    220103  |   Name:    raw02  |   Extraction:    raw  |   Destination:    MQTT_Grp   PID 3:    220104  |   Name:    raw03  |   Extraction:    raw  |   Destination:    MQTT_Grp    !TIP \nYou can also include standard math PIDs in this same group (like   HV_C_V_MAX ) to capture the highest and lowest cell voltages pre-calculated by the BMS.   Phase 2: The MQTT Payload  Once saved, the WiCAN Pro will broadcast a consolidated JSON payload every 11 seconds. Instead of 93 individual messages, your MQTT broker receives one highly optimized payload containing the raw multi-frame hex strings.     {\n     \"HV_C_V_MAX\"  :   4.02  ,\n     \"HV_C_V_MIN\"  :   4.02  ,\n     \"HV_C_V_MAX_NO\"  :   37  ,\n     \"HV_C_V_MIN_NO\"  :   1  ,\n     \"raw01\"  :   \"620102FFFFFFFFC9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9AAAA\"  ,\n     \"raw02\"  :   \"620103FFFFFFFFC9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9AAAA\"  ,\n     \"raw03\"  :   \"620104FFFFFFF8C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9000000AAAA\"  ,\n     \"timestamp\"  :   1778947870\n   }\n  Phase 3: Home Assistant Decoding (Jinja2)  Now, we configure Home Assistant to ingest these raw strings, slice the hex bytes, calculate the voltages, and assign them as attributes to a single sensor. The main state of the sensor will dynamically display the average cell voltage.  Add the following to your Home Assistant configuration.yaml under the mqtt: sensor: block:         - name: \"Wican EV3 HV Battery Pack\"\n         unique_id: \"sensor.wican_ev3_hv_battery_pack\"\n         state_topic: \"wican\u002Fev3\u002Fcellvoltages\"\n         unit_of_measurement: \"V\"\n         state_class: \"measurement\"\n         \n         # Calculates the average voltage across all parsed cells for the main state\n         value_template: >\n           {% set values = this.attributes.items() | selectattr('0', 'match', '^v\\\\d+') | map(attribute='1') | select('number') | list %}\n           {% if values | length > 0 %}\n             {{ (values | sum \u002F values | length) | round(3) }}\n           {% else %}\n             {{ states('sensor.wican_ev3_hv_battery_pack') | float(0) }}\n           {% endif %}\n           \n         json_attributes_topic: \"wican\u002Fev3\u002Fcellvoltages\"\n         json_attributes_template: >\n           {% if value_json is mapping %}\n             {% set ns = namespace(cells={}) %}\n             \n             {# Configuration for the three message blocks #}\n             {% set blocks = [\n               {'key': 'raw01', 'start': 1},\n               {'key': 'raw02', 'start': 33},\n               {'key': 'raw03', 'start': 65}\n             ] %}\n   \n             {% for block in blocks %}\n               {% if value_json[block.key] is defined %}\n                 {% set raw = value_json[block.key] %}\n                 {# Offset adjusted: Skipping the first 14 chars to catch the start of data #}\n                 {% set cell_data = raw[14:] %}\n                 {% for i in range(0, cell_data | length - 4, 2) %}\n                   {% set hex_byte = cell_data[i:i+2] %}\n                   {# Ignore padding 'AA' or 'FF' #}\n                   {% if hex_byte | length == 2 and hex_byte not in ['AA', 'FF'] %}\n                     {% set cell_num = block.start + (i \u002F\u002F 2) %}\n                     {% if cell_num \u003C= 93 %}\n                       {# The math formula to convert the hex byte to voltage #}\n                       {% set volt = (hex_byte | int(base=16, default=0)) \u002F 50 %}\n                       {% set key = 'v' ~ '%02d' | format(cell_num) %}\n                       {% set ns.cells = dict(ns.cells, **{key: volt | round(2)}) %}\n                     {% endif %}\n                   {% endif %}\n                 {% endfor %}\n               {% endif %}\n             {% endfor %}\n   \n             {{ dict(this.attributes, **ns.cells) | tojson }}\n           {% endif %}\n         device:\n           identifiers: \"wican-EV3\"\n           name: \"wican-EV3\"\n           model: \"wican pro\"\n           manufacturer: \"meatpi\"\n  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":420,"path":421,"dir":381,"title":422,"description":423,"keywords":424,"body":430},"content:7.How-To-Guides:5.Building_WiCAN_Pro.md","\u002Fhow-to-guides\u002Fbuilding_wican_pro","Building WiCAN Pro Firmware (Forked)","This guide provides step-by-step instructions for setting up the ESP-IDF v5.5.3 environment and compiling the wambs\u002Fwican-fw fork on Linux (Ubuntu\u002FDebian and openSUSE). We use an isolated directory approach to ensure this specific toolchain doesn't conflict with any existing ESP-IDF installations on your system.",[425,426,427,428,429],"1. Install System Prerequisites","2. Set Up ESP-IDF v5.5.3","3. Clone the WiCAN Fork","4. Build and Flash the Firmware","5. Flash to the WiCAN Pro Device.","  Building WiCAN Pro Firmware (Forked)  This guide provides step-by-step instructions for setting up the ESP-IDF v5.5.3 environment and compiling the   wambs\u002Fwican-fw  fork on Linux (Ubuntu\u002FDebian and openSUSE). We use an isolated directory approach to ensure this specific toolchain doesn't conflict with any existing ESP-IDF installations on your system.  1. Install System Prerequisites  Before downloading ESP-IDF, your Linux distribution needs several C-compilers, Python virtual environments, and USB libraries.  For Ubuntu \u002F Debian  Open your terminal and run:     sudo   apt-get   update\n   sudo   apt-get   install   -y   git   wget   flex   bison   gperf   python3   python3-pip   python3-venv   cmake   ninja-build   ccache   libffi-dev   libssl-dev   dfu-util   libusb-1.0-0\n  For openSUSE (Leap or Tumbleweed)  Open your terminal and run:     sudo   zypper   refresh\n   sudo   zypper   install   -y   git   gcc   make   wget   flex   bison   gperf   python3   python3-pip   python3-venv   cmake   ninja   ccache   dfu-util   libusb-1_0-0   libffi-devel   libopenssl-devel\n  2. Set Up ESP-IDF v5.5.3  The WiCAN Pro fork relies on ESP-IDF v5.5.3. We will install it into a dedicated ~\u002Fesp directory.  1. Create the workspace and clone ESP-IDF:  In your terminal and run:     mkdir   -p   ~\u002Fesp\n   cd   ~\u002Fesp\n   git   clone   -b   v5.5.3   --recursive   [https:\u002F\u002Fgithub.com\u002Fespressif\u002Fesp-idf.git](  https:\u002F\u002Fgithub.com\u002Fespressif\u002Fesp-idf.git  ) esp-idf-v5.5.3\n  2. Run the installation script:  This downloads the specific XTENSA toolchains and Python packages required for this version.  In your terminal and run:     cd   esp-idf-v5.5.3\n   .\u002Finstall.sh   all\n  3. Export the environment variables:  Note: You must run this command every time you open a new terminal window to compile the firmware.\nIn your terminal and run:     .   .\u002Fexport.sh\n  3. Clone the WiCAN Fork  With the ESP-IDF environment active, pull down the custom fork. The --recursive flag is critical to ensure Git pulls in all required submodules.\nIn your terminal and run:     cd   ~\u002Fesp\n   \n   git   clone   --recursive   [https:\u002F\u002Fgithub.com\u002Fwambs\u002Fwican-fw.git](  https:\u002F\u002Fgithub.com\u002Fwambs\u002Fwican-fw.git  )\n   \n   cd   wican-fw\n  4. Build and Flash the Firmware  You are now ready to compile and flash the firmware to your WiCAN Pro.  1. Clean the build environment (Recommended):  Ensures no old artifact files conflict with your current setup.\nIn your terminal and run:     idf.py   fullclean\n  2. Compile the Firmware:  The first time you run this, it will take a few minutes to compile the ESP-IDF RTOS core alongside the application code.\nIn your terminal and run:     idf.py   build\n  5. Flash to the WiCAN Pro Device.  There are three ways to flash the WiCAN Pro SW:  1. Using the WiCAN Pro System page, do a firmware update using the generated bin file  2. Flash using the WiCAN Pro safe mode  Press the button on the WiCAN Pro and plugging it to the OBD2 port, but boot the device into safe boot so you can connect to it via 192.168.0.10 (via Wifi direct connect to the device) and load the bin file  3. Flash to the Device direct via USB:  Plug your WiCAN Pro into your computer via USB. On Linux, it typically enumerates as \u002Fdev\u002FttyACM0 or \u002Fdev\u002FttyUSB0.\nPermissions Note: Ensure your Linux user is part of the dialout group to access the serial port without sudo. (sudo usermod -a -G dialout $USER and reboot\u002Fre-login).  In your terminal and run:     idf.py   -p   \u002Fdev\u002FttyACM0   flash   monitor\n  The monitor flag immediately opens a serial terminal to the device once flashing is complete, allowing you to watch the boot sequence. To exit the serial monitor, press Ctrl + ].  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":432,"path":433,"dir":381,"title":434,"description":435,"keywords":436,"body":438},"content:7.How-To-Guides:6.flow-control-fix.md","\u002Fhow-to-guides\u002Fflow-control-fix","Fix: Missing Multi-Frame Responses","How to fix dropped frames using Flow Control STmin.",[437],"Troubleshooting: Missing Multi-Frame Responses (Dropped Frames)","  Troubleshooting: Missing Multi-Frame Responses (Dropped Frames)  If you are querying a PID that returns a large, multi-frame response and notice that frames are frequently dropping or missing, the ECU might be sending the data faster than the WiCAN buffer can process it.  The Cause  By default, ELM327-based devices (including WiCAN) send   30 00 00  as the Flow Control (FC) frame. This dictates how the ECU should transmit the data:    30  = Continue to Send (CTS)   00  = Block Size 0 (Send all frames without stopping)   00  = STmin 0 (Send as fast as possible)  Because of that final   00 , the ECU blasts all frames with zero delay. If the vehicle network is busy or the response is massive, the WiCAN's buffer might not keep up.  The Fix: Set STmin in the Flow Control Frame  To fix this, you can customize the Flow Control data the WiCAN sends to force the ECU to add a small delay between each frame.  Run the following AT commands before sending your PID query to manually set the STmin (Separation Time minimum):     ATFCSH 7E8       # Set the header to the CAN ID the ECU replies on (e.g., 7E8)\n   ATFCSD 30 00 19  # Set FC frame to: CTS, BS=0, STmin=25ms (0x19)\n   ATFCSM 1         # Force WiCAN to use this custom FC instead of the default\n  STmin Milliseconds Reference  Any hex value from   0x01  to   0x7F  directly translates to that many milliseconds of delay. Start with a smaller delay like 25ms (  0x19 ) and increase it if frames are still dropping.     Hex Value  Decimal  Delay Time     0x00  0  No delay (As fast as possible)    0x01  1  1 ms    0x0A  10  10 ms    0x19  25  25 ms    0x32  50  50 ms    0x64  100  100 ms    0x7F  127  127 ms (Max of this range)  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":440,"path":441,"dir":7,"title":442,"description":7,"keywords":443,"body":445},"content:Community.md","\u002Fcommunity","Community",[444],"WiCAN OBD scanner monitors any vehicles. perfect for CAN bus hacking!","  WiCAN OBD scanner monitors any vehicles. perfect for CAN bus hacking!  ",{"id":447,"path":448,"dir":7,"title":449,"description":450,"keywords":451,"body":455},"content:Contributing.md","\u002Fcontributing","Contributing","We are using nuxt content + Docus to generate these docs.",[452,453,454],"Quick Edits","Large Edits","Icons","  Contributing to these docs  We are using   nuxt content  +   Docus  to generate these docs.  All the config to generate the site lives in the   docs  folder, and the pages themself live in   docs\u002Fcontent . To update any of these pages simple fork this repository, and update the files in the docs\u002Fcontent folder and submit a PR for approval to get your updates showing.  Quick Edits  To edit a file quickly you can just edit the markdown file on GitHub, it will prompt you to fork, commit and create a PR etc.  Large Edits  If you would like to make some major edits you can follow the below steps to preview your changes locally. This assumes you have some basic GH knowledge.   Fork the repository  Clone your fork locally  Create a new branch  Run the following commands to get it running locally    cd docs   npm i   npm run dev  Click link to open   http:\u002F\u002Flocalhost:3000  You can now run the docs locally. Make any changes you want to the markdown files, and as you save it will refresh to preview your new content.  Add and Commit your changes, and push up to your fork.  Create a PR from your feature branch to the main branch.  Icons  To add an icon to a folder, you can create a   _dir.yml  file in the folder and find an icon from   icones.js.org  See existing folders for formating",1781372441369]