Contribute configuration for HTTP URL Thing to support Bender CC613 Wallbox

Hello,

I used the HTTP URL Thing to link in my Bender CC613 charge controller of my wallbox. Is there a possibility to contribute this to OpenHAB?

The configuration of thing is as follows:

// RestAPI documentation: http://wallbox-1/legacy/doc/doc_3

Thing http:url:wallbox-1 "Bender CC613" @ "Garage" [
    baseURL="http://wallbox-1/rest",
    refresh=5,
    contentType="text/plain"
] {
    Channels:
        Type string : conn_state "conn_state" [ stateExtension="conn_state" ]
        // event/conn_state
        Type string : auth_state "auth_state" [ stateExtension="auth_state" ]
        // event/auth_state
        Type string : auth_uid "auth_uid" [ stateExtension="auth_uid" ]
        // event/auth_uid
        Type number : time_since_charging_start "time_since_charging_start" [ stateExtension="time_since_charging_start" ]
        Type number : meter_wh "meter_wh" [ stateExtension="meter_wh" ]
        // event/meter_wh
        Type number : power_w "power_w" [ stateExtension="power_w" ]
        // event/power_w
        Type number : transaction_wh "transaction_wh" [ stateExtension="transaction_wh" ]
        // event/transaction_wh
        Type string : display_text "display_text" [ stateExtension="display_text" ]
        // event/display_text
        Type string : cp_id "cp_id" [ stateExtension="cp_id" ]
        Type string : ocpp_state "ocpp_state" [ stateExtension="ocpp_state" ]
        Type string : type2_state "type2_state" [ stateExtension="type2_state" ]
        Type string : type2_proximity "type2_proximity" [ stateExtension="type2_proximity" ]
        Type number : sig_current "sig_current" [ stateExtension="sig_current" ]
        Type string : schuko_state "schuko_state" [ stateExtension="schuko_state" ]
        Type string : backend_conn_state "backend_conn_state" [ stateExtension="backend_conn_state" ]
        Type string : free_charging "free_charging" [ stateExtension="free_charging" ]
        Type string : slave_state "slave_state" [ stateExtension="slave_state" ]
        Type string : ocpp_meter_cfg "ocpp_meter_cfg" [ stateExtension="ocpp_meter_cfg" ]
        Type string : ocpp_meter_serial "ocpp_meter_serial" [ stateExtension="ocpp_meter_serial" ]
        Type string : current_a "current_a" [ stateExtension="current_a" ]
        Type number : energy_man_current "energy_man_current" [ stateExtension="energy_man_current" ]
        Type string : ambient_temp "ambient_temp" [ stateExtension="ambient_temp" ]
        Type string : firmware_ver "firmware_ver" [ stateExtension="firmware_ver" ]
        Type string : cc_serial_n "cc_serial_n" [ stateExtension="cc_serial_n" ]
        Type number : con_cycles_schuko "con_cycles_schuko" [ stateExtension="con_cycles_schuko" ]
        Type number : con_cycles_type2 "con_cycles_type2" [ stateExtension="con_cycles_type2" ]
        Type number : max_current "max_current" [ stateExtension="max_current" ]
        Type string : rcmb_state "rcmb_state" [ stateExtension="rcmb_state" ]
        // event/rcmb_state
        Type string : rcmb_max "rcmb_max" [ stateExtension="rcmb_max" ]
        Type string : rcmb_values "rcmb_values" [ stateExtension="rcmb_values" ]
        Type string : cable_attached "cable_attached" [ stateExtension="cable_attached" ]
        Type string : schuko_cfg "schuko_cfg" [ stateExtension="schuko_cfg" ]
        Type string : rcd_state "rcd_state" [ stateExtension="rcd_state" ]
        // event/rcd_state
        Type string : mcb_type2_state "mcb_type2_state" [ stateExtension="mcb_type2_state" ]
        // event/mcb_type2_state
        Type string : mcb_schuko_state "mcb_schuko_state" [ stateExtension="mcb_schuko_state" ]
        // event/mcb_schuko_state
        Type string : cp_vendor "cp_vendor" [ stateExtension="cp_vendor" ]
        Type string : errors "errors" [ stateExtension="errors" ]
        Type string : cp_model "cp_model" [ stateExtension="cp_model" ]
        Type string : full_state "full_state" [ stateExtension="full_state" ]
        // event/full_state
//        Type string : dev_dbg "dev_dbg" [ stateExtension="dev_dbg" ]
//        Type string : ocpp "ocpp" [ stateExtension="ocpp" ]
//        Type string : ps "ps" [ stateExtension="ps" ]
}

