Heidelberg Energy Control, keine Verbindung

Für welche Projekte verwendet Ihr OpenHAB? Was habt Ihr automatisiert? Stellt eure Projekte hier vor.

Moderatoren: Cyrelian, seppy

Antworten
Tobii
Beiträge: 70
Registriert: 18. Sep 2020 19:43
Answers: 0

Heidelberg Energy Control, keine Verbindung

Beitrag von Tobii »

Hallo,

wir haben uns die Heidelberg Energy Control gekauft. Verbunden habe ich die Box per Modbus mit einem USB Adapter, der in meinem Rapsberry angesteckt ist. Das Auslesen der Daten funktioniert eigentlich sehr gut, zumindest glaube ich das.

Daten die ausgelesen werden:
- Sonnenspeicher, habe das Sonnenbinding installiert und daraus erhalte ich den PV Überschuss
- mit dem Modbus lese ich die unten anstehenden Daten aus (Bild)
IMG_2664.jpg
IMG_2666.jpg
Alle Modbus Things sind verbunden und werden mir in Openhab als grün dargestellt.
Nun zu meinem Problem. Trotz grüner Verbindungen will das Auto nicht laden. Weder bei 3kw Überschuss noch bei 6 oder 7kw Überschuss. Beim Einstecken bringt mir das Auto den Fehler, dass es ein Problem erkannt hat und ich die Einstellung prüfen soll.

Das Laden mit der Box ist ohne Openhab sehr gut möglich, das funktioniert also.


Meine Regel:

Code: Alles auswählen

rule "PV-Überschussladen Sonnen"
when
    Item Sonnen_PVProduction changed or
    Item Sonnen_Consumption changed or
    Time cron "0 * * * * ?"  // jede volle Minute für Watchdog
then
    // Überschuss berechnen: PV-Produktion - Hausverbrauch
    val pvProduction = Sonnen_PVProduction.state as Number
    val consumption = Sonnen_Consumption.state as Number
    val excess = pvProduction - consumption

    // Überschuss in Item speichern
    Sonnen_Ueberschuss.postUpdate(excess)

    // Wallbox nur einschalten, wenn Überschuss > 0
    if (excess > 0) {
        Wallbox_EnableCharging.sendCommand(ON)

        // 1-phasig: Strom A = Überschuss / Spannung
        val voltage = 230
        var setCurrent = (excess / voltage).intValue

        // Begrenzung auf Max/Min
        val maxCurrent = 16
        if(setCurrent > maxCurrent) setCurrent = maxCurrent
        if(setCurrent < 6) setCurrent = 6

        WB_RTUV_MaximumCurrent.sendCommand(setCurrent)
        logInfo("wallbox", "PV-Überschuss: " + excess + " W, Lade-Strom gesetzt: " + setCurrent + " A")
    } else {
        Wallbox_EnableCharging.sendCommand(OFF)
        WB_RTUV_MaximumCurrent.sendCommand(0)
        logInfo("wallbox", "Kein Überschuss – Wallbox deaktiviert")
    }

    // Watchdog / StandbyControl senden, damit Box aktiv bleibt
    WB_RTUV_StandbyControl.sendCommand(1)
end

Zum Zeitpunkt des Screenshots war das Auto verbunden, es hat aber nicht geladen.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Benutzeravatar
udo1toni
Beiträge: 15333
Registriert: 11. Apr 2018 18:05
Answers: 247
Wohnort: Darmstadt

Re: Heidelberg Energy Control, keine Verbindung

Beitrag von udo1toni »

Das wird ein Konfigurationsfehler des Modbus Bindings sein.

Bilder helfen hier nicht, Du müsstest schon Deine Konfiguration zeigen, bitte keinesfalls als Bild.
Nutze stattdessen die Code-Ansicht der Bridge und der beteiligten Things und kopieren den Text hier ins Forum (bitte unbedingt als Code Markieren, damit die Formatierung nicht verloren geht - Vollständiger Editor, Schaltfläche </> erzeugt die Code Tags um den markierten Text).

Falls hier sensible Daten eingetragen sind, kannst Du sie unkenntlich machen (Passworte, User... Nein, private IP-Adressen sind keine sensiblen Daten, aber notfalls kannst Du auch die unkenntlich machen)

Ich nutze selbst kein Modbus und werde auch nicht umfassend helfen können, aber andere User haben das in Betrieb :)

Ach so, was mir direkt an der Rule auffällt: Du nutzt keine Units of Measurement, der obere Screenshot legt aber nahe, dass sehr wohl QuantityType Items im Einsatz sind. Entsprechend müsstest Du zunächst alle Einheiten strippen, z.B.

Code: Alles auswählen

    val pvProduction = Sonnen_PVProduction.state as Number
    val consumption = Sonnen_Consumption.state as Number
liefert evtl. die Einheit mit, stattdessen besser:

Code: Alles auswählen

    val pvProduction = (Sonnen_PVProduction.state as Number).floatValue
    val consumption = (Sonnen_Consumption.state as Number).floatValue
damit bleibt sicher nur eine nackte Zahl übrig.
openHAB5.0.0 stable in einem Debian-Container (bookworm) (Proxmox 9.0.5, LXC)

Tobii
Beiträge: 70
Registriert: 18. Sep 2020 19:43
Answers: 0

Re: Heidelberg Energy Control, keine Verbindung

Beitrag von Tobii »

Vielen Dank für die erste Antwort.

Anbei meine Things

Code: Alles auswählen

Bridge modbus:serial:wallboxRTU [
    port="/dev/ttyACM0",
    baud=19200,
    dataBits=8,
    stopBits=1.0,
    parity="even",
    id=1,
    encoding="rtu",
    timeBetweenTransactionsMillis=100
] {

   // INPUT REGISTER: 4–18 (15 Werte)
    Bridge poller inputRegisters [ start=4, length=15, refresh=4000, type="input" ] {
        Thing data modbusVersion     [ readStart="4",  readValueType="uint16" ]
        Thing data chargingState     [ readStart="5",  readValueType="uint16" ]
        Thing data currentL1         [ readStart="6",  readValueType="uint16" ]
        Thing data currentL2         [ readStart="7",  readValueType="uint16" ]
        Thing data currentL3         [ readStart="8",  readValueType="uint16" ]
        Thing data pcbTemperature    [ readStart="9",  readValueType="int16"  ]
        Thing data voltageL1         [ readStart="10", readValueType="uint16" ]
        Thing data voltageL2         [ readStart="11", readValueType="uint16" ]
        Thing data voltageL3         [ readStart="12", readValueType="uint16" ]
        Thing data lockState         [ readStart="13", readValueType="uint16" ]
        Thing data totalPower        [ readStart="14", readValueType="uint16" ]
        Thing data energyPowerOnHi   [ readStart="15", readValueType="uint16" ]
        Thing data energyPowerOnLo   [ readStart="16", readValueType="uint16" ]
        Thing data energyTotalHi     [ readStart="17", readValueType="uint16" ]
        Thing data energyTotalLo     [ readStart="18", readValueType="uint16" ]
    }

    // HOLDING REGISTER 1: Watchdog Timeout (257) und Standby Control (258)
    Bridge poller holdingRegisters1 [ start=257, length=2, refresh=5000, type="holding" ] {
        Thing data watchdogTimeout     [ readStart="257", readValueType="uint16", writeStart="257", writeValueType="int16", writeType="holding" ]
        Thing data standbyControlWrite [ readStart="258", readValueType="int16",  writeStart="258", writeValueType="int16",  writeType="holding" ]
    }

    // HOLDING REGISTER 2: Remote Lock (259)
    Bridge poller holdingRegisters2 [ start=259, length=1, refresh=5000, type="holding" ] {
        Thing data remoteLock [ readStart="259", readValueType="uint16", writeStart="259", writeValueType="int16", writeType="holding" ]
    }

    // HOLDING REGISTER 3: Max Current (261), Failsafe Current (262)
    Bridge poller holdingRegisters3 [ start=261, length=2, refresh=5000, type="holding" ] {
        Thing data maxCurrent      [ readStart="261", readValueType="uint16", writeStart="261", writeValueType="int16", writeType="holding" ]
        Thing data failsafeCurrent [ readStart="262", readValueType="uint16", writeStart="262", writeValueType="int16", writeType="holding" ]
    }
}



Meine Items

Code: Alles auswählen

