LiXee ZLinky_TIC DDF File

Ha yes, right, but it s the current for a Home, not a simple device, what can be the impact for you if your complete home consume 20A or 20.5A.
I m french too and voltage never move, if it move more than 10% you can call Enedis.

If you want you can delete current in all zhapower in 3 sensor. I calculate current with power and voltage

Good question, IDK if users prefer current or power ? I will make the PR with both for the moment.

And i calculate total power with power of the 3 sensor.

Ok, so no need new entry ?
Else you can add in the ZHAConsumption

        {
          "name": "state/power",
          "refresh.interval": 300,
          "read": {
            "at": "0x0306",
            "cl": "0x0b04",
            "ep": 1,
            "fn": "zcl"
          },
          "parse": {
            "at": "0x0306",
            "cl": "0x0b04",
            "ep": 1,
            "eval": "if (Attr.val != -32768) { Item.val = Attr.val; }"
          },
          "default": 0
        },

And one more bind/report

        {
          "at": "0x0306",
          "dt": "0x21",
          "min": 60,
          "max": 300,
          "change": "0x00000001"
        },

If all is working, do you want to make a PR for it, or want I make it myself ?

The problem is that I am on tri. My phases are balanced so I can consume 230w per phase or 690w in total and still have a current of 0A per phase. hence the usefulness of calculating the current per phase precisely with the voltage and power per phase.

I sometimes have a voltage peak of 255V, I have already spoken to enedis about it, who only say that it comes from my neighbors who have a solar panel. So I monitor the voltage because my connected sockets go into protection at 250V.

will try to do the ddf with the total consumption. So far the ddf you made for me is working fine. No problem.

Small off-topic question, have you tried the LiXee zpluses? Maybe someone has already made a ddf?

Thanks.
Samuel.

Please translate your post to English only.

Sorry, i delete the french translate.

1 Like

I try this ddf. It’s work, i have total power in zhaconsumption. But now have also a new zhapower ff-0B04 curent, voltage and power with no value. ???