The following is the corresponding items configuration:

String Wallbox1_conn_state "Wallbox-1 - Connection State" (gWallbox1) ["Status"] {
    channel="http:url:wallbox-1:conn_state" }
String Wallbox1_auth_state "Wallbox-1 - Authorization State" (gWallbox1) ["Status"] {
    channel="http:url:wallbox-1:auth_state" }
String Wallbox1_auth_uid "Wallbox-1 - Authorization UID" (gWallbox1) ["Status"] {
    channel="http:url:wallbox-1:auth_uid" }
Number:Time Wallbox1_time_since_charging_start "Wallbox-1 - Time Since Charging Start [%d s]" (gWallbox1) ["Measurement", "Duration"] {
    channel="http:url:wallbox-1:time_since_charging_start" }
Number:Energy Wallbox1_meter_wh "Wallbox-1 - Meter Energy Total [%d Wh]" (gWallbox1) ["Measurement", "Energy"] {
    channel="http:url:wallbox-1:meter_wh" }
Number:Power Wallbox1_power_w "Wallbox-1 - Power [%d W]" (gWallbox1) ["Measurement", "Power"] {
    channel="http:url:wallbox-1:power_w" }
Number:Energy Wallbox1_transaction_wh "Wallbox-1 - Energy Last Transaction [%d Wh]" (gWallbox1) ["Measurement", "Energy"] {
    channel="http:url:wallbox-1:transaction_wh" }
String Wallbox1_display_text "Wallbox-1 - Display Text" (gWallbox1) ["Status"] {
    channel="http:url:wallbox-1:display_text" }
String Wallbox1_cp_id "Wallbox-1 - ChargePoint ID" (gWallbox1) ["Status"] {
    channel="http:url:wallbox-1:cp_id" }
String Wallbox1_ocpp_state "Wallbox-1 - OCPP State" (gWallbox1) ["Status"] {
    channel="http:url:wallbox-1:ocpp_state" }
String Wallbox1_type2_state "Wallbox-1 - Type2 State [MAP(bender_type2_state.map):%s]" (gWallbox1) ["Status"] {
    channel="http:url:wallbox-1:type2_state" }
String Wallbox1_type2_proximity "Wallbox-1 - Type2 Proximity" (gWallbox1) ["Status"] {
    channel="http:url:wallbox-1:type2_proximity" }
Number:ElectricCurrent Wallbox1_sig_current "Wallbox-1 - Signaled Current [%d A]" (gWallbox1) ["Setpoint", "Current"] {
    channel="http:url:wallbox-1:sig_current" }
String Wallbox1_schuko_state "Wallbox-1 - Schuko State" (gWallbox1) ["Status"] {
    channel="http:url:wallbox-1:schuko_state" }
String Wallbox1_backend_conn_state "Wallbox-1 - Backend Connection State" (gWallbox1) ["Status"] {
    channel="http:url:wallbox-1:backend_conn_state" }
String Wallbox1_free_charging "Wallbox-1 - Free Charging" (gWallbox1) ["Status"] {
    channel="http:url:wallbox-1:free_charging" }
String Wallbox1_slave_state "Wallbox-1 - Slave State" (gWallbox1) ["Status"] {
    channel="http:url:wallbox-1:slave_state" }
String Wallbox1_ocpp_meter_cfg "Wallbox-1 - OCPP Meter Configuration [MAP(bender_ocpp_meter_cfg.map):%s]" (gWallbox1) ["Status"] {
    channel="http:url:wallbox-1:ocpp_meter_cfg" }
String Wallbox1_ocpp_meter_serial "Wallbox-1 - OCPP Meter Serial" (gWallbox1) ["Status"] {
    channel="http:url:wallbox-1:ocpp_meter_serial" }
