Hoymiles OpenDTU setup with OH3 (mqtt)

Hey all, as I could not find anything on the integration of OpenDTU, i did this quick and dirty thing/item config for OH3. The Inverter needs to be powered on with at least one solar panel attached, otherwise it won’t send any data to the DTU. OpenDTU is a free implementation of the DTU-Protocol used for Hoymiles inverters. My config is based on a HM1200, possibly adjustable to other inverters aswell (mine has 4 Inputs, 2 MPPT trackers, similar to the HM1500, but i would recommend the MQTT-Explorer or similar, to figure that out)

Aready discussed in the forum
*.items-file:

Group       OpenDTU
Number      OpenDTU1_uptime					"OpenDTU1 uptime"                   (OpenDTU)       {channel="mqtt:topic:default:OpenDTU1:uptime"}
String      OpenDTU1_ip						"OpenDTU1 IP"                       (OpenDTU)       {channel="mqtt:topic:default:OpenDTU1:ip"}
Number      OpenDTU1_wifi_rssi				"OpenDTU1 WiFi RSSI"                (OpenDTU)       {channel="mqtt:topic:default:OpenDTU1:rssi"}
// Inverters
String      OpenDTU1_inv1_name				"OpenDTU1 inv1 name"                (OpenDTU)       {channel="mqtt:topic:default:OpenDTU1:inv1_name"}
Number      OpenDTU1_inv1_pow				"OpenDTU1 inv1 power (AC)"          (OpenDTU)       {channel="mqtt:topic:default:OpenDTU1:inv1_pow"}
Number      OpenDTU1_inv1_voltage			"OpenDTU1 inv1 voltage (AC)"        (OpenDTU)       {channel="mqtt:topic:default:OpenDTU1:inv1_voltage"}
Number      OpenDTU1_inv1_current			"OpenDTU1 inv1 current (AC)"        (OpenDTU)       {channel="mqtt:topic:default:OpenDTU1:inv1_current"}
Number      OpenDTU1_inv1_frequency			"OpenDTU1 inv1 frequency (AC)"      (OpenDTU)       {channel="mqtt:topic:default:OpenDTU1:inv1_frequency"}
Number      OpenDTU1_inv1_efficiency		"OpenDTU1 inv1 efficiency (AC)"		(OpenDTU)       {channel="mqtt:topic:default:OpenDTU1:inv1_efficiency"}
Number      OpenDTU1_inv1_powerfactor		"OpenDTU1 inv1 powerfactor (AC)"	(OpenDTU)       {channel="mqtt:topic:default:OpenDTU1:inv1_powerfactor"}
Number      OpenDTU1_inv1_reactivepower		"OpenDTU1 inv1 reactivepower (AC)"	(OpenDTU)       {channel="mqtt:topic:default:OpenDTU1:inv1_reactivepower"}
Number      OpenDTU1_inv1_pow_dc			"OpenDTU1 inv1 power (DC)"			(OpenDTU)       {channel="mqtt:topic:default:OpenDTU1:inv1_pow_dc"}
Number      OpenDTU1_inv1_temp				"OpenDTU1 inv1 temperature"			(OpenDTU)       {channel="mqtt:topic:default:OpenDTU1:inv1_temp"}
Number      OpenDTU1_inv1_yieldday			"OpenDTU1 inv1 yield (day)"			(OpenDTU)       {channel="mqtt:topic:default:OpenDTU1:inv1_yieldday"}
Number      OpenDTU1_inv1_yieldtotal		"OpenDTU1 inv1 yield (total)"		(OpenDTU)       {channel="mqtt:topic:default:OpenDTU1:inv1_yieldtotal"}
// String 1
Number      OpenDTU1_inv1_s1_voltage		"OpenDTU1 inv1 s1 voltage"			(OpenDTU)       {channel="mqtt:topic:default:OpenDTU1:inv1_s1_voltage"}
Number      OpenDTU1_inv1_s1_current		"OpenDTU1 inv1 s1 current"			(OpenDTU)       {channel="mqtt:topic:default:OpenDTU1:inv1_s1_current"}
Number      OpenDTU1_inv1_s1_pow			"OpenDTU1 inv1 s1 power"			(OpenDTU)       {channel="mqtt:topic:default:OpenDTU1:inv1_s1_pow"}
Number      OpenDTU1_inv1_s1_yieldday		"OpenDTU1 inv1 s1 yield (day)"		(OpenDTU)       {channel="mqtt:topic:default:OpenDTU1:inv1_s1_yieldday"}
Number      OpenDTU1_inv1_s1_yieldtotal		"OpenDTU1 inv1 s1 yield (total)"	(OpenDTU)       {channel="mqtt:topic:default:OpenDTU1:inv1_s1_yieldtotal"}
Number      OpenDTU1_inv1_s1_irradiation	"OpenDTU1 inv1 s1 irradiation"		(OpenDTU)       {channel="mqtt:topic:default:OpenDTU1:inv1_s1_irradiation"}
// String 2
Number      OpenDTU1_inv1_s2_voltage		"OpenDTU1 inv1 s2 voltage"			(OpenDTU)       {channel="mqtt:topic:default:OpenDTU1:inv1_s2_voltage"}
Number      OpenDTU1_inv1_s2_current		"OpenDTU1 inv1 s2 current"			(OpenDTU)       {channel="mqtt:topic:default:OpenDTU1:inv1_s2_current"}
Number      OpenDTU1_inv1_s2_pow			"OpenDTU1 inv1 s2 power"			(OpenDTU)       {channel="mqtt:topic:default:OpenDTU1:inv1_s2_pow"}
Number      OpenDTU1_inv1_s2_yieldday		"OpenDTU1 inv1 s2 yield (day)"		(OpenDTU)       {channel="mqtt:topic:default:OpenDTU1:inv1_s2_yieldday"}
Number      OpenDTU1_inv1_s2_yieldtotal		"OpenDTU1 inv1 s2 yield (total)"	(OpenDTU)       {channel="mqtt:topic:default:OpenDTU1:inv1_s2_yieldtotal"}
Number      OpenDTU1_inv1_s2_irradiation	"OpenDTU1 inv1 s2 irradiation"		(OpenDTU)       {channel="mqtt:topic:default:OpenDTU1:inv1_s2_irradiation"}
// String 3
Number      OpenDTU1_inv1_s3_voltage		"OpenDTU1 inv1 s3 voltage"			(OpenDTU)       {channel="mqtt:topic:default:OpenDTU1:inv1_s3_voltage"}
Number      OpenDTU1_inv1_s3_current		"OpenDTU1 inv1 s3 current"			(OpenDTU)       {channel="mqtt:topic:default:OpenDTU1:inv1_s3_current"}
Number      OpenDTU1_inv1_s3_pow			"OpenDTU1 inv1 s3 power"			(OpenDTU)       {channel="mqtt:topic:default:OpenDTU1:inv1_s3_pow"}
Number      OpenDTU1_inv1_s3_yieldday		"OpenDTU1 inv1 s3 yield (day)"		(OpenDTU)       {channel="mqtt:topic:default:OpenDTU1:inv1_s3_yieldday"}
Number      OpenDTU1_inv1_s3_yieldtotal		"OpenDTU1 inv1 s3 yield (total)"	(OpenDTU)       {channel="mqtt:topic:default:OpenDTU1:inv1_s3_yieldtotal"}
Number      OpenDTU1_inv1_s3_irradiation	"OpenDTU1 inv1 s3 irradiation"		(OpenDTU)       {channel="mqtt:topic:default:OpenDTU1:inv1_s3_irradiation"}
// String 4
Number      OpenDTU1_inv1_s4_voltage		"OpenDTU1 inv1 s4 voltage"			(OpenDTU)       {channel="mqtt:topic:default:OpenDTU1:inv1_s4_voltage"}
Number      OpenDTU1_inv1_s4_current		"OpenDTU1 inv1 s4 current"			(OpenDTU)       {channel="mqtt:topic:default:OpenDTU1:inv1_s4_current"}
Number      OpenDTU1_inv1_s4_pow			"OpenDTU1 inv1 s4 power"			(OpenDTU)       {channel="mqtt:topic:default:OpenDTU1:inv1_s4_pow"}
Number      OpenDTU1_inv1_s4_yieldday		"OpenDTU1 inv1 s4 yield (day)"		(OpenDTU)       {channel="mqtt:topic:default:OpenDTU1:inv1_s4_yieldday"}
Number      OpenDTU1_inv1_s4_yieldtotal		"OpenDTU1 inv1 s4 yield (total)"	(OpenDTU)       {channel="mqtt:topic:default:OpenDTU1:inv1_s4_yieldtotal"}
Number      OpenDTU1_inv1_s4_irradiation	"OpenDTU1 inv1 s4 irradiation"		(OpenDTU)       {channel="mqtt:topic:default:OpenDTU1:inv1_s4_irradiation"}
// Inverter info
Number      OpenDTU1_inv1_bl_version		"OpenDTU1 inv1 bootloader version"  (OpenDTU)       {channel="mqtt:topic:default:OpenDTU1:inv1_bl_version"}
Number      OpenDTU1_inv1_fw_build_version  "OpenDTU1 inv1 firmware version"    (OpenDTU)       {channel="mqtt:topic:default:OpenDTU1:inv1_fw_build_version"}
DateTime    OpenDTU1_inv1_fw_build_datetime "OpenDTU1 inv1 fw build datetime"   (OpenDTU)       {channel="mqtt:topic:default:OpenDTU1:inv1_fw_build_datetime"}
Number      OpenDTU1_inv1_hw_partnumber     "OpenDTU1 inv1 hardware partnumber" (OpenDTU)       {channel="mqtt:topic:default:OpenDTU1:inv1_hw_partnumber"}
Number      OpenDTU1_inv1_hw_version        "OpenDTU1 inv1 hardware version"    (OpenDTU)       {channel="mqtt:topic:default:OpenDTU1:inv1_hw_version"}
// Settings
Number      OpenDTU1_inv1_limit				"OpenDTU1 inv1 limit"				(OpenDTU)		{channel="mqtt:topic:default:OpenDTU1:inv1_limit"}

And the things-file:

Bridge mqtt:broker:default "MQTT Local" [host="localhost", secure=false, clientID="OH3_Inbuilt"]  
{
    Thing topic OpenDTU1 "OpenDTU-123456" @ "Network" [availabilityTopic="ESP/OpenDTU/dtu/status", payloadAvailable="online", payloadNotAvailable="offline"]
    {
        Channels:
        // Technical things
        Type number : uptime					"OpenDTU uptime"		[stateTopic="ESP/OpenDTU/dtu/uptime"]
        Type string : ip						"OpenDTU IP"			[stateTopic="ESP/OpenDTU/dtu/ip"]
        Type number : rssi						"OpenDTU rssi"			[stateTopic="ESP/OpenDTU/dtu/rssi"]
        // First inverter, serial: <inverter-serial>
        Type string : inv1_name					"Inverter name"			[stateTopic="ESP/OpenDTU/<inverter-serial>/name"]
        // Main values
        Type number : inv1_pow					"Total (AC) power"		[stateTopic="ESP/OpenDTU/<inverter-serial>/0/power"]
        Type number : inv1_voltage				"I1 AC voltage"			[stateTopic="ESP/OpenDTU/<inverter-serial>/0/voltage"]
        Type number : inv1_current				"I1 AC current"			[stateTopic="ESP/OpenDTU/<inverter-serial>/0/current"]
        Type number : inv1_frequency			"I1 AC Frequency"		[stateTopic="ESP/OpenDTU/<inverter-serial>/0/frequency"]
        Type number : inv1_efficiency			"I1 AC efficiency"		[stateTopic="ESP/OpenDTU/<inverter-serial>/0/efficiency"]
        Type number : inv1_powerfactor			"I1 AC powerfactor"		[stateTopic="ESP/OpenDTU/<inverter-serial>/0/powerfactor"]
        Type number : inv1_reactivepower		"I1 AC reactivepower"	[stateTopic="ESP/OpenDTU/<inverter-serial>/0/reactivepower"]
        Type number : inv1_pow_dc				"DC Power (total)"		[stateTopic="ESP/OpenDTU/<inverter-serial>/0/powerdc"]
        Type number : inv1_temp					"Inverter temperature"	[stateTopic="ESP/OpenDTU/<inverter-serial>/0/temperature"]
        Type number : inv1_yieldday				"Yield day"				[stateTopic="ESP/OpenDTU/<inverter-serial>/0/yieldday"]
        Type number : inv1_yieldtotal			"Yield total"			[stateTopic="ESP/OpenDTU/<inverter-serial>/0/yieldtotal"]
        // Inverter 1 - String 1
        Type number : inv1_s1_voltage			"I1 S1 voltage"			[stateTopic="ESP/OpenDTU/<inverter-serial>/1/voltage"]
        Type number : inv1_s1_current			"I1 S1 current"			[stateTopic="ESP/OpenDTU/<inverter-serial>/1/current"]
        Type number : inv1_s1_pow				"I1 S1 power"			[stateTopic="ESP/OpenDTU/<inverter-serial>/1/power"]
        Type number : inv1_s1_yieldday			"I1 S1 yield day"		[stateTopic="ESP/OpenDTU/<inverter-serial>/1/yieldday"]
        Type number : inv1_s1_yieldtotal		"I1 S1 yield total"		[stateTopic="ESP/OpenDTU/<inverter-serial>/1/yieldtotal"]
        Type number : inv1_s1_irradiation		"I1 S1 irradiation"		[stateTopic="ESP/OpenDTU/<inverter-serial>/1/irradiation"]
        // Inverter 1 - String 2
        Type number : inv1_s2_voltage			"I1 S2 voltage"			[stateTopic="ESP/OpenDTU/<inverter-serial>/2/voltage"]
        Type number : inv1_s2_current			"I1 S2 current"			[stateTopic="ESP/OpenDTU/<inverter-serial>/2/current"]
        Type number : inv1_s2_pow				"I1 S2 power"			[stateTopic="ESP/OpenDTU/<inverter-serial>/2/power"]
        Type number : inv1_s2_yieldday			"I1 S2 yield day"		[stateTopic="ESP/OpenDTU/<inverter-serial>/2/yieldday"]
        Type number : inv1_s2_yieldtotal		"I1 S2 yield total"		[stateTopic="ESP/OpenDTU/<inverter-serial>/2/yieldtotal"]
        Type number : inv1_s2_irradiation		"I1 S2 irradiation"		[stateTopic="ESP/OpenDTU/<inverter-serial>/2/irradiation"]
        // Inverter 1 - String 3
        Type number : inv1_s3_voltage			"I1 S3 voltage"			[stateTopic="ESP/OpenDTU/<inverter-serial>/3/voltage"]
        Type number : inv1_s3_current			"I1 S3 current"			[stateTopic="ESP/OpenDTU/<inverter-serial>/3/current"]
        Type number : inv1_s3_pow				"I1 S3 power"			[stateTopic="ESP/OpenDTU/<inverter-serial>/3/power"]
        Type number : inv1_s3_yieldday			"I1 S3 yield day"		[stateTopic="ESP/OpenDTU/<inverter-serial>/3/yieldday"]
        Type number : inv1_s3_yieldtotal		"I1 S3 yield total"		[stateTopic="ESP/OpenDTU/<inverter-serial>/3/yieldtotal"]
        Type number : inv1_s3_irradiation		"I1 S3 irradiation"		[stateTopic="ESP/OpenDTU/<inverter-serial>/3/irradiation"]
        // Inverter 1 - String 4
        Type number : inv1_s4_voltage			"I1 S4 voltage"			[stateTopic="ESP/OpenDTU/<inverter-serial>/4/voltage"]
        Type number : inv1_s4_current			"I1 S4 current"			[stateTopic="ESP/OpenDTU/<inverter-serial>/4/current"]
        Type number : inv1_s4_pow				"I1 S4 power"			[stateTopic="ESP/OpenDTU/<inverter-serial>/4/power"]
        Type number : inv1_s4_yieldday			"I1 S4 yield day"		[stateTopic="ESP/OpenDTU/<inverter-serial>/4/yieldday"]
        Type number : inv1_s4_yieldtotal		"I1 S4 yield total"		[stateTopic="ESP/OpenDTU/<inverter-serial>/4/yieldtotal"]
        Type number : inv1_s4_irradiation		"I1 S4 irradiation"		[stateTopic="ESP/OpenDTU/<inverter-serial>/4/irradiation"]
        // Inverter info
        Type number : inv1_bl_version			"I1 bootloader version"	[stateTopic="ESP/OpenDTU/<inverter-serial>/device/bootloaderversion"]
        Type number : inv1_fw_build_version		"I1 firmware version"	[stateTopic="ESP/OpenDTU/<inverter-serial>/device/fwbuildversion"]
        Type datetime : inv1_fw_build_datetime	"I1 fw build datetime"	[stateTopic="ESP/OpenDTU/<inverter-serial>/device/fwbuilddatetime"]
        Type number : inv1_hw_partnumber		"I1 hw part number"		[stateTopic="ESP/OpenDTU/<inverter-serial>/device/hwpartnumber"]
        Type number : inv1_hw_version			"I1 hw version"			[stateTopic="ESP/OpenDTU/<inverter-serial>/device/hwversion"]
        // Settings
        Type string : inv1_limit				"Inverter limit"		[stateTopic="ESP/OpenDTU/<inverter-serial>/settings/limit"]
    }
}

