Skip to content

User guide

flashg1 edited this page Apr 27, 2026 · 122 revisions

GUI display examples

Tesla style power card

https://github.com/reptilex/tesla-style-solar-power-card

image

type: custom:tesla-style-solar-power-card
name: Power usage
show_w_not_kw: 1

# 3 flows between bubbles
grid_to_house_entity: sensor.grid_power_import
generation_to_grid_entity: sensor.grid_power_export
generation_to_house_entity: sensor.solar_power_consumption

# Optional appliance 1: EV
appliance1_consumption_entity: sensor.tesla23m3_home_charger_power
appliance1_extra_entity: sensor.battery

# Optional appliance 2: hot water
appliance2_consumption_entity: sensor.hotwater_bottom_element_power
appliance2_extra_entity: sensor.hotwater_top_element_power

# Optional 3 main bubble icons for clickable entities
grid_entity: sensor.main_power_net
grid_extra_entity: sensor.grid_power_net_1_minute_moving_average
house_entity: sensor.envoy_[YourEnvoyId]_current_power_consumption
# Watch this for car charge limit change
house_extra_entity: number.charge_limit
generation_entity: sensor.solar_power_production
generation_extra_entity: sensor.solar_power_production_5_minute_moving_average

Charge control

image

Charge

Switch on to start charging, or switch off to stop charging.

Run state

Possible run states are: Starting, Initialising, Charging, Paused, Ending, Ended

Fast charge mode

Charge at max current. Default is to charge using surplus solar electricity.

Next charge time

This is used internally by SolarCharger to set the next charge session start time to achieve just-in-time SOC set by the charge limit and end time. It is used in conjunction with "Schedule charge" to schedule time for next charge session. See weekly charge schedule.

Priority

Highest charge priority = 0
Lowest charge priority = 100
Default = 5

Priority defines the order in which power is allocated to the devices, and can be any integer between 0 and 100. Power is allocated to devices in the order of highest priority to lowest priority. Deallocation to free up power occurs in reverse order, ie. from lowest priority to highest priority. Devices with the same priority will be allocated power according to their power allocation weight.

Power allocation weight

Used to calculate allocated power. Power allocation weight is used when there are more than one charger and need to allocate power to each charger according to the weight. Value must be 1 or greater in order for device to participate in power allocation. Set value to 0 to disable allocation for device. See allocated power for formula.

Allocated power

Portion of surplus power allocated to charger at moment in time.

Allocated power = Net power * (Allocation weight / Total weight)

Consumed power

Power consumed by charger.

type: entities
entities:
  - entity: switch.solarcharger_tesla_custom_tesla23m3_charge
    name: Charge
  - entity: sensor.solarcharger_tesla_custom_tesla23m3_run_state
    name: Run state
  - entity: switch.solarcharger_tesla_custom_tesla23m3_fast_charge_mode
    name: Fast charge mode
  - entity: datetime.solarcharger_tesla_custom_tesla23m3_next_charge_time
    name: Next charge time
  - entity: number.solarcharger_tesla_custom_tesla23m3_charger_priority
    name: Priority
  - entity: number.solarcharger_tesla_custom_tesla23m3_charger_power_allocation_weight
    name: Power allocation weight
  - entity: sensor.solarcharger_tesla_custom_tesla23m3_charger_allocated_power
    name: Allocated power
  - entity: sensor.solarcharger_tesla_custom_tesla23m3_consumed_power
    name: Consumed power
title: Tesla23m3 control
show_header_toggle: false

Charge config

Settings > Devices & services > SolarCharger > Your charger > Configuration section

image

Max current

Set the charger max current.

Min current

Set the charger minimum current. The charge current will not fall below this value. Entity can be overridden in Settings (cog wheel), please see example.

Min workable current

Specify charger minimum workable current in Ampere. If available current falls below the charger minimum workable current, the charge current will be set to 0A. OCPP charger may require the minimum workable current to be set to 6A.

Power monitor duration

Uses 10-minute moving average to determine whether or not to pause charging when available current is below minimum workable current, or resume charging when available current is 10% above minimum workable current. Charger is switched off when in paused state. Default is 10 minutes. Set 0 minutes to disable this function.

This function requires "Min workable current" to be set to a value other than zero.

This function is automatically disabled when any of the following conditions are true.

  • "Fast charge mode" is on.
  • "Calibrate max charge speed" is on.
  • "Min current" is equal to "Max current".
  • Charge schedule has charge end time set, and needs to charge at max current to achieve the required SOC at charge end time.

Device presence sensor

Select the ping ICMP entity for detecting presence of device. Please see setup instructions and this for other possible entities that can be used.

Presence trigger

Enable or disable the use of ping ICMP entity to detect presence of device and update HA with latest data. Device presence sensor must have been defined before enabling this trigger.

Plugin trigger

Enable or disable the act of plugging in the charger to trigger start of charge session.

Sun trigger

Enable or disable the use of sunrise start elevation to trigger start of charge session, and sunset end elevation trigger to stop the session. If disabled, SolarCharger will run irrespective of time of day once started until charge limit is reached. The start and end elevations are defined in global defaults.

Schedule charge

Enable or disable the use of weekly schedule and charge limit settings. This is used in conjunction with "Plug-in trigger" and "Sun trigger" to set charge limit and schedule charge according to weekly schedule. If disabled, the charger will use existing charge limit already set for the device, and charges from solar only unless "Fast charger mode" is set. See weekly charge schedule.

Reduce charge limit difference

Look ahead to reduce charge limit difference between days. Automatically charge more today if today has no charge end time and next 3 days have much higher charge limit. See Daily car charge limit settings.

Poll charger update

Enable this if third-party charger integration requires polling for updates and does not provide a polling button.

Max charge speed

This is used to calculate the time required to charge the device for just-in-time charge scheduling.

Calibrate max charge speed

Charges at max current until there is a 4% increase in current state of charge (SOC). The collected data will be used to set the max charge speed (%/hour). Note that SOC sensor entity must be defined and its starting value must be less than 92% in order for this function to work.

type: entities
entities:
  - entity: number.solarcharger_tesla_custom_tesla23m3_charger_max_current
    name: Max current
  - entity: number.solarcharger_tesla_custom_tesla23m3_charger_min_current
    name: Min current
  - entity: number.solarcharger_tesla_custom_tesla23m3_charger_min_workable_current
    name: Min workable current
  - entity: number.solarcharger_global_defaults_power_monitor_duration
    name: Power monitor duration
  - entity: select.solarcharger_tesla_custom_tesla23m3_device_presence_sensor
    name: Device presence sensor
  - entity: switch.solarcharger_tesla_custom_tesla23m3_presence_trigger
    name: Presence trigger
  - entity: switch.solarcharger_tesla_custom_tesla23m3_plugin_trigger
    name: Plugin trigger
  - entity: switch.solarcharger_tesla_custom_tesla23m3_sun_trigger
    name: Sun trigger
  - entity: switch.solarcharger_tesla_custom_tesla23m3_schedule_charge
    name: Schedule charge
  - entity: switch.solarcharger_global_defaults_reduce_charge_limit_difference
    name: Reduce charge limit difference
  - entity: switch.solarcharger_tesla_custom_tesla23m3_poll_charger_update
    name: Poll charger update
  - entity: number.solarcharger_tesla_custom_tesla23m3_charger_max_speed
    name: Max charge speed
  - entity: switch.solarcharger_tesla_custom_tesla23m3_calibrate_max_charge_speed
    name: Calibrate max charge speed
title: Tesla23m3 config
show_header_toggle: false

OCPP specific config

Charge profile ID (default=1)

Set the profile ID used to set the charge current. Default is 1. If the charger fails to set the charge current, you might consider using a different charge profile ID or changing the stack level. You might also consider clearing all existing charge profiles in the charger provided it is possible for you to recreate those profiles in case you need them again.

Charge profile stack level (default=0)

Set the stack level (priority) of the charge profile in case it is required to work with existing charge profiles. Set to -1 to use the maximum stack level (highest priority).

Charge limit 7 days schedule

The charge limit and end time combination define the time the car needs to be ready with the specified SOC. To use this function, please enable "Schedule charge". Note that SOC sensor is required to estimate the charge start time if charge end time is set.

If charge end time is set to a value other than midnight, SolarCharger will try to achieve SOC set by the charge limit using surplus solar first unless there is not enough time, in which case it will charge at maximum current to reach charge limit. Max charge speed must have been calibrated in order for this to work.

Set charge end time to midnight (ie. 12:00:00 AM) to disable scheduling for the day, in which case SolarCharger will aim for the charge limit using surplus solar only and without guarantee of reaching charge limit.

Note that your HA login profile has configuration for time format, ie. either 24 or 12 hour time format.

Charge schedule

image

Press the "Reset charge limit and time" button to reset to default values when required.

Please see here on how to set the default charge limit values.

In order to display the card properly, removed left margins for icon and name in order to fit time into 2-column Grid card, ie.

square: false
type: grid
cards:
  - type: entities
    entities:
      - entity: number.solarcharger_global_defaults_charge_limit_monday
        name: Monday
        card_mod:
          style:
            hui-generic-entity-row:
              $: |
                state-badge {
                  display: none;
                }
                .info {
                  margin-left:0 !important;
                }      
      - entity: number.solarcharger_global_defaults_charge_limit_tuesday
        name: Tuesday
        card_mod:
          style:
            hui-generic-entity-row:
              $: |
                state-badge {
                  display: none;
                }
                .info {
                  margin-left:0 !important;
                }      
      - entity: number.solarcharger_global_defaults_charge_limit_wednesday
        name: Wednesday
        card_mod:
          style:
            hui-generic-entity-row:
              $: |
                state-badge {
                  display: none;
                }
                .info {
                  margin-left:0 !important;
                }      
      - entity: number.solarcharger_global_defaults_charge_limit_thursday
        name: Thursday
        card_mod:
          style:
            hui-generic-entity-row:
              $: |
                state-badge {
                  display: none;
                }
                .info {
                  margin-left:0 !important;
                }      
      - entity: number.solarcharger_global_defaults_charge_limit_friday
        name: Friday
        card_mod:
          style:
            hui-generic-entity-row:
              $: |
                state-badge {
                  display: none;
                }
                .info {
                  margin-left:0 !important;
                }      
      - entity: number.solarcharger_global_defaults_charge_limit_saturday
        name: Saturday
        card_mod:
          style:
            hui-generic-entity-row:
              $: |
                state-badge {
                  display: none;
                }
                .info {
                  margin-left:0 !important;
                }      
      - entity: number.solarcharger_global_defaults_charge_limit_sunday
        name: Sunday
        card_mod:
          style:
            hui-generic-entity-row:
              $: |
                state-badge {
                  display: none;
                }
                .info {
                  margin-left:0 !important;
                }      
      - entity: button.solarcharger_global_defaults_reset_charge_limit_and_time
        name: Reset charge limit and time
        card_mod:
          style:
            hui-generic-entity-row:
              $: |
                state-badge {
                  display: none;
                }
                .info {
                  margin-left:0 !important;
                }      
    show_header_toggle: false
    title: Limit
  - type: entities
    entities:
      - entity: time.solarcharger_global_defaults_charge_endtime_monday
        name: Monday
        card_mod:
          style:
            hui-generic-entity-row:
              $: |
                state-badge {
                  display: none;
                }
                .info {
                  margin-left:0 !important;
                }      
                div {
                  display: none;
                }
                .info {
                  margin-left:0 !important;
                }      
      - entity: time.solarcharger_global_defaults_charge_endtime_tuesday
        name: Tuesday
        card_mod:
          style:
            hui-generic-entity-row:
              $: |
                state-badge {
                  display: none;
                }
                .info {
                  margin-left:0 !important;
                }      
                div {
                  display: none;
                }
                .info {
                  margin-left:0 !important;
                }      
      - entity: time.solarcharger_global_defaults_charge_endtime_wednesday
        name: Wednesday
        card_mod:
          style:
            hui-generic-entity-row:
              $: |
                state-badge {
                  display: none;
                }
                .info {
                  margin-left:0 !important;
                }      
                div {
                  display: none;
                }
                .info {
                  margin-left:0 !important;
                }      
      - entity: time.solarcharger_global_defaults_charge_endtime_thursday
        name: Thursday
        card_mod:
          style:
            hui-generic-entity-row:
              $: |
                state-badge {
                  display: none;
                }
                .info {
                  margin-left:0 !important;
                }      
                div {
                  display: none;
                }
                .info {
                  margin-left:0 !important;
                }      
      - entity: time.solarcharger_global_defaults_charge_endtime_friday
        name: Friday
        card_mod:
          style:
            hui-generic-entity-row:
              $: |
                state-badge {
                  display: none;
                }
                .info {
                  margin-left:0 !important;
                }      
                div {
                  display: none;
                }
                .info {
                  margin-left:0 !important;
                }      
      - entity: time.solarcharger_global_defaults_charge_endtime_saturday
        name: Saturday
        card_mod:
          style:
            hui-generic-entity-row:
              $: |
                state-badge {
                  display: none;
                }
                .info {
                  margin-left:0 !important;
                }      
                div {
                  display: none;
                }
                .info {
                  margin-left:0 !important;
                }      
      - entity: time.solarcharger_global_defaults_charge_endtime_sunday
        name: Sunday
        card_mod:
          style:
            hui-generic-entity-row:
              $: |
                state-badge {
                  display: none;
                }
                .info {
                  margin-left:0 !important;
                }      
                div {
                  display: none;
                }
                .info {
                  margin-left:0 !important;
                }      
    show_header_toggle: true
    title: End time
columns: 2
title: Charge schedule

Default charge limits

The default charge limit values are set here, ie.

Settings > Devices & services > SolarCharger > Global defaults > Configuration section > Monday default charge limit, etc.

Press the "Reset charge limit and time" button to apply the defaults when required.

image
type: entities
entities:
  - entity: number.solarcharger_global_defaults_default_charge_limit_monday
    name: Monday default charge limit
  - entity: number.solarcharger_global_defaults_default_charge_limit_tuesday
    name: Tuesday default charge limit
  - entity: number.solarcharger_global_defaults_default_charge_limit_wednesday
    name: Wednesday default charge limit
  - entity: number.solarcharger_global_defaults_default_charge_limit_thursday
    name: Thursday default charge limit
  - entity: number.solarcharger_global_defaults_default_charge_limit_friday
    name: Friday default charge limit
  - entity: number.solarcharger_global_defaults_default_charge_limit_saturday
    name: Saturday default charge limit
  - entity: number.solarcharger_global_defaults_default_charge_limit_sunday
    name: Sunday default charge limit
title: Default charge limits

Diagnostic

image

Instance count

1 = Charger is running.
0 = Charger stopped.

Share allocation

Share allocation is only relevant when instance count is 1.

1 = Charger is participating in power allocation.
0 = Charger paused and receives theoretical power allocation as if it is participating in real power allocation, when in fact its share has already been distributed among non-paused chargers. The theoretical power allocation is used by the charger to determine if there is enough power to meet minimum current requirement should it exit the paused state.

Pause count

The total number of pauses per charge session. The number is reset at the start of each charge session.

Average pause duration

Average pause duration per charge session. The number is reset at the start of each charge session.

Last pause duration

Shows running pause duration. The number is reset at the start of each charge session.

type: entities
entities:
  - entity: sensor.solarcharger_tesla_custom_tesla23m3_instance_count
    name: Instance count
  - entity: sensor.solarcharger_tesla_custom_tesla23m3_share_allocation
    name: Share allocation
  - entity: sensor.solarcharger_tesla_custom_tesla23m3_pause_count
    name: Pause count
  - entity: sensor.solarcharger_tesla_custom_tesla23m3_average_pause_duration
    name: Average pause duration
  - entity: sensor.solarcharger_tesla_custom_tesla23m3_last_pause_duration
    name: Last pause duration
title: Tesla23m3 diagnostic

Automation cannot be triggered

The Tesla triggers and conditions are slow to update unless car is polled often. Polling too often can drain the car battery. So might have to wait up to 15 minutes for the conditions to refresh and the triggers to work. Please see below for a number of possible work-arounds.

Possible work-arounds:

  • Plug in the charger and then press the "Wake up" button follow by the "Force data update" button.
  • Install the "Ping" integration to ping car, then assign the ping entity to "Device presence sensor" and turn on "Presence trigger" in local device config. This will wake up car and force update HA on first ping response.

Please see this for more info.

Use "Ping" to detect car and update HA to get latest status

Install the "Ping (ICMP)" integration, and then configure it to ping the static IP address of your car. Don't use the car host name since HA can take up to 10 minutes to resolve the host name. Assign the ping entity to "Device presence sensor" and turn on "Presence trigger" in local device config. The first ping response will wake up car and force update HA on latest status. Car will respond to ping as long as car is awake. It will only retry 15 times to update HA to see if the charger is connected or switched on, sleeping 60 seconds before each retry.

The following automation is no longer required and is here for your information only. It has been replaced by the "Presence trigger".

alias: [YourEvName] presence update
description: "Wake up car and force update HA if charger is plugged in within 15 minutes of first ping response."
triggers:
  - trigger: state
    entity_id:
      - binary_sensor.[YourEvIpAddress]
    to: "on"
conditions:
  - condition: state
    entity_id: binary_sensor.[YourEvChargerPluggedInSensor]
    state: "off"
actions:
  - action: button.press
    metadata: {}
    data: {}
    target:
      entity_id: button.wake_up
  - delay:
      hours: 0
      minutes: 0
      seconds: 40
      milliseconds: 0
  - repeat:
      sequence:
        - action: button.press
          metadata: {}
          data: {}
          target:
            entity_id: button.force_data_update
        - delay:
            hours: 0
            minutes: 1
            seconds: 0
            milliseconds: 0
      until:
        - condition: or
          conditions:
            - condition: state
              entity_id: binary_sensor.[YourEvChargerPluggedInSensor]
              state: "on"
            - condition: template
              value_template: "{{ repeat.index >= 15 }}"
mode: single

Please note that car can sometimes forget the WIFI network, in which case re-enter the WIFI password to join the network so that ping can work again.