Skip to content

Conversation

@Smanar
Copy link
Collaborator

@Smanar Smanar commented Mar 9, 2023

  • Product name: Namron Panel Heater (1000W White)
  • Manufacturer: Namron AS
  • Model identifier: 5401395

See #6574

@Smanar Smanar mentioned this pull request Mar 9, 2023
@manup manup modified the milestones: v2.21.1-beta, v2.22.0-beta Mar 16, 2023
@manup manup merged commit 502bf02 into dresden-elektronik:master Apr 3, 2023
@Smanar Smanar deleted the namron branch April 30, 2024 15:11
@kjetilrong
Copy link

Namron Panel Heater raporting 10 times the power consumption than ratet. ex product 5401392 is a 400w oven, but shows a round 4000W consumption.

5401393 is a 600w oven , but shows a round 6000W consumption.

@Smanar
Copy link
Collaborator Author

Smanar commented Oct 17, 2024

But this DDF is for the 5401395 ?
You mean all third device have the issue ?

Try replacing

        {
          "name": "state/power"
        },

by

        {
          "name": "state/power",
          "read": {
            "at": "0x050b",
            "cl": "0x0b04",
            "ep": 1,
            "fn": "zcl:attr"
          },
          "parse": {
            "at": "0x050b",
            "cl": "0x0b04",
            "ep": 1,
            "eval": "Item.val = Attr.val/10"
          }
        },

@kjetilrong
Copy link

iam not able to make the changes to github, but my test files look like this:

5401393_heater.json
5401392_heater.json

@Smanar
Copy link
Collaborator Author

Smanar commented Oct 18, 2024

So do you want I add your 2 files and correct the actual one ? (with same corrective)

@kjetilrong
Copy link

I'am not sure how the best way to do it is, all models should have been combined in one file.
I guess the multipliers can be different from model to model.

I have verified 5401392 and 5401393:
From the manual: real displayed power= ActivePower*(ACPowerMultiplier/ACPowerDivisor)
0x50B should bee multiplied with 0x0604/0x0605

bilde

bilde

The consumption meter have also some issues.
bilde

@Smanar
Copy link
Collaborator Author

Smanar commented Oct 19, 2024

I guess the multipliers can be different from model to model.

Yeah there is a PR ATM to use multiplier/diviser from firmware, but not 100% reliable, lot of devices don't respect them.

I'am not sure how the best way to do it is, all models should have been combined in one file.

Yes, I think too, I will make different DDF for device that need a specific DDF.