Feel free to use it :wink:
Best regards,
Dominic

5 Likes

Hi Dominic,
Thanks for this work!
I’m now working on getting my Hoymiles DTU Pro unit to connect to OpenHab. I had been under the impression it used the SunSpec Modbus protocol - not sure if OpenDTU is something else.
Has this implementation been working for you?
I see a few other bindings that use modbus, and had been under the Impression that SunSpec was the standard for many/most solar systems that make this available.
I’ll let you know how it goes.
Ben

1 Like

Hi @bdm
This is showcasing the OpenDTU project which is basically a free and as intended open version of the DTU. It’s a diy project utilizing a microcontroller (ESP32)

Documentation can be found on GitHub: GitHub - tbnobody/OpenDTU: Software for ESP32 to talk to Hoymiles Inverters

Regarding the DTU Pro, you might reach out to this project:

This is a kind of modbus to MQTT bridge, which should work with Openhab, too.

BR
Dominic

Ah, I see.
So, if I go the wired RS485 serial route, it should work well.
I’m going to try the ethernet TCP route, if I can get my installer to enable the modbus connection / set an address (I think that’s the issue).
I’m trying the SolarLog binding, as SolarLog is part of the SunSpec alliance, and presumably then uses the same modbus protocols…
Ben

[edit, on deeper dive, I see this works via http0.9 and doesn’t need the wired serial connection. The CURL command referenced from the home assistant script doesn’t work for me from a command line, so I think there is a setting that my installer needs to enable in my DTU settings. I’m waiting to hear back from him.
curl 192.168.x.xxx:502/hometable.xml --http0.9
or
curl 192.168.x.xxx/hometable.xml --http0.9
]
]