{
  "schema": "devcap1.schema.json",
  "manufacturername": "LiXee",
  "modelid": "ZLinky_TIC",
  "vendor": "LiXee",
  "product": "LiXee tic standard tri hphc zlinky",
  "sleeper": false,
  "status": "Gold",
  "subdevices": [
    {
      "type": "$TYPE_POWER_SENSOR",
      "restapi": "/sensors",
      "uuid": [
        "$address.ext",
        "0x01",
        "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",
          "refresh.interval": 300,
          "read": {
            "at": "0x0508",
            "cl": "0x0b04",
            "ep": 1,
            "fn": "zcl"
          },
          "parse": {
            "at": "0x0508",
            "cl": "0x0b04",
            "ep": 1,
            "eval": "if (Attr.val != 65535) { Item.val = Attr.val; }"
          },
          "default": 0
        },
        {
          "name": "state/lastupdated"
        },
        {
          "name": "state/power",
          "refresh.interval": 300,
          "read": {
            "at": "0x050F",
            "cl": "0x0b04",
            "ep": 1,
            "fn": "zcl"
          },
          "parse": {
            "at": "0x050F",
            "cl": "0x0b04",
            "ep": 1,
            "eval": "if (Attr.val != -32768) { Item.val = Attr.val; }"
          },
          "default": 0
        },
        {
          "name": "state/voltage",
          "refresh.interval": 300,
          "read": {
            "at": "0x0505",
            "cl": "0x0b04",
            "ep": 1,
            "fn": "zcl"
          },
          "parse": {
            "at": "0x0505",
            "cl": "0x0b04",
            "ep": 1,
            "eval": "if (Attr.val != 65535) { Item.val = Attr.val; }"
          },
          "default": 0
        }
      ]
    },
    {
      "type": "$TYPE_POWER_SENSOR",
      "restapi": "/sensors",
      "uuid": [
        "$address.ext",
        "0x02",
        "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",
          "refresh.interval": 300,
          "read": {
            "at": "0x0908",
            "cl": "0x0b04",
            "ep": 1,
            "fn": "zcl"
          },
          "parse": {
            "at": "0x0908",
            "cl": "0x0b04",
            "ep": 1,
            "eval": "if (Attr.val != 65535) { Item.val = Attr.val; }"
          },
          "default": 0
        },
        {
          "name": "state/lastupdated"
        },
        {
          "name": "state/power",
          "refresh.interval": 300,
          "read": {
            "at": "0x090F",
            "cl": "0x0b04",
            "ep": 1,
            "fn": "zcl"
          },
          "parse": {
            "at": "0x090F",
            "cl": "0x0b04",
            "ep": 1,
            "eval": "if (Attr.val != -32768) { Item.val = Attr.val; }"
          },
          "default": 0
        },
        {
          "name": "state/voltage",
          "refresh.interval": 300,
          "read": {
            "at": "0x0905",
            "cl": "0x0b04",
            "ep": 1,
            "fn": "zcl"
          },
          "parse": {
            "at": "0x0905",
            "cl": "0x0b04",
            "ep": 1,
            "eval": "if (Attr.val != 65535) { Item.val = Attr.val; }"
          },
          "default": 0
        }
      ]
    },
    {
      "type": "$TYPE_POWER_SENSOR",
      "restapi": "/sensors",
      "uuid": [
        "$address.ext",
        "0x03",
        "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",
          "refresh.interval": 300,
          "read": {
            "at": "0x0a08",
            "cl": "0x0b04",
            "ep": 1,
            "fn": "zcl"
          },
          "parse": {
            "at": "0x0a08",
            "cl": "0x0b04",
            "ep": 1,
            "eval": "if (Attr.val != 65535) { Item.val = Attr.val; }"
          },
          "default": 0
        },
        {
          "name": "state/lastupdated"
        },
        {
          "name": "state/power",
          "refresh.interval": 300,
          "read": {
            "at": "0x0A0F",
            "cl": "0x0b04",
            "ep": 1,
            "fn": "zcl"
          },
          "parse": {
            "at": "0x0A0F",
            "cl": "0x0b04",
            "ep": 1,
            "eval": "if (Attr.val != -32768) { Item.val = Attr.val; }"
          },
          "default": 0
        },
        {
          "name": "state/voltage",
          "refresh.interval": 300,
          "read": {
            "at": "0x0a05",
            "cl": "0x0b04",
            "ep": 1,
            "fn": "zcl"
          },
          "parse": {
            "at": "0x0a05",
            "cl": "0x0b04",
            "ep": 1,
            "eval": "if (Attr.val != 65535) { Item.val = Attr.val; }"
          },
          "default": 0
        }
      ]
    },
    {
      "type": "$TYPE_CONSUMPTION_SENSOR",
      "restapi": "/sensors",
      "uuid": [
        "$address.ext",
        "0x01",
        "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",
          "refresh.interval": 300,
          "read": {
            "at": "0x0100",
            "cl": "0x0702",
            "ep": 1,
            "fn": "zcl"
          },
          "parse": {
            "at": "0x0100",
            "cl": "0x0702",
            "ep": 1,
            "eval": "Item.val = Attr.val"
          },
          "default": 0
        },
        {
          "name": "state/consumption_2",
          "refresh.interval": 300,
          "read": {
            "at": "0x0102",
            "cl": "0x0702",
            "ep": 1,
            "fn": "zcl"
          },
          "parse": {
            "at": "0x0102",
            "cl": "0x0702",
            "ep": 1,
            "eval": "Item.val = Attr.val"
          }
        },
        {
          "name": "state/power",
          "refresh.interval": 300,
          "read": {
            "at": "0x0306",
            "cl": "0x0b04",
            "ep": 1,
            "fn": "zcl"
          },
          "parse": {
            "at": "0x0306",
            "cl": "0x0b04",
            "ep": 1,
            "eval": "if (Attr.val != -32768) { Item.val = Attr.val; }"
          },
          "default": 0
        },
        {
          "name": "state/lastupdated"
        }
      ]
    },
    {
      "type": "ZHAAlarm",
      "restapi": "/sensors",
      "uuid": [
        "$address.ext",
        "0x01",
        "0xff66"
      ],
      "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/alarm",
          "refresh.interval": 300,
          "read": {
            "at": "0x0005",
            "cl": "0xff66",
            "ep": 1,
            "fn": "zcl"
          },
          "parse": {
            "at": "0x0005",
            "cl": "0xff66",
            "ep": 1,
            "eval": "Item.val = Attr.val > 0 ? true : false",
            "fn": "zcl"
          },
          "default": false
        },
        {
          "name": "state/lastupdated"
        }
      ]
    }
  ],
  "bindings": [
    {
      "bind": "unicast",
      "src.ep": 1,
      "cl": "0x0702",
      "report": [
        {
          "at": "0x0100",
          "dt": "0x25",
          "min": 60,
          "max": 300,
          "change": "0x00000001"
        },
        {
          "at": "0x0102",
          "dt": "0x25",
          "min": 60,
          "max": 300,
          "change": "0x00000001"
        }
      ]
    },
    {
      "bind": "unicast",
      "src.ep": 1,
      "cl": "0x0B04",
      "report": [
        {
          "at": "0x0505",
          "dt": "0x21",
          "min": 60,
          "max": 300,
          "change": "0x00000001"
        },
        {
          "at": "0x0905",
          "dt": "0x21",
          "min": 60,
          "max": 300,
          "change": "0x00000001"
        },
        {
          "at": "0x0A05",
          "dt": "0x21",
          "min": 60,
          "max": 300,
          "change": "0x00000001"
        },
        {
          "at": "0x0508",
          "dt": "0x21",
          "min": 60,
          "max": 300,
          "change": "0x00000001"
        },
        {
          "at": "0x0908",
          "dt": "0x21",
          "min": 60,
          "max": 300,
          "change": "0x00000001"
        },
        {
          "at": "0x0A08",
          "dt": "0x21",
          "min": 60,
          "max": 300,
          "change": "0x00000001"
        },
        {
          "at": "0x050F",
          "dt": "0x21",
          "min": 60,
          "max": 300,
          "change": "0x00000001"
        },
        {
          "at": "0x090F",
          "dt": "0x21",
          "min": 60,
          "max": 300,
          "change": "0x00000001"
        },
        {
          "at": "0x0A0F",
          "dt": "0x21",
          "min": 60,
          "max": 300,
          "change": "0x00000001"
        },
        {
          "at": "0x050B",
          "dt": "0x21",
          "min": 60,
          "max": 300,
          "change": "0x00000001"
        },
        {
          "at": "0x0306",
          "dt": "0x21",
          "min": 60,
          "max": 300,
          "change": "0x00000001"
        }
      ]
    },
    {
      "bind": "unicast",
      "src.ep": 1,
      "cl": "0xFF66",
      "report": [
        {
          "at": "0x0005",
          "dt": "0x21",
          "min": 60,
          "max": 300,
          "change": "0x00000001"
        }
      ]
    }
  ]
}