Number WB_RTUV_ModbusVersion          "Register Layout Version [%d]"               { channel="modbus:data:wallboxRTU:inputRegisters:modbusVersion:number" }
Number WB_RTUV_ChargingState          "Lade-Status [MAP(wallbox.map):%s]"          { channel="modbus:data:wallboxRTU:inputRegisters:chargingState:number" }
Number:ElectricCurrent WB_RTUV_CurrentL1          "Strom L1 [%.1f A]"                          { channel="modbus:data:wallboxRTU:inputRegisters:currentL1:number" }
Number:ElectricCurrent WB_RTUV_CurrentL2          "Strom L2 [%.1f A]"                          { channel="modbus:data:wallboxRTU:inputRegisters:currentL2:number" }
Number:ElectricCurrent WB_RTUV_CurrentL3          "Strom L3 [%.1f A]"                          { channel="modbus:data:wallboxRTU:inputRegisters:currentL3:number" }
Number:Temperature     WB_RTUV_PCBTemperature     "Temperatur PCB [%.1f °C]"                   { channel="modbus:data:wallboxRTU:inputRegisters:pcbTemperature:number" }
Number:ElectricPotential WB_RTUV_VoltageL1        "Spannung L1 [%.0f V]"                       { channel="modbus:data:wallboxRTU:inputRegisters:voltageL1:number" }
Number:ElectricPotential WB_RTUV_VoltageL2        "Spannung L2 [%.0f V]"                       { channel="modbus:data:wallboxRTU:inputRegisters:voltageL2:number" }
Number:ElectricPotential WB_RTUV_VoltageL3        "Spannung L3 [%.0f V]"                       { channel="modbus:data:wallboxRTU:inputRegisters:voltageL3:number" }
Switch WB_RTUV_ExternalLockState   "Extern verriegelt [%s]"                     { channel="modbus:data:wallboxRTU:inputRegisters:lockState:switch" }
Number:Power          WB_RTUV_TotalPower           "Leistung [%.0f W]"                          { channel="modbus:data:wallboxRTU:inputRegisters:totalPower:number" }
Number                WB_RTUV_EnergyPowerOnHigh   "Energie seit PowerOn (High)"                { channel="modbus:data:wallboxRTU:inputRegisters:energyPowerOnHi:number" }
Number                WB_RTUV_EnergyPowerOnLow    "Energie seit PowerOn (Low)"                 { channel="modbus:data:wallboxRTU:inputRegisters:energyPowerOnLo:number" }
Number                WB_RTUV_EnergyTotalHigh     "Energie gesamt (High)"                       { channel="modbus:data:wallboxRTU:inputRegisters:energyTotalHi:number" }
Number                WB_RTUV_EnergyTotalLow      "Energie gesamt (Low)"                        { channel="modbus:data:wallboxRTU:inputRegisters:energyTotalLo:number" }

Number:Energy         WB_RTUV_EnergySincePowerOn  "Energie seit PowerOn [%.0f Wh]"
Number:Energy         WB_RTUV_EnergyTotal         "Energie gesamt [%.0f Wh]"

Number                WB_RTUV_WatchdogTimeout     "Watchdog Timeout [%d ms]"                    { channel="modbus:data:wallboxRTU:holdingRegisters1:watchdogTimeout:number" }
Switch                WB_RTUV_RemoteLock          "Remote Lock [%s]"                            { channel="modbus:data:wallboxRTU:holdingRegisters2:remoteLock:switch" }
Number:ElectricCurrent WB_RTUV_MaximumCurrent      "Maximale Ladeleistung [%.1f A]"             { channel="modbus:data:wallboxRTU:holdingRegisters3:maxCurrent:number" }
Number:ElectricCurrent WB_RTUV_FailsafeCurrent     "Failsafe Strom [%.1f A]"                     { channel="modbus:data:wallboxRTU:holdingRegisters3:failsafeCurrent:number" }

Number WB_RTUV_StandbyControl "Standby-Modus (nur Schreiben)" { channel="modbus:data:wallboxRTU:holdingRegisters1:standbyControlWrite:number" }

Switch PV_UeberschussAktiv "PV Überschussladen aktiv" <switch>
Switch Wallbox_EnableCharging "Laden aktivieren" <switch>
Number Wallbox_ChargingCurrent "Ladestrom Wallbox [A]" <energy>
Number Wallbox_ChargingPower "Ladeleistung Wallbox [%.1f W]"

Tobii
Beiträge: 70
Registriert: 18. Sep 2020 19:43
Answers: 0

Re: Heidelberg Energy Control, keine Verbindung

Beitrag von Tobii »

Hat keiner eine Info? Hänge leider immer noch am gleichen Punkt fest.

Antworten