Looking deeper into this OPenDTU, it appears to replace the Hoymiles Bridge/DTU.
Do you know if the two can be used concurrently? (OpenDTU Esp32/similar, as well as the Hoymile DTU(Pro)?

I’m not sure if I will want the cloud web interface - although it does apparently allow my installer to connect in and fix things as needed (?update firmware?)

awesome, saved me a lot of time today. Thanks a lot!

1 Like

Hi Dominic,
works like a Charm!
Can you kindly post your Code parts from your Sitemap ?
Br Peter

Hey @Peter_Aschinger
unfortunately I use that within rules and using the Rest API for my MagicMirror. But that should be easy. Simply format it within the Sitemap or utilize UoM (Units of Measurement)

I did the Sitemap by my own.

1 Like

Perfect, looks good :blush:

1 Like

Hi Dominic,

let me ask a question:

In the .things file you defined the Settings Channel as a “string”
But the linked item is Type “number”.

Can you explain me that ?

Did you use that for setting dynamic the limit of the Inverter ?

Br Peter

Hey, sorry for the late reply, number should be fine, thats a mistake as i won’t use it.
Number:Dimensionless (Percentage) should be fine.

So i had a look into the documentation and adjusted my config:
The channels are listed here: https://github.com/tbnobody/OpenDTU/blob/master/docs/MQTT_Topics.md

//  opendtu.things
Type number : inv1_limit_relative		"I1 limit relative"		[stateTopic="serial/status/limit_relative", commandTopic="serial/cmd/limit_persistent_relative", unit="%"]
Type number : inv1_limit_absolute		"I1 limit absolute"		[stateTopic="serial/status/limit_absolute", commandTopic="serial/cmd/limit_persistent_absolute", unit="W"]

// opendtu.items
Number:Dimensionless                OpenDTU1_inv1_limit_relative    "Limit (rel)"                           (ODTU1_inv1)                {channel="mqtt:topic:default:OpenDTU1:inv1_limit_relative"}
Number:Power                        OpenDTU1_inv1_limit_absolute    "Limit (abs)"                           (ODTU1_inv1)                {channel="mqtt:topic:default:OpenDTU1:inv1_limit_absolute"}
1 Like

Thanks for that!
But how can i set the limit?

I did a selection widged in the sitemap like this:

Selection item=OpenDTU1_inv1_limit_absolute label="Limit (abs) W" icon="qualityofservice" mappings=[600="600W", 800="800", 1200="1200", 1500="1500"]

When i try to set a Limit i get a error in the log like this:

2023-05-08 20:11:22.611 [ome.event.ItemCommandEvent] - Item 'OpenDTU1_inv1_limit_absolute' received command 1200

==> /var/log/openhab2/openhab.log <==

2023-05-08 20:11:22.734 [ERROR] [nal.common.AbstractInvocationHandler] - An error occurred while calling method 'ThingHandler.handleCommand()' on 'org.eclipse.smarthome.binding.mqtt.generic.internal.handler.GenericThingHandler@16cf43f': null

java.lang.NumberFormatException: null

	at java.math.BigDecimal.<init>(BigDecimal.java:494) ~[?:?]

	at java.math.BigDecimal.<init>(BigDecimal.java:383) ~[?:?]

	at java.math.BigDecimal.<init>(BigDecimal.java:806) ~[?:?]

	at org.eclipse.smarthome.core.library.types.DecimalType.<init>(DecimalType.java:57) ~[102:org.eclipse.smarthome.core:0.10.0.oh240]

	at org.eclipse.smarthome.core.library.types.DecimalType.valueOf(DecimalType.java:71) ~[102:org.eclipse.smarthome.core:0.10.0.oh240]

	at org.eclipse.smarthome.binding.mqtt.generic.internal.values.NumberValue.update(NumberValue.java:65) ~[?:?]

	at org.eclipse.smarthome.binding.mqtt.generic.internal.generic.ChannelState.publishValue(ChannelState.java:302) ~[?:?]

	at org.eclipse.smarthome.binding.mqtt.generic.internal.handler.AbstractMQTTThingHandler.handleCommand(AbstractMQTTThingHandler.java:119) ~[?:?]

	at sun.reflect.GeneratedMethodAccessor729.invoke(Unknown Source) ~[?:?]

	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]

	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:?]

	at org.eclipse.smarthome.core.internal.common.AbstractInvocationHandler.invokeDirect(AbstractInvocationHandler.java:153) [102:org.eclipse.smarthome.core:0.10.0.oh240]

	at org.eclipse.smarthome.core.internal.common.InvocationHandlerSync.invoke(InvocationHandlerSync.java:59) [102:org.eclipse.smarthome.core:0.10.0.oh240]

	at com.sun.proxy.$Proxy160.handleCommand(Unknown Source) [276:org.eclipse.smarthome.binding.mqtt.generic:0.10.0.oh240]

	at org.eclipse.smarthome.core.thing.internal.profiles.ProfileCallbackImpl.handleCommand(ProfileCallbackImpl.java:75) [109:org.eclipse.smarthome.core.thing:0.10.0.oh240]

	at org.eclipse.smarthome.core.thing.internal.profiles.SystemDefaultProfile.onCommandFromItem(SystemDefaultProfile.java:49) [109:org.eclipse.smarthome.core.thing:0.10.0.oh240]

	at sun.reflect.GeneratedMethodAccessor728.invoke(Unknown Source) ~[?:?]

	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]

	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:?]

	at org.eclipse.smarthome.core.internal.common.AbstractInvocationHandler.invokeDirect(AbstractInvocationHandler.java:153) [102:org.eclipse.smarthome.core:0.10.0.oh240]

	at org.eclipse.smarthome.core.internal.common.Invocation.call(Invocation.java:53) [102:org.eclipse.smarthome.core:0.10.0.oh240]

	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?]

	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:?]

	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:?]

	at java.lang.Thread.run(Thread.java:748) [?:?]

What i´m missing ?..
BR Peter

Update:

i use the item without “:power”

Number                        OpenDTU1_inv1_limit_absolute    "Limit (abs)"                           (ODTU1_inv1)                {channel="mqtt:topic:default:OpenDTU1:inv1_limit_absolute"}

That throws no error anymore!

Sure, both is possible. The state and command topic are taking care that the Limit is set properly.

Another thing is, that you might use a combination of both. So when dealing with a HM400 and an absolute Limit of 200 Watts, that equals 50 % relative limit.

No need for the units, but more beautiful and accurate (YieldDay is in Watt-Hours, YieldTotal kWh, so I wanted to take care of it)

May it’s not OpenHab related but why is it possible to set the Limits with Watts or Percentage?

1 Like

Hi Peter could you explain to me how you did the sitemap with the graph i’m a beginner and have no idea how to store the data

What Version of OpenHab are you running ?
I´m still on 2.4 and i guess in Openhab 3.X its different.
But basically you need to persist with rrd4j your item to draw a graph like that.

i am on 3.4