Seems you got the already documented FF endpoint bug : After DDF modification got duplicate clusters with 0xff endpoint - #27 by BabaIsYou

So you have added the total consumption in your DDF, have restart deconz and have now the ff-0B04 sensor ?

Yes i have a ff-0b04 sensor.

The only sure way I know to remove it is to delete the device first and then restart DeConz. If that’s not sufficient we perhaps have to go into database but it’s too early to go that way.

And we don’t know what provoke this issue, do you have set phoscon in permit join at a moment ? (“add new sensor”)

Pretty strange :thinking: gonna make a deep dive in the code to see where this is created, there can’t be that many places. The database loading should already prevent reloading such entries, but it doesn’t help if they are created again later on.

I try to remove my device in phoscon, remove device in jeedom. Restart jeedom and include device in phoscon. After synchro in jeedom. I always have a zhapower current, voltage and power ff-0b04.

And the bad thing is I don’t know a way to remove it, you need to use a SQL editor but it’s not something simple as thez device is not visible in it if I m right, or better if you have an old zigbee backup (made with phoscon)

Did you restart Deconz after deleting the device in Phoscon ? That’s the key here because Deconz seems to keep this sensor in memory until restart. As manup says, at restart some code prevent reloading it.

I remove zhapower for total power in zhaconsumption in ddf. And delete device and paring again. And the power ff-0b04 disappears.

Ha ? You mean adding

       {
          "name": "state/power",
          "refresh.interval": 300,
          "read": {
            "at": "0x0306",
            "cl": "0x0b04",
            "ep": 1,
            "fn": "zcl"
          },
          "parse": {
            "at": "0x0306",
            "cl": "0x0b04",
            "ep": 1,
            "eval": "if (Attr.val != -32768) { Item.val = Attr.val; }"
          },
          "default": 0
        },

this part, used for ZHAPower normally, inside the ZHAConsumption sensor provoke the ff-0b04 apparition ?
It’s exactly this code you are adding ?

Yes it’s exactly the code are adding. I post my ddf before.
This code adding power total in zhaconsumption but also a New zhapower ff-0b04 with no value.

Ha yes sorry LiXee ZLinky_TIC DDF File - #202 by Piksimou

Thx a lot, I realy have no clue where it’s from, but it’s the first time we have a way to produce the issue.

But about your problem, it mean if you want the total power, there is only 2 solutions, another ZHAPower just for it, or make yourself the addition using the 3 other ZHAPöwer ?

In your first ddf, i am add in zhaconsumption a total power. And i remove this part because i don’t know what is it.

{
          "at": "0x050B",
          "dt": "0x21",
          "min": 60,
          "max": 300,
          "change": "0x00000001"
        },
    

I remove device in phoscon, del in deconz. Include again device and all work.
Zhapower ff-0b04 has disappeared.

This part is the report for the attribute 0x050B, and you are right, it’s the power for monophase device, not used on your DDF, need to be removed.

Edit:
I m not sure have understand, you mean if you add the total power, but remove the useless report, you don’t have the ff-0b04 bad sensor ?