String Wallbox1_current_a_str "Wallbox-1 - Current" (gWallbox1) ["Measurement"] {
    channel="http:url:wallbox-1:current_a" }
Number:ElectricCurrent Wallbox1_energy_man_current "Wallbox-1 - Energy Manager Current [%d A]" (gWallbox1) ["Status", "Current"] {
    channel="http:url:wallbox-1:energy_man_current" }
String Wallbox1_ambient_temp_str "Wallbox-1 - Ambient Temperature [%s °C]" (gWallbox1) ["Measurement", "Temperature"] {
    channel="http:url:wallbox-1:ambient_temp" }
String Wallbox1_firmware_ver "Wallbox-1 - Firmware Version" (gWallbox1) ["Status"] {
    channel="http:url:wallbox-1:firmware_ver" }
String Wallbox1_cc_serial_n "Wallbox-1 - Controller serial number" (gWallbox1) ["Status"] {
    channel="http:url:wallbox-1:cc_serial_n" }
Number:Dimensionless Wallbox1_con_cycles_schuko "Wallbox-1 - Contactor Cycles Schuko" (gWallbox1) ["Status"] {
    channel="http:url:wallbox-1:con_cycles_schuko" }
Number:Dimensionless Wallbox1_con_cycles_type2 "Wallbox-1 - Contactor Cycles Type2" (gWallbox1) ["Status"] {
    channel="http:url:wallbox-1:con_cycles_type2" }
Number:ElectricCurrent Wallbox1_max_current "Wallbox-1 - Maximum Current [%d A]" (gWallbox1) ["Status", "Current"] {
    channel="http:url:wallbox-1:max_current" }
String Wallbox1_rcmb_state "Wallbox-1 - RCMB/FI State" (gWallbox1) ["Status"] {
    channel="http:url:wallbox-1:rcmb_state" }
String Wallbox1_rcmb_max_str "Wallbox-1 - RCMB/FI Last Transaction Maximum" (gWallbox1) ["Measurement"] {
    channel="http:url:wallbox-1:rcmb_max" }
String Wallbox1_rcmb_values_str "Wallbox-1 - RCMB/FI Current Values" (gWallbox1) ["Measurement"] {
    channel="http:url:wallbox-1:rcmb_values" }
String Wallbox1_cable_attached "Wallbox-1 - Cable Attached" (gWallbox1) ["Status"] {
    channel="http:url:wallbox-1:cable_attached" }
String Wallbox1_schuko_cfg "Wallbox-1 - Schuko Configuration" (gWallbox1) ["Status"] {
    channel="http:url:wallbox-1:schuko_cfg" }
String Wallbox1_rcd_state "Wallbox-1 - RCD/FI State" (gWallbox1) ["Status"] {
    channel="http:url:wallbox-1:rcd_state" }
String Wallbox1_mcb_type2_state "Wallbox-1 - MCB/LS Type2 State" (gWallbox1) ["Status"] {
    channel="http:url:wallbox-1:mcb_type2_state" }
String Wallbox1_mcb_schuko_state "Wallbox-1 - MCB/LS Schuko State" (gWallbox1) ["Status"] {
    channel="http:url:wallbox-1:mcb_schuko_state" }
String Wallbox1_cp_vendor "Wallbox-1 - ChargePoint Vendor" (gWallbox1) ["Status"] {
    channel="http:url:wallbox-1:cp_vendor" }
String Wallbox1_errors "Wallbox-1 - Errors" (gWallbox1) ["Status"] {
    channel="http:url:wallbox-1:errors" }
String Wallbox1_cp_model "Wallbox-1 - ChargePoint Model" (gWallbox1) ["Status"] {
    channel="http:url:wallbox-1:cp_model" }
//String Wallbox1_full_state "Wallbox-1 - Full State" (gWallbox1) ["Status"] {
//    channel="http:url:wallbox-1:full_state" }
//String Wallbox1_dev_dbg "Wallbox-1 - Development/Debug" (gWallbox1) ["Status"] {
//    channel="http:url:wallbox-1:dev_dbg" }
//String Wallbox1_ocpp "Wallbox-1 - OCPP" (gWallbox1) ["Status"] {
//    channel="http:url:wallbox-1:ocpp" }
//String Wallbox1_ps "Wallbox-1 - PS" (gWallbox1) ["Status"] {
//    channel="http:url:wallbox-1:ps" }

String Wallbox1_conn_state_simple "Wallbox-1 - Connection State (Simple) [MAP(bender_conn_state_simple.map):%s]" (gWallbox1) ["Status"] {
    channel="http:url:wallbox-1:conn_state" }
Number:ElectricCurrent Wallbox1_current_a_L1 "Wallbox-1 - Current - L1 [%s A]" (gWallbox1) ["Measurement", "Current"]
Number:ElectricCurrent Wallbox1_current_a_L2 "Wallbox-1 - Current - L2 [%s A]" (gWallbox1) ["Measurement", "Current"]
Number:ElectricCurrent Wallbox1_current_a_L3 "Wallbox-1 - Current - L3 [%s A]" (gWallbox1) ["Measurement", "Current"]
Number:Temperature Wallbox1_ambient_temp "Wallbox-1 - Ambient Temperature [%.2f °C]" (gWallbox1) ["Measurement", "Temperature"]
Number:ElectricCurrent Wallbox1_rcmb_max_rms "Wallbox-1 - RCMB/FI Last Transaction Maximum - RMS [%.1f mA]" (gWallbox1) ["Measurement", "Current"]
Number:ElectricCurrent Wallbox1_rcmb_max_dc "Wallbox-1 - RCMB/FI Last Transaction Maximum - DC [%.1f mA]" (gWallbox1) ["Measurement", "Current"]
Number:ElectricCurrent Wallbox1_rcmb_values_rms "Wallbox-1 - RCMB/FI Current Values - RMS [%.1f mA]" (gWallbox1) ["Measurement", "Current"]
Number:ElectricCurrent Wallbox1_rcmb_values_dc "Wallbox-1 - RCMB/FI Current Values - DC [%.1f mA]" (gWallbox1) ["Measurement", "Current"]

Currently I’m only reading the status. But in the future, I’ll extend it to load my vehicle dependent on photovoltaic power available.

Bye,
Tobias

2 Likes

In the meantime I also wrote a thing and an item configuration for the Modbus TCP access to the Bender CC613 controller. The CC613 provides register “#1000 Hems Current Limit (A)” that allows to set the maximum current the vehicle should load with. I wrote a rule to continuously set this register based on photovoltaic energy production and the building’s excessive energy available. This increases the own generated energy usage from photovoltaic system (“Eigenverbrauch” in German) by only consuming energy, when it’s available excessive (“PV-Überschussladen” in German).

I uploaded all reference configurations to GitHub here: GitHub - tobylorenz/openhab-config: OpenHAB reference configuration (things, transformations, items, rules)

Hi,
I also would like to get a Bender CC613 based wallbox.
Are you able to read the SOC (State of Charge) of your car over the PLC Communication of the Bender?

Is this available over Modbus Register?

This would be the main advantage over all other Wallboxes out there.

Thanks a lot in advance for your reply!

Hi,

at least the wallbox supports the protocol (ISO 15118) to the vehicle. So I’m confident that the SOC can be read.

However my vehicle doesn’t support it, so I’m not able to confirm it.

Bye
Tobias

Unfortunately ISO 15118 does not transmit the SoC in this scenario: ISO 15118 transmits the SoC only in DC-charging mode (i.e. with “Fast chargers”; Home wallboxes always use AC, otherwise they would cost a lot more)
The Porsche Taycan with the Porsche Mobile Charger Connect is the only combination of vehicle and charging equipment I know of that can show the SoC using the ISO15118 connection (without need for a separate LTE connection to the car or manufacturer web page)

A “standard” ISO15118 wallbox may support this in the future with a newer revision of the ISO15118 standard (released earlier this year, ISO15118-20, “dash-twenty”), but don’t expect this in 2022 or even (early) 2023.
As a side note: EVCC uses the car’s LTE connection to the car manufacturer’s backend to retrieve the SoC from the backend. It does not get this information from the Wallbox.

Thank you both for your reply!

Sad to hear, that there seems to be only one car/wallbox combination in the year 2022 which exchange the SOC directly.

I hope that many cars will adopt the new ISO15118-20 but I guess only cars coming to market 2023 or later will get this feature