So this will work for all devices (time to found one with different multiplier/divider

{
  "schema": "devcap1.schema.json",
  "uuid": "6f36f014-8ed9-40ea-9301-05d55797bd3e",
  "manufacturername": ["NAMRON AS", "NAMRON AS", "NAMRON AS", "NAMRON AS", "NAMRON AS", "NAMRON AS"],
  "modelid": ["5401395", "5401399", "5401393", "5401397", "5401392", "5401396"],
  "vendor": "Namron",
  "product": "Panel heater",
  "sleeper": false,
  "status": "Gold",
  "subdevices": [
    {
      "type": "$TYPE_THERMOSTAT",
      "restapi": "/sensors",
      "uuid": [
        "$address.ext",
        "0x01",
        "0x0201"
      ],
      "fingerprint": {
        "profile": "0x0104",
        "device": "0x0301",
        "endpoint": "0x01",
        "in": [
          "0x0000",
          "0x0201",
          "0x0204"
        ]
      },
      "items": [
        {
          "name": "attr/id"
        },
        {
          "name": "attr/lastannounced"
        },
        {
          "name": "attr/lastseen"
        },
        {
          "name": "attr/manufacturername"
        },
        {
          "name": "attr/modelid"
        },
        {
          "name": "attr/name"
        },
        {
          "name": "attr/swversion"
        },
        {
          "name": "attr/type"
        },
        {
          "name": "attr/uniqueid"
        },
        {
          "name": "config/heatsetpoint",
          "default": 0
        },
        {
          "name": "config/mode"
        },
        {
          "name": "config/offset",
          "default": 0
        },
        {
          "name": "config/on"
        },
        {
          "name": "config/locked",
          "refresh.interval": 3660,
          "parse": {
            "at": "0x0001",
            "cl": "0x0204",
            "ep": 1,
            "eval": "Item.val = Attr.val;",
            "fn": "zcl:attr"
          }
        },
        {
          "name": "state/on"
        },
        {
          "name": "config/reachable"
        },
        {
          "name": "state/lastupdated"
        },
        {
          "name": "state/lastupdated"
        },
        {
          "name": "state/temperature"
        }
      ]
    },
    {
      "type": "$TYPE_POWER_SENSOR",
      "restapi": "/sensors",
      "uuid": [
        "$address.ext",
        "0x01",
        "0x0b04"
      ],
      "fingerprint": {
        "profile": "0x0104",
        "device": "0x0301",
        "endpoint": "0x01",
        "in": [
          "0x0000",
          "0x0B04"
        ]
      },
      "items": [
        {
          "name": "attr/id"
        },
        {
          "name": "attr/lastannounced"
        },
        {
          "name": "attr/lastseen"
        },
        {
          "name": "attr/manufacturername"
        },
        {
          "name": "attr/modelid"
        },
        {
          "name": "attr/name"
        },
        {
          "name": "attr/swversion"
        },
        {
          "name": "attr/type"
        },
        {
          "name": "attr/uniqueid"
        },
        {
          "name": "config/on"
        },
        {
          "name": "config/reachable"
        },
        {
          "name": "state/current"
        },
        {
          "name": "state/lastupdated"
        },
        {
          "name": "state/power",
          "refresh.interval": 365,
          "read": {
            "at": "0x050b",
            "cl": "0x0b04",
            "ep": 1,
            "fn": "zcl:attr"
          },
          "parse": {
            "at": "0x050b",
            "cl": "0x0b04",
            "ep": 1,
            "eval": "Item.val = Attr.val/10"
          }
        },
        {
          "name": "state/voltage"
        }
      ]
    },
    {
      "type": "$TYPE_CONSUMPTION_SENSOR",
      "restapi": "/sensors",
      "uuid": [
        "$address.ext",
        "0x01",
        "0x0702"
      ],
      "fingerprint": {
        "profile": "0x0104",
        "device": "0x0301",
        "endpoint": "0x01",
        "in": [
          "0x0000",
          "0x0702"
        ]
      },
      "items": [
        {
          "name": "attr/id"
        },
        {
          "name": "attr/lastannounced"
        },
        {
          "name": "attr/lastseen"
        },
        {
          "name": "attr/manufacturername"
        },
        {
          "name": "attr/modelid"
        },
        {
          "name": "attr/name"
        },
        {
          "name": "attr/swversion"
        },
        {
          "name": "attr/type"
        },
        {
          "name": "attr/uniqueid"
        },
        {
          "name": "config/on"
        },
        {
          "name": "config/reachable"
        },
        {
          "name": "state/consumption",
          "default": 0
        },
        {
          "name": "state/lastupdated"
        }
      ]
    }
  ],
  "bindings": [
    {
      "bind": "unicast",
      "src.ep": 1,
      "dst.ep": 1,
      "cl": "0x0204",
      "report": [
        {
          "at": "0x0001",
          "dt": "0x30",
          "min": 60,
          "max": 3600
        }
      ]
    },
    {
      "bind": "unicast",
      "src.ep": 1,
      "dst.ep": 1,
      "cl": "0x0B04",
      "report": [
        {
          "at": "0x050B",
          "dt": "0x29",
          "min": 1,
          "max": 300,
          "change": "0x00000001"
        },
        {
          "at": "0x0505",
          "dt": "0x21",
          "min": 1,
          "max": 300,
          "change": "0x0000000A"
        },
        {
          "at": "0x0508",
          "dt": "0x21",
          "min": 1,
          "max": 300,
          "change": "0x00000001"
        }
      ]
    },
    {
      "bind": "unicast",
      "src.ep": 1,
      "cl": "0x0201",
      "report": [
        {
          "at": "0x0000",
          "dt": "0x29",
          "min": 30,
          "max": 360,
          "change": "0x0000000A"
        }
      ]
    }
  ]
}

I m seing there is no bind for consumption cluster, this is working ? (have removed the state/power from the ZHAConsumption too)

@kjetilrong
Copy link

Grate i will try your new file later today.

The heater reports consumption as simple metering? I have not tested if it is correct but in home assistant and deconz it is reported like this:

bilde

bilde
bilde

@Smanar
Copy link
Collaborator Author

Smanar commented Oct 19, 2024

The heater reports consumption as simple metering?

Yep, and it seem the bind is not needed, but I have a doubt ^^, you have a divisor = 10, so perhaps to divide the value by 10 ?

@kjetilrong
Copy link

I have tested your last file, and i works regarding to my models, and shows corect power.

I have run a test with one of my heater with around 550w for 50min and the value in address 0x000 rise from 6057 to 6062.
550w*(60/50)=0,458 Kwh.
so the last digit represent 0.1Kwh
I guess the value is needed to be multiplied with 10 to show the correct consumption in Home Assistant.

bilde

@Smanar
Copy link
Collaborator Author

Smanar commented Oct 20, 2024

So raw value is 6062, in HA you have 6,062 KW/h.
For consumption 550W during 50 mn is (550 * 1 / 1000) * (60/50) = 0.66 Kw/h for me (but almost like you).
And I need to * 100 no ?

(6057 * 100)/1000 + 0.5kW/h = 606.2 Kw/h.

Edit:
So the firmware is good, to resume I need to divide by 10.
Can try

        {
          "name": "state/consumption",
          "read": {
            "at": "0x0000",
            "cl": "0x0702",
            "ep": 1,
            "fn": "zcl:attr"
          },
          "parse": {
            "at": "0x0000",
            "cl": "0x0702",
            "ep": 1,
            "eval": "Item.val = Attr.val / 10"
          },
          "refresh.interval": 365
        },

Deconz expose value in W/h.

@kjetilrong
Copy link

550w for one hour, is 0.55kwh so for 50min the consumption has to be less than 0,55kwh. :-)

I have tried the changes with "eval": "Item.val = Attr.val / 10" and the result is this in Home Assistant is: 0,607kWh from a registrer value of 6072.

bilde
bilde


Also tried "eval": "Item.val = Attr.val * 100"
bilde

This make more sense.

@Smanar
Copy link
Collaborator Author

Smanar commented Oct 20, 2024

Yes for me the correct value is 607.2 too.

I m updating file. PR > #7988

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants