LiXee ZLinky_TIC DDF File

Yep exactly, it s the 0x0001 for production, can try this DDF

{
  "schema": "devcap1.schema.json",
  "manufacturername": "LiXee",
  "modelid": "ZLinky_TIC",
  "product": "ZLinky_TIC Standard+Base+production",
  "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; }"
          }
        },
        {
          "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; }"
          }
        },
        {
          "name": "state/voltage",
          "refresh.interval": 300
        }
      ]
    },
    {
      "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": "0x0000",
            "cl": "0x0702",
            "ep": 1,
            "fn": "zcl"
          },
          "parse": {
            "at": "0x0000",
            "cl": "0x0702",
            "ep": 1,
            "eval": "Item.val = Attr.val"
          }
        },
        {
          "name": "state/production",
          "refresh.interval": 300,
          "read": {
            "at": "0x0001",
            "cl": "0x0702",
            "ep": 1,
            "fn": "zcl"
          },
          "parse": {
            "at": "0x0100",
            "cl": "0x0702",
            "ep": 1,
            "eval": "Item.val = Attr.val"
          }
        },
        {
          "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": "0x0B04",
      "report": [
        {
          "at": "0x0508",
          "dt": "0x21",
          "min": 60,
          "max": 300,
          "change": "0x00000001"
        },
        {
          "at": "0x050F",
          "dt": "0x21",
          "min": 60,
          "max": 300,
          "change": "0x00000001"
        }
      ]
    },
    {
      "bind": "unicast",
      "src.ep": 1,
      "cl": "0x0702",
      "report": [
        {
          "at": "0x0000",
          "dt": "0x23",
          "min": 60,
          "max": 300,
          "change": "0x00000001"
        },
        {
          "at": "0x0001",
          "dt": "0x23",
          "min": 60,
          "max": 300,
          "change": "0x00000001"
        }
      ]
    },
    {
      "bind": "unicast",
      "src.ep": 1,
      "cl": "0xFF66",
      "report": [
        {
          "at": "0x0005",
          "dt": "0x21",
          "min": 60,
          "max": 300,
          "change": "0x00000001"
        }
      ]
    }
  ]
}

In Historique mode 0x0100 and 0x0102 are HC HP but in standard 0x0100 is total energy. It is just that wording in deconz gui only match Historique mode‚ not standard mode.

I m not sure to understand but in this DDF I m reading the attribute 0x0000 “Energie active soutirée totale”

Look at https://github.com/fairecasoimeme/Zlinky_TIC#synthèse-développeur 0x0100 description, it says that in Historique mode it will provide HC or Base total energy but in Standard mode it will provide EASF01 which is Base from your current provider. I think in Standard mode 0x0000 might not be what you want, because it is the sum of EASF01 EASF02 … I my case the value I read on my Linky matches EASF01 aka 0x0100

image

Look at my values : 10.048.259 is the meaningful value for me. I read 10048Kwh on my Linky. I do not know why I have a value at 0x0102 (2.962.448). Maybe it is to store value when changing provider, or old HP value from the time I was with HPHC… In any case, the 0x0000 value has no sense here.

Weirder I have no value at 0x0001. Still 0, but Linky shows a production of ~60Kwh… Where did it goes?

Regarding the production, maybe it is not send on TIC yet because I did not complete all the paperwork. If I read 0xFF66 0x0300 it says 1 which is " 1 - Mode standard monophasé " I think I need to be on mode " 5 - Mode standard monophasé producteur"

I’m on a triphasé contract, I will see if I can edit the DDF and made on a new one for this.
To be continued

@martintamare
I don’t find again the DDF on test for Triphasé but you can use for current

  • state/current_P1
  • state/current_P2
  • state/current_P3

@JSteunou It’s like you have not yet the standard mode ? 0x0100 and 0x0102 are 2 index, used for exemple for HP/HC mode, so its normal the total in 0x0000 is the sum for me (and can be a way to explore if you was in HPHC previously).
And strange you can’t see the value 0x0102 somewhere on the linky …

I can assure you I’m in Standard more. Linky shows it and 0xFF66 0x0300 is 1

I do not worry about 0x0000 0x0100 & 0x0102, ok it is weird, but why not… Maybe we need more people in standard more to see if they have the base index at 0x0100 and a weird sum at 0x0000 too.

I’ll come back later when I send my CAC to Enedis and switch to production mode to tell you if I can read my production then.

But it bothers me to see it on the Linky and not in deconz. It is as if all clusters related to production are kept to 0 if mode or bit for production is not set, whereas there are values or not.

Values are visible on enedis site too, so it s possible to compare value to see if there is a problem on value displayed on linky or if we realy need to use direclty the 0x0100, and ignore the 0x0100
On https://www.enedis.fr/ or perhaps you have a bill ?

I cannot find it :frowning:

On the part with statistics I sum up all values from all year, and it did not match any of the value I can get on Linky or ZLinky :sweat_smile:

Between the change from old mechanical counter to Linky + change from HCHP to normal something was lost in the way.

ATM it just works for me, reading 0x0100. We just need more users to confirm this logic or not. Maybe asking on github project?

Ok, so I think you are right, here LiXee ZLinky_TIC DDF File - #5 by alibert it s a DDF made by an user on standard + Base and he use 0x0100

But BTW what is the second counter ? And after 24 h working both counter increase ? or only the 0x0100 ?

Only 0x0100 increases. I do not know what is the second value. My guess: previous energy provider or old HC

Yep probably. I will update the file https://github.com/dresden-elektronik/deconz-rest-plugin/blob/master/devices/lixee/zlinky_tic_standard_mono_base.json with the attruibute 0x0100 when I will have a new DDF to add, for exemple your with production or the triphase one.

Hello, nothing news here ?
Have made a PR https://github.com/dresden-elektronik/deconz-rest-plugin/pull/6229 to correct consumption for Standard + base and add an attribute on the GUI.

If you have other thing to add, like the production ?

Hello. Thanks for the work already done!
I’m looking for a DDF enabling: Mode Historique + Triphasé + HPHC.
Is it available somewhere?

I’m only seeing:

  • historique+mono+base
  • historique+mono+hphc
  • standard+mono+base

Thanks for your help

Sure, can you try this DDF

{
  "schema": "devcap1.schema.json",
  "manufacturername": "LiXee",
  "modelid": "ZLinky_TIC",
  "vendor": "LiXee",
  "product": "ZLinky_TIC historique+HPHC+triphase",
  "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/consumption",
          "refresh.interval": 300,
          "read": {
            "at": "0x0100",
            "cl": "0x0702",
            "ep": 1,
            "fn": "zcl"
          },
          "parse": {
            "at": "0x0100",
            "cl": "0x0702",
            "ep": 0,
            "eval": "Item.val = Attr.val"
          }
        },
        {
          "name": "state/current_P1",
          "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; }"
          }
        },
        {
          "name": "state/current_P2",
          "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; }"
          }
        },
        {
          "name": "state/current_P3",
          "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; }"
          }
        },
        {
          "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; }"
          }
        },
        {
          "name": "state/voltage",
          "refresh.interval": 300
        }
      ]
    },
    {
      "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"
          }
        },
        {
          "name": "state/consumption_2",
          "refresh.interval": 300,
          "read": {
            "at": "0x0102",
            "cl": "0x0702",
            "ep": 1,
            "fn": "zcl"
          },
          "parse": {
            "at": "0x0102",
            "cl": "0x0702",
            "ep": 0,
            "eval": "Item.val = Attr.val"
          }
        },
        {
          "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": "0x0000",
          "dt": "0x23",
          "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": "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"
        }
      ]
    },
    {
      "bind": "unicast",
      "src.ep": 1,
      "cl": "0xFF66",
      "report": [
        {
          "at": "0x0005",
          "dt": "0x21",
          "min": 60,
          "max": 300,
          "change": "0x00000001"
        }
      ]
    }
  ]
}

Remark:

  • Older DDF use a fake sensor for HPHC, they have a ZHAConsumption finishing by 01 and another finishing by 02, and both using state/consumption. This DDF create only one ZHAConsumption but having state/consumption and state/consumption_2
  • The ZHAPower will have state/current_P1 state/current_P2 and state/current_P3, but the power is triphase.
  • The result will depend of third app integration, wich one are you using (can use the same trick for the ZHAConsumption but I think now they support it)? Else you can check the result in phoscon / help / API Information / sensor to see raw values.

@mathieu it’s ok or do you need more help ?

Hello,

Thank you very much for your work on the ZLinky DDF files, it is very helpful !
I am using the HP/HC DDF mainly for power and alarm.

Does anyone saw the alarm activated ?

I tried to exceed the subscription, 6500/6000 VA for me, during some time, about 1 minute. I could see the Linky symbol indicating that I was exceeding but I got no change on the alarm value on the Conbee API. I also changed the associated binding report min value to 1.

Thank you in advance for your help and have a good day,
Samuel

The DDF seems working, but I don’t see additional sensors on Home Assistant.
I have to test via the Rest API, but don’t I’ve time right now. I will try this week end.
Thanks for your help.

@Samuel There was already a discussion about this feature, will check on github if I find it again.

The DDF is looking for cluster 0xff66, attribute 0x0005, It just check if this value is > 0 or not, you can check it too in deconz to compare if you have the GUI.

Edit :
I have check the site GitHub - fairecasoimeme/Zlinky_TIC: Téléinformation Linky autoalimenté ZigBee 3.0 and I only see this feature for historic mode, wich one have you ?

Edit2:
Some tests here LiXee ZLinky_TIC · Issue #5459 · dresden-elektronik/deconz-rest-plugin · GitHub

Hello @Smanar,

Thank you for your help !

Yes, my Linky is using the historic mode with “heures pleines/heures creuses”. I am not using the deconz GUI, only the REST API.

The link #2 with the test is very instructive and it replies to my question !
I only checked the apparent power “Puissance apparente” not the current “Courant efficace” and I did not reached 7000 VA, I just stopped when the Linky showed its alert.

I will try again this weekend and maybe install the deconz GUI.

Have a good evening,
Samuel

I know there is an issue somewhere about this setting going “true” > 0 but never return to 0. But I can’t find it again, so idk if its solved or not, or if there is a special thing to do on the device to reset this value.