Add support for lumi Zigbee AC controller model KTWKQ03ES

This model works with the xiaomi gateway 3 in mihome app.

Please enable debug mode (debug: mqtt), read readme. Interact with device, change modes. And show logs (not a picture).

HI, THANKS for your response,
I think someone has already tried that:
some useful links:
https://github.com/Koenkk/zigbee2mqtt/issues/3306
https://zigbee2mqtt.discourse.group/t/support-eigenstone-thermostat-s2-ktwkq03es/1099/2

I will post my logs later.

I tried power off/on
adjust tempreture 30°C to 22°C
adjust fan speed: auto ->low->medium->high->auto
adjust mode : cool->heating->cool
here are the logs:

2020-11-10 12:38:20  DEBUG    gateway3      <IP_ADDRESS> | lumi.158d0004054c4f has an unsupported modell: lumi.airrtc.tcpecn02
2020-11-10 12:39:06  DEBUG    gateway3      <IP_ADDRESS> | [MQ] zigbee/recv {"cmd":"read","did":"lumi.158d0004054c4f","id":603,"params":[{"res_name":"14.2.85"}],"source":"","time":1604983145217}
2020-11-10 12:39:06  DEBUG    gateway3      <IP_ADDRESS> | [MQ] zigbee/send {"cmd":"report","id":65,"did":"lumi.158d0004054c4f","dev_src":"0","time":1604983145333,"rssi":-40,"params":[{"res_name":"14.2.85","value":288366197},{"res_name":"14.8.85","value":1},{"res_name":"14.9.85","value":30},{"res_name":"14.10.85","value":3},{"res_name":"3.2.85","value":29},{"res_name":"3.1.85","value":1}]}
2020-11-10 12:39:08  DEBUG    gateway3      <IP_ADDRESS> | [MQ] zigbee/recv {"cmd":"write","did":"lumi.158d0004054c4f","id":604,"params":[{"res_name":"3.1.85","value":0}],"source":"","time":1604983147313}
2020-11-10 12:39:08  DEBUG    gateway3      <IP_ADDRESS> | [MQ] zigbee/send {"cmd":"write_rsp","id":604,"time":1604983147317,"did":"lumi.158d0004054c4f","results":[{"res_name":"3.1.85","value":0,"error_code":0}]}
2020-11-10 12:39:08  DEBUG    gateway3      <IP_ADDRESS> | [MQ] zigbee/send {"cmd":"report","id":604,"did":"lumi.158d0004054c4f","dev_src":"0","time":1604983147396,"rssi":-40,"params":[{"res_name":"14.2.85","value":268435455},{"res_name":"14.8.85","value":15},{"res_name":"14.9.85","value":255},{"res_name":"14.10.85","value":15},{"res_name":"3.2.85","value":63},{"res_name":"3.1.85","value":0}]}
2020-11-10 12:39:09  DEBUG    gateway3      <IP_ADDRESS> | [MQ] zigbee/send {"cmd":"report","id":65,"did":"lumi.158d0004054c4f","dev_src":"0","time":1604983147669,"rssi":-40,"params":[{"res_name":"14.2.85","value":19930740},{"res_name":"14.8.85","value":1},{"res_name":"14.9.85","value":30},{"res_name":"14.10.85","value":3},{"res_name":"3.2.85","value":29},{"res_name":"3.1.85","value":0}]}
2020-11-10 12:40:32  DEBUG    gateway3      <IP_ADDRESS> | [MQ] zigbee/recv {"cmd":"write","did":"lumi.158d0004054c4f","id":605,"params":[{"res_name":"3.1.85","value":1}],"source":"","time":1604983230551}
2020-11-10 12:40:32  DEBUG    gateway3      <IP_ADDRESS> | [MQ] zigbee/send {"cmd":"write_rsp","id":605,"time":1604983230556,"did":"lumi.158d0004054c4f","results":[{"res_name":"3.1.85","value":1,"error_code":0}]}
2020-11-10 12:40:32  DEBUG    gateway3      <IP_ADDRESS> | [MQ] zigbee/send {"cmd":"report","id":605,"did":"lumi.158d0004054c4f","dev_src":"0","time":1604983230647,"rssi":-44,"params":[{"res_name":"14.2.85","value":536870911},{"res_name":"14.8.85","value":15},{"res_name":"14.9.85","value":255},{"res_name":"14.10.85","value":15},{"res_name":"3.2.85","value":63},{"res_name":"3.1.85","value":1}]}
2020-11-10 12:40:32  DEBUG    gateway3      <IP_ADDRESS> | [MQ] zigbee/send {"cmd":"report","id":65,"did":"lumi.158d0004054c4f","dev_src":"0","time":1604983231045,"rssi":-40,"params":[{"res_name":"14.2.85","value":285220469},{"res_name":"14.8.85","value":1},{"res_name":"14.9.85","value":30},{"res_name":"14.10.85","value":0},{"res_name":"3.2.85","value":29},{"res_name":"3.1.85","value":1}]}
2020-11-10 12:40:39  DEBUG    gateway3      <IP_ADDRESS> | [MQ] zigbee/send {"cmd":"report","id":65,"did":"lumi.158d0004054c4f","dev_src":"0","time":1604983238014,"rssi":-40,"params":[{"res_name":"14.2.85","value":288366197},{"res_name":"14.8.85","value":1},{"res_name":"14.9.85","value":30},{"res_name":"14.10.85","value":3},{"res_name":"3.2.85","value":29},{"res_name":"3.1.85","value":1}]}
2020-11-10 12:40:50  DEBUG    gateway3      <IP_ADDRESS> | [MQ] zigbee/send {"cmd":"heartbeat","id":2000013623,"time":1604983248832,"rssi":-40,"params":[{"did":"lumi.158d0004054c4f","time":1604983248832,"res_list":[{"res_name":"8.0.2006","value":33},{"res_name":"8.0.2002","value":8},{"res_name":"8.0.2022","value":30},{"res_name":"8.0.2023","value":49},{"res_name":"14.2.85","value":288366197}]}]}
2020-11-10 12:40:53  DEBUG    gateway3      <IP_ADDRESS> | [MQ] zigbee/recv {"cmd":"read","did":"lumi.158d0004054c4f","id":606,"params":[{"res_name":"14.2.85"}],"source":"","time":1604983251693}
2020-11-10 12:40:53  DEBUG    gateway3      <IP_ADDRESS> | [MQ] zigbee/send {"cmd":"report","id":65,"did":"lumi.158d0004054c4f","dev_src":"0","time":1604983251799,"rssi":-40,"params":[{"res_name":"14.2.85","value":288366197},{"res_name":"14.8.85","value":1},{"res_name":"14.9.85","value":30},{"res_name":"14.10.85","value":3},{"res_name":"3.2.85","value":29},{"res_name":"3.1.85","value":1}]}
2020-11-10 12:40:58  DEBUG    gateway3      <IP_ADDRESS> | [MQ] zigbee/recv {"cmd":"write","did":"lumi.158d0004054c4f","id":607,"params":[{"res_name":"14.2.85","value":288364149}],"source":"","time":1604983256904}
2020-11-10 12:40:58  DEBUG    gateway3      <IP_ADDRESS> | [MQ] zigbee/send {"cmd":"write_rsp","id":607,"time":1604983256909,"did":"lumi.158d0004054c4f","results":[{"res_name":"14.2.85","value":288364149,"error_code":0}]}
2020-11-10 12:40:58  DEBUG    gateway3      <IP_ADDRESS> | [MQ] zigbee/send {"cmd":"report","id":607,"did":"lumi.158d0004054c4f","dev_src":"0","time":1604983257002,"rssi":-44,"params":[{"res_name":"14.2.85","value":288364149},{"res_name":"14.8.85","value":1},{"res_name":"14.9.85","value":22},{"res_name":"14.10.85","value":3},{"res_name":"3.2.85","value":29},{"res_name":"3.1.85","value":1}]}
2020-11-10 12:40:58  DEBUG    gateway3      <IP_ADDRESS> | [MQ] zigbee/send {"cmd":"report","id":65,"did":"lumi.158d0004054c4f","dev_src":"0","time":1604983257483,"rssi":-40,"params":[{"res_name":"14.2.85","value":288364149},{"res_name":"14.8.85","value":1},{"res_name":"14.9.85","value":22},{"res_name":"14.10.85","value":3},{"res_name":"3.2.85","value":29},{"res_name":"3.1.85","value":1}]}
2020-11-10 12:41:02  DEBUG    gateway3      <IP_ADDRESS> | [MQ] zigbee/recv {"cmd":"write","did":"lumi.158d0004054c4f","id":608,"params":[{"res_name":"14.2.85","value":285218421}],"source":"","time":1604983260562}
2020-11-10 12:41:02  DEBUG    gateway3      <IP_ADDRESS> | [MQ] zigbee/send {"cmd":"write_rsp","id":608,"time":1604983260570,"did":"lumi.158d0004054c4f","results":[{"res_name":"14.2.85","value":285218421,"error_code":0}]}
2020-11-10 12:41:02  DEBUG    gateway3      <IP_ADDRESS> | [MQ] zigbee/send {"cmd":"report","id":608,"did":"lumi.158d0004054c4f","dev_src":"0","time":1604983260653,"rssi":-40,"params":[{"res_name":"14.2.85","value":285218421},{"res_name":"14.8.85","value":1},{"res_name":"14.9.85","value":22},{"res_name":"14.10.85","value":0},{"res_name":"3.2.85","value":29},{"res_name":"3.1.85","value":1}]}
2020-11-10 12:41:03  DEBUG    gateway3      <IP_ADDRESS> | [MQ] zigbee/recv {"cmd":"write","did":"lumi.158d0004054c4f","id":609,"params":[{"res_name":"14.2.85","value":286266997}],"source":"","time":1604983262375}
2020-11-10 12:41:03  DEBUG    gateway3      <IP_ADDRESS> | [MQ] zigbee/send {"cmd":"write_rsp","id":609,"time":1604983262381,"did":"lumi.158d0004054c4f","results":[{"res_name":"14.2.85","value":286266997,"error_code":0}]}
2020-11-10 12:41:03  DEBUG    gateway3      <IP_ADDRESS> | [MQ] zigbee/send {"cmd":"report","id":609,"did":"lumi.158d0004054c4f","dev_src":"0","time":1604983262471,"rssi":-44,"params":[{"res_name":"14.2.85","value":286266997},{"res_name":"14.8.85","value":1},{"res_name":"14.9.85","value":22},{"res_name":"14.10.85","value":1},{"res_name":"3.2.85","value":29},{"res_name":"3.1.85","value":1}]}
2020-11-10 12:41:04  DEBUG    gateway3      <IP_ADDRESS> | [MQ] zigbee/recv {"cmd":"write","did":"lumi.158d0004054c4f","id":610,"params":[{"res_name":"14.2.85","value":287315573}],"source":"","time":1604983263466}
2020-11-10 12:41:04  DEBUG    gateway3      <IP_ADDRESS> | [MQ] zigbee/send {"cmd":"write_rsp","id":610,"time":1604983263471,"did":"lumi.158d0004054c4f","results":[{"res_name":"14.2.85","value":287315573,"error_code":0}]}
2020-11-10 12:41:05  DEBUG    gateway3      <IP_ADDRESS> | [MQ] zigbee/send {"cmd":"report","id":610,"did":"lumi.158d0004054c4f","dev_src":"0","time":1604983263658,"rssi":-44,"params":[{"res_name":"14.2.85","value":287315573},{"res_name":"14.8.85","value":1},{"res_name":"14.9.85","value":22},{"res_name":"14.10.85","value":2},{"res_name":"3.2.85","value":29},{"res_name":"3.1.85","value":1}]}
2020-11-10 12:41:05  DEBUG    gateway3      <IP_ADDRESS> | [MQ] zigbee/recv {"cmd":"write","did":"lumi.158d0004054c4f","id":611,"params":[{"res_name":"14.2.85","value":288364149}],"source":"","time":1604983264377}
2020-11-10 12:41:05  DEBUG    gateway3      <IP_ADDRESS> | [MQ] zigbee/send {"cmd":"write_rsp","id":611,"time":1604983264383,"did":"lumi.158d0004054c4f","results":[{"res_name":"14.2.85","value":288364149,"error_code":0}]}
2020-11-10 12:41:05  DEBUG    gateway3      <IP_ADDRESS> | [MQ] zigbee/send {"cmd":"report","id":611,"did":"lumi.158d0004054c4f","dev_src":"0","time":1604983264495,"rssi":-40,"params":[{"res_name":"14.2.85","value":288364149},{"res_name":"14.8.85","value":1},{"res_name":"14.9.85","value":22},{"res_name":"14.10.85","value":3},{"res_name":"3.2.85","value":29},{"res_name":"3.1.85","value":1}]}
2020-11-10 12:41:08  DEBUG    gateway3      <IP_ADDRESS> | [MQ] zigbee/recv {"cmd":"write","did":"lumi.158d0004054c4f","id":612,"params":[{"res_name":"14.2.85","value":271586933}],"source":"","time":1604983267248}
2020-11-10 12:41:08  DEBUG    gateway3      <IP_ADDRESS> | [MQ] zigbee/send {"cmd":"write_rsp","id":612,"time":1604983267255,"did":"lumi.158d0004054c4f","results":[{"res_name":"14.2.85","value":271586933,"error_code":0}]}
2020-11-10 12:41:08  DEBUG    gateway3      <IP_ADDRESS> | [MQ] zigbee/send {"cmd":"report","id":612,"did":"lumi.158d0004054c4f","dev_src":"0","time":1604983267344,"rssi":-40,"params":[{"res_name":"14.2.85","value":271586933},{"res_name":"14.8.85","value":0},{"res_name":"14.9.85","value":22},{"res_name":"14.10.85","value":3},{"res_name":"3.2.85","value":29},{"res_name":"3.1.85","value":1}]}
2020-11-10 12:41:09  DEBUG    gateway3      <IP_ADDRESS> | [MQ] zigbee/send {"cmd":"report","id":65,"did":"lumi.158d0004054c4f","dev_src":"0","time":1604983267945,"rssi":-40,"params":[{"res_name":"14.2.85","value":271586935},{"res_name":"14.8.85","value":0},{"res_name":"14.9.85","value":22},{"res_name":"14.10.85","value":3},{"res_name":"3.2.85","value":29},{"res_name":"3.1.85","value":1}]}
2020-11-10 12:41:10  DEBUG    gateway3      <IP_ADDRESS> | [MQ] zigbee/recv {"cmd":"write","did":"lumi.158d0004054c4f","id":613,"params":[{"res_name":"14.2.85","value":288364149}],"source":"","time":1604983268539}
2020-11-10 12:41:10  DEBUG    gateway3      <IP_ADDRESS> | [MQ] zigbee/send {"cmd":"write_rsp","id":613,"time":1604983268548,"did":"lumi.158d0004054c4f","results":[{"res_name":"14.2.85","value":288364149,"error_code":0}]}
2020-11-10 12:41:10  DEBUG    gateway3      <IP_ADDRESS> | [MQ] zigbee/send {"cmd":"report","id":613,"did":"lumi.158d0004054c4f","dev_src":"0","time":1604983268624,"rssi":-40,"params":[{"res_name":"14.2.85","value":288364149},{"res_name":"14.8.85","value":1},{"res_name":"14.9.85","value":22},{"res_name":"14.10.85","value":3},{"res_name":"3.2.85","value":29},{"res_name":"3.1.85","value":1}]}
2020-11-10 12:41:10  DEBUG    gateway3      <IP_ADDRESS> | [MQ] zigbee/send {"cmd":"report","id":65,"did":"lumi.158d0004054c4f","dev_src":"0","time":1604983269361,"rssi":-40,"params":[{"res_name":"14.2.85","value":288364151},{"res_name":"14.8.85","value":1},{"res_name":"14.9.85","value":22},{"res_name":"14.10.85","value":3},{"res_name":"3.2.85","value":29},{"res_name":"3.1.85","value":1}]}

There are 3 similar models on the market:
KTWKQ01ES
KTWKQ02ES
KTWKQ03ES
I assume that they use the same firmware.

https://kvvhost.ru/2020/08/04/eigenstone-s2-thermostat/

Property 14.2.85 has some encoded AC state. You need to match the exact settings of the AC with each value of this parameter.

hi, each time I adjust it with mihome app, a writ_rsp comand is sent after a write command is recieved:
[MQ] zigbee/recv {"cmd":"write","did":"lumi.158d0004054c4f","id":330,"params":[{"res_name":"14.2.85","value":xxxxxxxxx}],"source":"","time":1605106734489}
zigbee/send {"cmd":"write_rsp","id":332,"time":1605106977123,"did":"lumi.158d0004054c4f","results":[{"res_name":"14.2.85","value":xxxxxxxxx,"error_code":0}]}

the value of "14.2.85" are as below:
fan_speed：auto/low/medium/high
target_temp：17-30
mode: cool/heat
[{"res_name":"14.2.85","value":285220469}] set to: low 30 cool
[{"res_name":"14.2.85","value":286269045}] set to: medium 30 cool
[{"res_name":"14.2.85","value":287317621}] set to: high 30 cool
[{"res_name":"14.2.85","value":288366197}] set to: auto 30 cool
[{"res_name":"14.2.85","value":268443253}] set to: low 30 heat
[{"res_name":"14.2.85","value":269491829}] set to: medium 30 heat
[{"res_name":"14.2.85","value":270540405}] set to: high 30 heat
[{"res_name":"14.2.85","value":271588981}] set to: auto 30 heat
[{"res_name":"14.2.85","value":271586677}] set to: auto 21 heat
[{"res_name":"14.2.85","value":288363893}] set to: auto 21 cool
[{"res_name":"14.2.85","value":285218165}] set to: low 21 cool
[{"res_name":"14.2.85","value":286266741}] set to: medium 21 cool
[{"res_name":"14.2.85","value":287315317}] set to: high 21 cool
[{"res_name":"14.2.85","value":287316341}] set to: high 25 cool

some other actions:
[{"res_name":"14.2.85","value":18880885}] from poweron high 25 cool to poweroff
[{"res_name":"14.2.85","value":287316341}] from poweroff to poweron high 25 cool
[{"res_name":"14.2.85","value":287317621}] set to high 30 cool
[{"res_name":"14.2.85","value":18882165}] from poweron high 30 cool to poweroff
[{"res_name":"14.2.85","value":287317621}] from poweroff to poweron high 30 cool

state report(power on,high fan speed,target temperature 30,current temperature 29,cool):
2020-11-11 23:16:59  DEBUG    gateway3      <IP_ADDRESS> | [MQ] gw/842E14FFFE1504A0/MessageReceived {"sourceAddress":"0x6F5E","eui64":"0x00158D0004054C4F","destinationEndpoint":"0x01","clusterId":"0x0000","profileId":"0x0104","sourceEndpoint":"0x01","APSCounter":"0xEF","APSPlayload":"0x1C5F116E0AF0FF410CAA8008CE870F8523751E3011","rssi":-44,"linkQuality":224}
2020-11-11 23:16:59  DEBUG    gateway3      <IP_ADDRESS> | [MQ] zigbee/send {"cmd":"report","id":65,"did":"lumi.158d0004054c4f","dev_src":"0","time":1605107818772,"rssi":-44,"params":[{"res_name":"14.2.85","value":288366197},{"res_name":"14.8.85","value":1},{"res_name":"14.9.85","value":30},{"res_name":"14.10.85","value":3},{"res_name":"3.2.85","value":29},{"res_name":"3.1.85","value":1}]}
2020-11-11 23:16:59  DEBUG    gateway3      <IP_ADDRESS> | [MQ] gw/842E14FFFE1504A0/MessageReceived {"sourceAddress":"0x6F5E","eui64":"0x00158D0004054C4F","destinationEndpoint":"0x01","clusterId":"0x0000","profileId":"0x0104","sourceEndpoint":"0x01","APSCounter":"0xF0","APSPlayload":"0x1C5F116F0A00F023005E6F03","rssi":-44,"linkQuality":224}
2020-11-11 23:16:59  DEBUG    gateway3      <IP_ADDRESS> | [MQ] gw/842E14FFFE1504A0/MessageReceived {"sourceAddress":"0x638B","eui64":"0x00158D0002C7A097","destinationEndpoint":"0x01","clusterId":"0x000A","profileId":"0x0104","sourceEndpoint":"0x01","APSCounter":"0x0A","APSPlayload":"0x1079000000","rssi":-53,"linkQuality":188}

state report(power off,high fan speed,target temperature 30,current temperature 29,cool):
2020-11-11 23:25:40  DEBUG    gateway3      <IP_ADDRESS> | [MQ] zigbee/send {"cmd":"report","id":345,"did":"lumi.158d0004054c4f","dev_src":"0","time":1605108339979,"rssi":-42,"params":[{"res_name":"14.2.85","value":18882165},{"res_name":"14.8.85","value":1},{"res_name":"14.9.85","value":30},{"res_name":"14.10.85","value":2},{"res_name":"3.2.85","value":29},{"res_name":"3.1.85","value":0}]}
2020-11-11 23:25:40  DEBUG    gateway3      <IP_ADDRESS> | [MQ] gw/842E14FFFE1504A0/MessageReceived {"sourceAddress":"0xA3E4","eui64":"0x00158D00037391A9","destinationEndpoint":"0x01","clusterId":"0x000A","profileId":"0x0104","sourceEndpoint":"0x01","APSCounter":"0x56","APSPlayload":"0x1087000000","rssi":-52,"linkQuality":192}
2020-11-11 23:25:40  DEBUG    gateway3      <IP_ADDRESS> | lumi.158d00037391a9 <= LQI 192
2020-11-11 23:25:40  DEBUG    gateway3      <IP_ADDRESS> | [MQ] gw/842E14FFFE1504A0/MessagePreSentCallback {"eui64":"0x00158D00037391A9","destinationEndpoint":"0x01","clusterId":"0x000A","profileId":"0x0104","sourceEndpoint":"0x01","APSCounter":"0x00","APSPlayload":"0x188701000000E2702F3F27"}
2020-11-11 23:25:40  DEBUG    gateway3      <IP_ADDRESS> | [MQ] gw/842E14FFFE1504A0/MessageReceived {"sourceAddress":"0x6F5E","eui64":"0x00158D0004054C4F","destinationEndpoint":"0x01","clusterId":"0x0000","profileId":"0x0104","sourceEndpoint":"0x01","APSCounter":"0x11","APSPlayload":"0x1C5F11710AF0FF410CAA8008CE870F8523741E3001","rssi":-44,"linkQuality":224}
2020-11-11 23:25:40  DEBUG    gateway3      <IP_ADDRESS> | [MQ] zigbee/send {"cmd":"report","id":65,"did":"lumi.158d0004054c4f","dev_src":"0","time":1605108340360,"rssi":-44,"params":[{"res_name":"14.2.85","value":19930740},{"res_name":"14.8.85","value":1},{"res_name":"14.9.85","value":30},{"res_name":"14.10.85","value":3},{"res_name":"3.2.85","value":29},{"res_name":"3.1.85","value":0}]}
2020-11-11 23:25:40  DEBUG    gateway3      <IP_ADDRESS> | [MQ] gw/842E14FFFE1504A0/MessageReceived {"sourceAddress":"0x6F5E","eui64":"0x00158D0004054C4F","destinationEndpoint":"0x01","clusterId":"0x0000","profileId":"0x0104","sourceEndpoint":"0x01","APSCounter":"0x12","APSPlayload":"0x1C5F11720A00F02300000007","rssi":-44,"linkQuality":224}
2020-11-11 23:25:41  DEBUG    gateway3      <IP_ADDRESS> | [MQ] gw/842E14FFFE1504A0/MessageReceived {"sourceAddress":"0x7056","eui64":"0x00158D00041F1E28","destinationEndpoint":"0x01","clusterId":"0x000A","profileId":"0x0104","sourceEndpoint":"0x01","APSCounter":"0x11","APSPlayload":"0x1047000000","rssi":-42,"linkQuality":232}

Also link with some info https://sprut.ai/client/article/1937

@ptbsare please check if I right

3.1.85, power, 0 = off, 1 = on
3.2.85, current temperature
14.8.85, mode, 1 = cool, other values?
14.9.85, target temperature
14.10.85, fan speed, 0 - low, 1 - medium, 2 - high, 3 - auto ?

@ptbsare please check if I right

3.1.85, power, 0 = off, 1 = on
3.2.85, current temperature
14.8.85, mode, 1 = cool, other values?
14.9.85, target temperature
14.10.85, fan speed, 0 - low, 1 - medium, 2 - high, 3 - auto ?

3.1.85, power, 0 = off, 1 = on  ---correct
3.2.85, current temperature  ---correct
14.8.85, mode, 1 = cool, 0 = heat
14.9.85, target temperature  ---correct
14.10.85, fan speed, 0 - low, 1 - medium, 2 - high, 3 - auto ---correct
@AlexxIT

Hi. Try latest master version. It can be installed via HACS.
I'm not sure I did everything right.
I am taking the current state from 3.1.85, 3.2.85, 14.8.85, 14.9.85, 14.10.85
And change state from HA with 14.2.85
Also show Retain line from logs.

Tested, It works like a charm!
NIce job done!!
Thanks.

Wow. I don't expect it will work in first release.
Also show Retain line from logs.
For restore attributes after restart HA.

2020-12-09 17:58:59  DEBUG    gateway3      <IP_ADDRESS> | lumi.158d0004054c4f lumi.airrtc.tcpecn02 retain: {'ac_state': '288365149', 'ac_status': '', 'alive': 1, 'co2': 0, 'com_cfg': '00070003', 'fw_ver': 30, 'hw_ver': 49, 'power_status': 'on'}

@AlexxIT This is the retain line from log.
I found that the states are not restored for a while after HA restarts

@AlexxIT From the Log I can see that the Ac state (mode, target temperature, fan speed.etc) is wrong when the power is off, which may cause mqtt server crashs. When the power is on , the reported ac state is OK.

related to issue #111
It may be related to the wrongly decoded ac state (res_name":"14.2.85","value":268435455), which results mqtt server crashs and it never connects back. I guess.

@ptbsare check latest master version. There is a check for errors. It will not fall and show the cause of the problem.

@AlexxIT
Logger: custom_components.xiaomi_gateway3.climate
Source: custom_components/xiaomi_gateway3/climate.py:85
Integration: Xiaomi Gateway 3 (documentation)
First occurred: 下午4:52:29 (1 occurrences)
Last logged: 下午4:52:29

Can't read climate data: {'climate': 268435455, 'mode': 15, 'target_temperature': 255, 'fan_mode': 15, 'current_temperature': 63, 'power': 0}
Traceback (most recent call last):
  File "/config/custom_components/xiaomi_gateway3/climate.py", line 85, in update
    self._hvac_mode = HVAC_MODES[data['mode']]
IndexError: list index out of range

Fixed in latest master

Fixed.

I don't fix retain yet

@AlexxIT Zigbee AC controller model KTWKQ03ES
The  device control works perfectly nowadays. The problem is that when I include this AC controller (climate) in a scene (such as called "people away home") in which this Ac controller's running mode should be set to 'off' without setting a target temperature (in fact I can not set a target temperature when the running mode is off), I can NOT activate the scene because it throwed out the following error:
Can not activate the scene, expected float for dictionary value @ data['temperature']

Other AC ac controllers (not zigbee) in the same scene do not have this issue.
Full error logs when activating the scene are as below:
[140112359292736] expected float for dictionary value @ data['temperature']
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 135, in handle_call_service
    await hass.services.async_call(
  File "/usr/src/homeassistant/homeassistant/core.py", line 1445, in async_call
    task.result()
  File "/usr/src/homeassistant/homeassistant/core.py", line 1480, in _execute_service
    await handler.job.target(service_call)
  File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 204, in handle_service
    await self.hass.helpers.service.entity_service_call(
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 593, in entity_service_call
    future.result()  # pop exception if have
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 664, in async_request_call
    await coro
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 630, in _handle_entity_call
    await result
  File "/usr/src/homeassistant/homeassistant/components/homeassistant/scene.py", line 311, in async_activate
    await async_reproduce_state(
  File "/usr/src/homeassistant/homeassistant/helpers/state.py", line 106, in async_reproduce_state
    await asyncio.gather(
  File "/usr/src/homeassistant/homeassistant/helpers/state.py", line 100, in worker
    await platform.async_reproduce_states(  # type: ignore
  File "/usr/src/homeassistant/homeassistant/components/climate/reproduce_state.py", line 83, in async_reproduce_states
    await asyncio.gather(
  File "/usr/src/homeassistant/homeassistant/components/climate/reproduce_state.py", line 60, in _async_reproduce_states
    await call_service(
  File "/usr/src/homeassistant/homeassistant/components/climate/reproduce_state.py", line 45, in call_service
    await hass.services.async_call(
  File "/usr/src/homeassistant/homeassistant/core.py", line 1399, in async_call
    processed_data = handler.schema(service_data)
  File "/usr/local/lib/python3.8/site-packages/voluptuous/validators.py", line 218, in __call__
    return self._exec((Schema(val) for val in self.validators), v)
  File "/usr/local/lib/python3.8/site-packages/voluptuous/validators.py", line 341, in _exec
    raise e if self.msg is None else AllInvalid(self.msg, path=path)
  File "/usr/local/lib/python3.8/site-packages/voluptuous/validators.py", line 337, in _exec
    v = func(v)
  File "/usr/local/lib/python3.8/site-packages/voluptuous/schema_builder.py", line 272, in __call__
    return self._compiled([], data)
  File "/usr/local/lib/python3.8/site-packages/voluptuous/validators.py", line 215, in _run
    return self._exec(self._compiled, value, path)
  File "/usr/local/lib/python3.8/site-packages/voluptuous/validators.py", line 341, in _exec
    raise e if self.msg is None else AllInvalid(self.msg, path=path)
  File "/usr/local/lib/python3.8/site-packages/voluptuous/validators.py", line 339, in _exec
    v = func(path, v)
  File "/usr/local/lib/python3.8/site-packages/voluptuous/schema_builder.py", line 817, in validate_callable
    return schema(data)
  File "/usr/local/lib/python3.8/site-packages/voluptuous/schema_builder.py", line 272, in __call__
    return self._compiled([], data)
  File "/usr/local/lib/python3.8/site-packages/voluptuous/schema_builder.py", line 594, in validate_dict
    return base_validate(path, iteritems(data), out)
  File "/usr/local/lib/python3.8/site-packages/voluptuous/schema_builder.py", line 432, in validate_mapping
    raise er.MultipleInvalid(errors)
voluptuous.error.MultipleInvalid: expected float for dictionary value @ data['temperature']

@AlexxIT Zigbee AC controller model KTWKQ03ES
The  device control works perfectly nowadays. The problem is that when I include this AC controller (climate) in a scene (such as called "people away home") in which this Ac controller's running mode should be set to 'off' without setting a target temperature (in fact I can not set a target temperature when the running mode is off), I can NOT activate the scene because it throwed out the following error:
Can not activate the scene, expected float for dictionary value @ data['temperature']

Other AC ac controllers (not zigbee) in the same scene do not have this issue.
Full error logs when activating the scene are as below:
[140112359292736] expected float for dictionary value @ data['temperature']
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 135, in handle_call_service
    await hass.services.async_call(
  File "/usr/src/homeassistant/homeassistant/core.py", line 1445, in async_call
    task.result()
  File "/usr/src/homeassistant/homeassistant/core.py", line 1480, in _execute_service
    await handler.job.target(service_call)
  File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 204, in handle_service
    await self.hass.helpers.service.entity_service_call(
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 593, in entity_service_call
    future.result()  # pop exception if have
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 664, in async_request_call
    await coro
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 630, in _handle_entity_call
    await result
  File "/usr/src/homeassistant/homeassistant/components/homeassistant/scene.py", line 311, in async_activate
    await async_reproduce_state(
  File "/usr/src/homeassistant/homeassistant/helpers/state.py", line 106, in async_reproduce_state
    await asyncio.gather(
  File "/usr/src/homeassistant/homeassistant/helpers/state.py", line 100, in worker
    await platform.async_reproduce_states(  # type: ignore
  File "/usr/src/homeassistant/homeassistant/components/climate/reproduce_state.py", line 83, in async_reproduce_states
    await asyncio.gather(
  File "/usr/src/homeassistant/homeassistant/components/climate/reproduce_state.py", line 60, in _async_reproduce_states
    await call_service(
  File "/usr/src/homeassistant/homeassistant/components/climate/reproduce_state.py", line 45, in call_service
    await hass.services.async_call(
  File "/usr/src/homeassistant/homeassistant/core.py", line 1399, in async_call
    processed_data = handler.schema(service_data)
  File "/usr/local/lib/python3.8/site-packages/voluptuous/validators.py", line 218, in __call__
    return self._exec((Schema(val) for val in self.validators), v)
  File "/usr/local/lib/python3.8/site-packages/voluptuous/validators.py", line 341, in _exec
    raise e if self.msg is None else AllInvalid(self.msg, path=path)
  File "/usr/local/lib/python3.8/site-packages/voluptuous/validators.py", line 337, in _exec
    v = func(v)
  File "/usr/local/lib/python3.8/site-packages/voluptuous/schema_builder.py", line 272, in __call__
    return self._compiled([], data)
  File "/usr/local/lib/python3.8/site-packages/voluptuous/validators.py", line 215, in _run
    return self._exec(self._compiled, value, path)
  File "/usr/local/lib/python3.8/site-packages/voluptuous/validators.py", line 341, in _exec
    raise e if self.msg is None else AllInvalid(self.msg, path=path)
  File "/usr/local/lib/python3.8/site-packages/voluptuous/validators.py", line 339, in _exec
    v = func(path, v)
  File "/usr/local/lib/python3.8/site-packages/voluptuous/schema_builder.py", line 817, in validate_callable
    return schema(data)
  File "/usr/local/lib/python3.8/site-packages/voluptuous/schema_builder.py", line 272, in __call__
    return self._compiled([], data)
  File "/usr/local/lib/python3.8/site-packages/voluptuous/schema_builder.py", line 594, in validate_dict
    return base_validate(path, iteritems(data), out)
  File "/usr/local/lib/python3.8/site-packages/voluptuous/schema_builder.py", line 432, in validate_mapping
    raise er.MultipleInvalid(errors)
voluptuous.error.MultipleInvalid: expected float for dictionary value @ data['temperature']

https://github.com/AlexxIT/XiaomiGateway3/commit/7e5fb9809ffdc0a61cc581dd15372bcdaecc6a8e#diff-b588a5a8348e2c9dd93959afa76d67083a64d8fa18350c59d702eb1d6a61a0edR98
Instead of setting target_temp to none, setting a numerical value from AC state retain should fix the problem.

https://github.com/AlexxIT/XiaomiGateway3/commit/7e5fb9809ffdc0a61cc581dd15372bcdaecc6a8e#diff-b588a5a8348e2c9dd93959afa76d67083a64d8fa18350c59d702eb1d6a61a0edR98
Instead of setting target_temp to none, setting a numerical value from AC state retain should fix the problem.

@ptbsare can you show retain line for power off device?

@ptbsare can you show retain line for power off device?

@AlexxIT
2021-01-11 23:57:57  DEBUG    gateway3      <IP_ADDRESS> | lumi.158d0004054c4f lumi.airrtc.tcpecn02 retain: {'ac_state': '19929668', 'ac_status': '', 'alive': 1, 'co2': 0, 'com_cfg': '00070003', 'fw_ver': 30, 'hw_ver': 49, 'power_status': 'off'}

@AlexxIT
2021-01-11 23:57:57  DEBUG    gateway3      <IP_ADDRESS> | lumi.158d0004054c4f lumi.airrtc.tcpecn02 retain: {'ac_state': '19929668', 'ac_status': '', 'alive': 1, 'co2': 0, 'com_cfg': '00070003', 'fw_ver': 30, 'hw_ver': 49, 'power_status': 'off'}

Can confirm that latest master fixed the issue and retain also works. Thanks.  I think this should be closed now.

Can confirm that latest master fixed the issue and retain also works. Thanks.  I think this should be closed now.

There are 3 similar models on the market:
KTWKQ01ES
KTWKQ02ES
KTWKQ03ES
I assume that they use the same firmware.

It seems Xiaomi have dropped KTWKQ01ES (lumi.ctrl_hvac.es1) support.
Only KTWKQ02ES (lumi.airrtc.tcpecn02) and KTWKQ03ES (lumi.airrtc.tcpecn02) are supported and can find within MIOT-Spec. That explains why it can't finish the pair process with Gateway V3 (and M1s I spouse).


Update QUIRREL domain

I keep receiving 401 errors for quirrel, and I am not sure where it comes from. I know that we switched to the main domain being www. so maybe this fixes it?

This is a non-breaking change given that it's already broken - simply making a PR for documentation. @nsunami I will merge this but please ping me if you find this process disagreeable. This only adjusts the environment variable for the deployment.

I agree with the process! 👍


[Feature] Adding a Favicon

There isn't any favicon currently for landscape2. So, We can add a new favicon for landscape2, which will be of

Thanks @kumarankit999. We are making this configurable from the settings file instead of adding a single icon, @cynthia-sg is already working on this.
The reason is that the tool must be able to generate multiple landscapes, and each one may use a different icon (in the same way they use a different logo or colors). You can see some of them in the landscape2-sites repo 🙂

OK I see


Flink SQL parse error

The Type of SQL
FlinkSQL
Your Code
INSERT INTO myResult
    SELECT
        a.channel AS  channel,
        a.name  AS pv,
        CAST('B_10016' AS string) AS biz_tp,
        FROM_UNIXTIME(a1.ddd/1000, 'yyyyMMddHHmmss') AS scn_tm,
        DATE_FORMAT(a.loc, 'yyyyMMddHHmmss') AS etl_ld_tm
    FROM
        huawei a;

Problem

The anomaly occurs in Rule SLASH_TEXT


Add timeout for device closing

Allows script to terminate despite communication errors with the Luos network.
As this feature might hide some other problems, I added a warning message if the polling thread didn't terminate cleanly.

Nice feature, thanks for this.


GUACAMOLE-1740: Don't display clipboard contents in the clipboard editor until it is focused on.

When bringing up the Guacamole menu (Ctrl+Alt+Shift) the contents of your clipboard are immediately visible within the clipboard editor. For privacy purposes, the contents of the clipboard editor should be hidden/collapsed until the user chooses to expand/show them.
This Pull request updates the Clipboard Directive to prevent displaying clipboard data in the clipboard editor until the clipboard editor has been focused on.

Can you post a screenshot showing what this change would look like to a user?

That looks pretty good! It does look like that screenshot has a  branding extension applied however - can you show what it looks like without the extension?


Should we bring adapters into this package

I'm wondering if csv-json xml-json adapters should be in this package and part of the process...
This will then include  json-csv and json-xml post adapters.

They will most likely not be here.


Image Build Cleanup - Remove Runtime Unused Files

Hi guys
Is to possible to run docker and mark all used files? After this, remove the unused files? I have a docker image with +3Gb and I'm sure i use +- 500Mb only
Any idea/tool to do this? My idea was run docker with some tracking tool, mark files and remove them from image (build phase)
Thanks

Closing, this is the wrong repository to open this issue in. Please open an issue in https://github.com/moby/moby


Add when-let as a core macro

I noticed a lot of (let [...] (when ... in conjure, so it seemed like a good idea to add this trusty helper macro to Aniseed!
I originally had it as single-pair Clojure version but given fennel's if being variadic, seemed appropriate to make this one variadic as well. I originally had an assertion that the bindings is sequential? as seen in the comment, but I couldn't figure out how to make fennel see that recursive calls were passing in sequences and not tables. icollect didn't help, and neither did [(unpack r)], so I'm not sure what it would take.

Cool idea! However, isn't this more "clever" than Clojure's when-let? 🤔 as I recall Clojure's *-let macros only let you define one binding, yours allows many? Which is maybe okay but the more complexity makes me fear documenting and supporting it. Maybe I'm being silly, but I quite liked the simple rules of "it only lets you do one thing, but it saves you doing (when (let))".
What do you think? Am I wrong and are you copying an implementation that DOES allow many? If so, is it an implicit (and ...) around the values? Do you ever use that feature? Would you miss it if we simplified it to one binding (which I think is easier to implement / get right / read in the future?)?
Just want to avoid complexity anywhere I can if possible, especially in macros 😄

You're right, hah, which is why I said "I originally had it as single-pair Clojure version but given fennel's if being variadic, seemed appropriate to make this one variadic as well." in the second paragraph.
I think both are fine. I've occasionally found myself reaching for a when-let* but much less frequently than the single-pair version. Up to you, really!

Ah sorry! I should've read more! I'm still ill and feeling a little fuzzy so I blame it on that 😬 heading out for a bit but will take a look when I'm home. I'm on the fence, sometimes I've wanted many bindings in when-lets but something is drawing me to having it as simple as possible because macros can be scary (and produce more Lua!) and being totally in line with Clojure is appealing to me.
But I'll have a think as I walk! I do like the idea though, I'll probably add if-let too... hopefully it doesn't clash with anyone else's stuff. I guess if someone has defined their own when-let it'll take precedence over this one anyway.

Oh yeah, I guess there isn't an if-let. I could add that here if you want it too.
As for the variadic, it really depends on whether you want to match Clojure or Fennel, I think.


activePullRequest view tries to register multiple times when there are multiple repos

Fixes #3515

Awesome.  How soon will this hit the stable release channel?


Please add flutter support

I think this package must be converted for flutter apps. Thanks

You can already use it in flutter apps. You just need to call native code: https://flutter.dev/docs/development/platform-integration/platform-channels.
iOS can already do this without any plugins.


[4.1] Fixing enter key submit form on inline create

This solves issue: #2845

A new inspection was created.

The inspection completed: No new issues

Awesome! Thanks @pxpm !


Proxy communicates with Mixer over plaintext even with auth enabled

Even when auth is enabled, proxy communicates with Mixer over plain text.
global:
  # controlPlaneMtls enabled. Will result in delays starting the pods while secrets are
  # propagated, not recommended for tests.
  controlPlaneSecurityEnabled: true
  mtls:
    # Default setting for service-to-service mtls. Can be set explicitly using
    # destination rules or service annotations.
    enabled: true

The above configuration is generated unless deprecated auth_policy: istio_mutual is also set.
PR #7156 fixes this problem.

It would be good to deprecate all the unused configuration options for real.

Note that sidecar is still exposing plain text Mixer (per @costinm blocking request).
Is that something we want?


Confidential bundle store example

Not tested yet!

Solves https://github.com/flashbots/andromeda-sirrah-contracts/issues/33


I want to resolve #528, suggestions are welcome

Thank you for your PR @berikv. As I mentioned in #528, this is something we're going to take a much larger approach to solving properly. Thanks again.


New document just loads forever

Trying this for the first time I can't create a document

@thekyriarchy hmm, indeed. Just noticed. Well, Wireflow require hard refactoring. That is the reason we released as open source, since we moved to another projects and need help from external collaborators.
I will try to investigate on it, but can't promise it gonna be fixed soon.
Appreciate your feedback.

@entrptaher anyway you can check out why its not loading new document ?

Console log shows:
Loading failed for the <script> with source “http://cdn.mouseflow.com/projects/c80233bf-6b2e-448b-862d-1c224213bef8.js”.
Firefox can’t establish a connection to the server at ws://wireflow.co/sockjs/182/17f4drxu/websocket
The connection to ws://wireflow.co/sockjs/182/17f4drxu/websocket was interrupted while the page was loading
seems to be some sort of backend issue

The local version works perfectly and it doesn't have mouseflow code which is throwing some error. We can remove the code and see if it works properly or not.

Also the currently deployed version needs some rework, it currently has around 1868 users, 261222 graphics, 22566 wires and the websocket emits all events to all users, maybe that is another reason it is not loading.

@entrptaher missed your response Tahy ...
I believe everything is messy there and not optimized. For wireflow to work properly, need restructuring and refactoring. This is just proof of concept, and people like it, find it useful. Next step is to recreate whole app with proper coding, optimization, etc.
I think you can remove all this 22k wires ^^.

@thekyriarchy can you try again?
@shtefcs maybe we will add a notice on top that the graphics/wires will be removed regularly until we are on stable version.

@entrptaher its works now 👍. Thanks
Yeah, we could add that notify.


Set up proper branch protections

Goal
The main branch should be protected from force-pushes, etc. Only way to alter main should be PRs.
Required features

Enforce the usual branch protection rules

Out of scope

Anything not to do with branch protections

Related documents

This page for the nnh pipelines repo

Ok, I may have accidentally set up two different rule sets, but let's see how it goes.


Article

Hello, could you please upload a basic article manuscript, I can't wait to read it.

Sure, thank you for your interest in our research. Our paper has been accepted by the MobiSys conference and will be published soon. We will share the DOI of the paper with you as soon as it is available. Thank you for your patience and support.

Hello, I don't understand the curvature mentioned in the paper, do you have a relevant theoretical basis to explain what characteristics of an object the curvature specifically indicates? Is it the curve when connecting the scatter plots of HRRP? Thank you！！！

你好，我不太理解论文中提到的曲率，有没有相关的理论依据可以解释一下曲率具体说明了物体的什么特性？是把HRRP的散点图连接起来后的曲线吗？谢谢！！！

Hello, thank you for your question. Curvature, in the context mentioned in the paper, refers to a measure of how much an object deviates from being flat or straight. It is a geometric property that indicates the amount of bending at a particular point on a curve or surface.
To clarify, the curvature in our study is not directly related to the curve formed by connecting scatter plots of HRRP (High-Resolution Range Profiles). Instead, it is a theoretical concept that can be applied to understand the geometric properties and behavior of the HRRP data. Specifically, it helps in analyzing how the shape of the HRRP data changes and what these changes signify about the underlying object’s features（For details, please refer to section 3.3 of the paper）.
I hope this helps! Please let me know if you need further clarification.


Z-wave.me Wall Controller recognized as light in HA

Home Assistant release (hass --version): 0.18.2
Python release (python3 --version): 3.4.2
Component/platform: Z-Wave
Description of problem:
The WALLC-S gets recognized as a light with a hass-controllable on/off switch.
Expected:
The function is that of a remote, so I'd expect it to be recognized like one.
Traceback (if applicable):
INFO:openzwave:Driver ready using library Static Controller version Z-Wave 4.05
INFO:openzwave:home_id 0xd32da33f, controller node id is 1
INFO:homeassistant.core:Bus:Handling <Event platform_discovered[L]: service=zwave.light, discovered=node_id=5, value_id=72057594126630913>
INFO:homeassistant.loader:Loaded light.zwave from homeassistant.components.light.zwave
INFO:homeassistant.core:Bus:Handling <Event state_changed[L]: new_state=<state light.mainswitch_level_5=off; node_id=5, friendly_name=MainSwitch Level @ 2016-04-22T21:03:55.852903+02:00>, entity_id=light.mainswitch_level_5, old_state=None>

Additional info:
openzwave version 0.3.0b9
open zwave control panel recognizes it correctly

How is this being recognised now. Please use latest Dev to test.

I would assume this is an OpenZWave issue?

Actually not. We define what goes where in HA.

any updates on this issue? i have the same problem, but my wallc-s doesn't even gets recognized from HA . But in the ozw it shows up. I'm on HA 0.28.2

Is there any new UPDATE?

@fastender Many changes have gone into HA that concerns zwave. Are you having the same problems as @Christoph-Wagner with the same device?

Hello @Landrash very nice that you reacted immediately, also on a Sunday.
Unfortunately, I have the same problems like @Christoph-Wagner.
I have 2 WALLC-S s.
I still use one WALLC-S for Vera Plus in parallel. The problems with Vera are different. The device is recognized there. But it can not configure itself.
That's why I still have USB Zwave in use.
Unfortunately, the device is with the USB ZWave only recognized as LIGHT.

This device is a scene controller which utilizes the central_scene command_class in zwave. Unfortunately this command_class is not supported yet by openzwave. Until then it is useless in HA. You can configure it in HA through the set_config_parameter service. Hope this answers some of your questions.

I would have to first research how to do that then, thanks anyway or i buy another Wall Switch.

I could finaly solve over Vera Plus the problem. We can mark this entry as done.
Links for Vera and WALLC-S.
http://support.betaalbare-domotica.eu/how-to-use-wallc-s-remote-controller-with-ui7/
https://drive.google.com/file/d/0B1tOOx_kE2lGRS1uT1dSSWFGV1ktdGhaTWZvYms0a1FPUlpB/view?pli=1

@turbokongen I got my WALLC-s working in HA. (device ZME_WCD2)
I've only activated one (have three in total), tried lots of things so I can;t remember exactly what I did, but when adding the others I will note the steps. What I do remeber is the following:

Stop HomeAssistant
Start OZWCP
Add the device (it was already added to my Z-stick for a different controller, but doing it again helped)
Stop OZWCP
Set logging to info

logger:
  default: info

Click on a button and check the logs for you device Id/Name

Here is an example automation:
automation:
  alias: Switch test
  trigger:
    platform: event
    event_type: zwave.scene_activated
    event_data:
      entity_id: zwaveme_zme_wcd2_double_paddle_wall_controller_7
      scene_id: 11
  action:
    service: light.turn_on
    entity_id: light.bedroom

@mvdarend Has posted the solution. The device is not a "light" in terms of HomeAsssitant, it provides an event that can be acted upon. The scene_id will change depending on what button you press on the WALLC-s.

Thanks

@mvdarend I cant get that to work. I've tried it with light.mydeviceid and just mydeviceid like you have there, but HA doesnt seem to see anything happening with the scenes.

@variousred You'll need to set up the switch as described in the link here:
https://github.com/home-assistant/home-assistant/issues/1903#issuecomment-252507691
After doing that you should be able to see when one of the buttons is pressed in the OpenZWave logs or the HomeAssistant logs (make sure to set logger to 'info')
Actually you should always be seeing at least something in the logs when a button is pressed.


Reduced OpenAI dependency by doing lazy initialization (only when class is used)

Even if the tutorials shows how to use others models, you still needed a valid Openai API key because of premature OpenAI initialization

LGTM!


Amend A104309 to note that CockroachDB issue #119536 is now fixed

Amend A104309 to note that CockroachDB issue #119536 is now fixed
Preview: https://deploy-preview-18347--cockroachdb-docs.netlify.app/docs/advisories/a104309

I'll go ahead and merge this since Kathryn is out and it's timely.


Menu items that open popups and new windows should have ellipsis

Some of the menu items don't have an ellipsis but should because they open a popup, file explorer, or new window.
The following options need ellipsis:
Export->Custom tabular exporter
Export-> SQL Exporter
Undo/Redo-> Extract operation history
Undo/Redo->Apply Operation History
All->Edit all columns->Transform
All->Edit all columns->Trim leading and trailing whitespace
All->Edit all columns->Collapse consecutive whitespace
All->Edit all columns->Unescape HTML entities
All->Edit all columns->Replace smart quotes with ASCII
All->Edit all columns->To titlecase
All->Edit all columns->To uppercase
All->Edit all columns->To lowercase
All->Edit all columns->To number
All->Edit all columns->To date
All->Edit all columns->To text
All->Edit all columns->To null
All->Edit all columns->To empty string
Column->Facet->Custom text facet on column
Column->Facet->Custom numeric facet on column
Column->Facet->Scatterplot facet
Column->Edit cells->Replace
Column->Edit Column->Add column by fetching URLs based on column X
Column->Edit Column->Add column based on column X
Column->Edit Column->Split column X into several columns
Column->Edit Column->Join columns
Column->Edit Column->Rename this column
Column->Transpose->Transpose cells across columns into rows...
Column->Transpose->Transpose cells in rows into columns...
Column->Transpose->Columnize by key/value columns...
Column->Reconcile->Start reconciling
Column->Reconcile->Use values as identifiers
Column->Reconcile->Add entity identifiers column
Export->OpenRefine project archive to file
Export->Tab-separated value
Export->Comma-separated value
Export->HTML table
Export->Excel (.xls)
Export-> Excel 2007+ (.xlsx)
Export->ODF spreadsheet
Export->Google Sheets
Export->Wikibase schema
Wikibase->Select Wikibase instance
Wikibase->Manage Wikibase account
Wikibase->Import schema
Wikibase->Upload edits to Wikibase
Proposed solution
Add ellipsis to the necessary menu items.

@elebitzero Yeap, agree, I was just thinking about this today as I was testing our 3.6 Snapshot build with your earlier merged changes for the alignment of dialog buttons.  I'm wondering on this particular issue if we might use the Unicode ellipsis char and bake this into the menu's that need them via a JS variable?

Name:
Horizontal Ellipsis

PostScript Name:
ellipsis

HTML Entity:
… … …

UTF-8 Encoding:
0xE2 0x80 0xA6

UTF-16 Encoding:
0x2026

This way would make translations easier also, since translators would not have to worry about the ellipsis being part of the text string at all.  Example: https://github.com/OpenRefine/OpenRefine/blob/master/main/webapp/modules/core/langs/translation-en.json#L521
Maybe we could avoid much backend coding on this if we could, since it should be simply that any frontend framework knows that its particular component item in our UI (jQuery for us on most of this) has a action to present a dialog.
Another side issue, I noticed that our Rename column* could use some touchup and be converted to a regular dialog.

@elebitzero Further thoughts,  I have seen in some applications that the context of "more" which is what the ellipsis represents in many human languages, but sometimes not all of the human languages prefer the ellipsis style for that context of "more".  We might further allow the Unicode char choice to switch the Unicode char that is appropriate for that language whenever the user switches to a different language.  For example, in many Asian applications, I have seen "more" often represented with the double right chevron (a double >>) and sometimes just the circled + or circle plus icon.
We might first consult with https://www.w3.org/WAI/standards-guidelines/wcag/ and ask them about that first on what they think?

Still further, we might avoid iconography completely on this issue and instead consider embold the text for those particular ones, or indent or emboss or glow or highlight or shade the items differently?  Still if we do choose iconography, we might place it before the text, rather than afterwards?  Notice how the main menu has our Sort... with an ellipsis against in that same menu the look and feel of the right arrows shown that have the context of "more menu structure".

Thanks for the comments.
For menu items which already have ellipsis, the ellipsis is added after translation (localizedText+"...").
I believe this is correct since the ellipsis is a symbol and does not need localization.
I'm not familiar with different representations of the ellipsis in other locales in the context of an app menu.
For this issue, I am calling out which menu actions are missing a required ellipsis. I was going to issue a PR tomorrow to correct these.  I can implement a JS var or function so that the ellipsis is added in one spot. This way, changes can be easily made in the future.

@elebitzero then go ahead with your plan and I'll be happy to review and test your PR on Windows. Thanks so much for working on these issues!


RUM-6596 Fix the execution of legacy instrumentation tests in CI

What does this PR do?
Problem Overview:

Legacy Integration Tests:

These tests are executed on MacOS Sonoma runners through GitLab CI.
They are experiencing silent failures, meaning the CI job completes as "green" or successful, even when tests fail.

Silent Failure Cause:

The silent failure issue primarily arises from the method of test execution.
Post-test execution necessitates killing the emulator to ensure the process exits properly.

Script Execution Approach:

The current approach involves executing shell scripts with deliberate error suppression (set +e).
This suppression is necessary to guarantee the emulator is terminated, even in the presence of errors.

GitLab CI Behavior:

GitLab executes shell scripts sequentially, processing one line at a time.
Exit codes are not propagated between lines, complicating error handling.
To manage exit codes, they must be persisted in a variable within the same line of execution.

Tools and Execution Challenges:

This method works effectively when executing tests via gradle.
However, it presents issues when executing tests directly through adb shell.

Motivation
What inspired you to submit this pull request?
Additional Notes
Anything else we should know when reviewing?
Review checklist (to be filled by reviewers)

[ ] Feature or bugfix MUST have appropriate tests (unit, integration, e2e)
[ ] Make sure you discussed the feature or bugfix with the maintaining team in an Issue
[ ] Make sure each commit and the PR mention the Issue number (cf the CONTRIBUTING doc)

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 70.44%. Comparing base (25dee6b) to head (5c47222).

Additional details and impacted files
@@             Coverage Diff             @@
##           develop    #2329      +/-   ##
===========================================
+ Coverage    70.39%   70.44%   +0.05%
===========================================
  Files          739      739
  Lines        27538    27538
  Branches      4616     4616
===========================================
+ Hits         19383    19397      +14
+ Misses        6865     6857       -8
+ Partials      1290     1284       -6

see 24 files with indirect coverage changes


PHOENIX-3903 Generate empty javadoc jar to comply with Maven central

@jmahonin I have created PRs for this changes in the branches
4.x-HBase-0.98   4.x-HBase-1.1    4.x-HBase-1.2  & master
Can you please review my changes ?

Already merged.


chore(builder): Updated gradle and play buildpack

Both buildpacks are now also tagged when released.
Changes:
https://github.com/heroku/heroku-buildpack-gradle/compare/24a8ebe...v12
https://github.com/heroku/heroku-buildpack-play/compare/9c137b4...v22
This improves https://github.com/deis/deis/pull/2988 even further. @bacongobbler do you have example apps to tests those buildpacks?  Otherwise I would create them.

We don't have a gradle app, but there's https://github.com/deis/example-play

The example-play app was not actually testing the play BP. I submitted https://github.com/deis/example-play/pull/1 to fix this and tested this PR successfully.

LGTM. I tested with deis/example-play#1.

I haven't manually tested the buildpacks, but it looks good to me! Nice to have these buildpacks following a proper tag :)


Update meta.yaml

Unskip osx. Now that we're not in staged-recipes our conda-build-config.yaml should be used.

Checklist

[x] Used a personal fork of the feedstock to propose changes
[x] Bumped the build number (if the version is unchanged)
[ ] Reset the build number to 0 (if the version changed)
[ ] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[x] Ensured the license file is being packaged.

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

@conda-forge-admin, please rerender

MACOSX_DEPLOYMENT_TARGET was correctly set to 10.13, but we still see some errors.
/Users/runner/miniforge3/conda-bld/coremltools_1602878171309/work/coremlpython/CoreMLPythonUtils.h:39:53: error: unknown type name 'MLSequence'
            py::object convertSequenceValueToPython(MLSequence *seq) API_AVAILABLE(macos(10.14));
                                                    ^
/Users/runner/miniforge3/conda-bld/coremltools_1602878171309/work/coremlpython/CoreMLPython.mm:61:13: error: unknown type name 'MLModelConfiguration'
            MLModelConfiguration *configuration = [MLModelConfiguration new];
            ^
/Users/runner/miniforge3/conda-bld/coremltools_1602878171309/work/coremlpython/CoreMLPython.mm:61:52: error: use of undeclared identifier 'MLModelConfiguration'
            MLModelConfiguration *configuration = [MLModelConfiguration new];
                                                   ^
/Users/runner/miniforge3/conda-bld/coremltools_1602878171309/work/coremlpython/CoreMLPython.mm:63:46: error: use of undeclared identifier 'MLComputeUnitsCPUOnly'
                configuration.computeUnits = MLComputeUnitsCPUOnly;
                                             ^

Oh https://github.com/apple/coremltools/issues/456#issuecomment-539620896 indicates that 10.14 is required. I'm not sure where I got 10.13 from.

@conda-forge-admin, please rerender


Resetting Variant ID when new variants are generated

I have not been able to replicate the behavior mentioned in #833 after making the change attached.

If afforded the luxury, it would be best to verify that this doesn't break anything on the back end.

@shahthepro
Update:
My ignorance about the Printful platform disallows an understanding of the code in dshop/backend/logic/printful/sync/writeProductData.js
I have reviewed the use of variant.id in the following files, and am okay with this change in relation to them:
dshop/shop/src/pages/Product.js
dshop/backend/logic/products/index.js
dshop/shop/src/themes/ybm/components/Product.js
dshop/shop/src/utils/useProduct.js
dshop/shop/src/utils/useAdminProduct.js
dshop/shop/src/utils/useProducts.js

I'm ready for this PR to be merged. My belief is that generateVariants.js only applies to products managed via the DShop platform. Furthermore, DShop's welcome packet mentions:

Dshop does not support both Printful and non-Printful products at the same time. If there are non-Printful products in the store, sync-ing a Printful account will cause those products to be lost.

Thanks @phyninja, Yeah, we don't override variant ID of printful products. It must be unique already.

Thanks @phyninja, Yeah, we don't override variant ID of printful products. It must be unique already.


input stack overflows when \rmfamily is redefined by polyglossia and option Scale is used

This was triggered by this question: https://tex.stackexchange.com/questions/375517/xelatex-fontspec-hebrew-tex-capacity-exceeded-sorry-input-stack-size-5000
polyglossia with language hebrew redefines \rmfamily. Its code now contains a \addfontfeature. If the option Scale=MatchLowercase is used this \addfontfeature calls it too.
The code of the Scale-option on the other side contains \rmfamily. And so there is a loop of \rmfamily calling \rmfamily and one get a
      ! TeX capacity exceeded, sorry [input stack size=5000].

\documentclass{article}
\usepackage{fontspec}

\ExplSyntaxOn
\cs_set:Nn \__fontspec_calc_scale:n
 {
  \group_begin:
    \rmfamily %breaks
    %\fontfamily{\rmdefault}\selectfont %works
    \__fontspec_set_font_dimen:NnN \l__fontspec_tmpa_dim {#1} \font
    \__fontspec_set_font_dimen:NnN \l__fontspec_tmpb_dim {#1} \l_fontspec_font
    \tl_gset:Nx \l__fontspec_scale_tl
     {
      \fp_eval:n { \dim_to_fp:n {\l__fontspec_tmpa_dim} /
                   \dim_to_fp:n {\l__fontspec_tmpb_dim} }
     }
    \__fontspec_info:n {set-scale}
  \group_end:
 }
\ExplSyntaxOff

\setmainfont[Scale=MatchLowercase]{Noto Sans Hebrew}
\usepackage{polyglossia}
\setmainlanguage[]{hebrew}

\begin{document}

{\rmfamily blub }

\end{document}

I'm not quite sure who to blame -- polyglossia or fontspec -- but on the whole I think that a user command like \rmfamily should not be used in the internal code of fontspec.

Hmmm, I don’t like that \rmfamily is patched but I think your correction is good. Actually my change probably needs to be tested — I guess it’s not robust since it assumes that fontspec has been the one that set rmfamily. Probably need some additional guards!


OSCM Installer:  the web service listener should be secure

Related to https://github.com/servicecatalog/development/issues/634
The OSCM installation already supports separate http_listener which can be used for the SOAP web services. It is not secure. Change the installation to support security for this http_listener.

@gertipoppel, please document the following for bes domain settings:

the glassfish.domain.WS_PORT is renamed to glassfish.domain.WS_PORT_SECURE
the http listener created for this port is secure (uses ssl with default glassfish certificate s1as).

Existing installation are not affected from this change, it is valid only for new installations.

Added a note in the Release Notes and changed the description for WS_PORT in the APP and the Controller documentation.


How to configure installation from package?

Hello I installed goaccess from the official Ubuntu repo:
$ echo "deb http://deb.goaccess.io/ $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/goaccess.list
$ wget -O - https://deb.goaccess.io/gnugpg.key | sudo apt-key add -
$ sudo apt-get update
$ sudo apt-get install goaccess

It has been working wonderfully so far. I am running it via auto updating HTML. However, I'd like the data logged to disk and I can't seem to get that working via the repo package. I first installed libtokyocabinet-dev. The second step seems to be to run: ./configure --enable-utf8 --enable-geoip --enable-tcb=btree however I don't know where to find the "configure" binary this is referring to from the repo install. find / -name "configure" results in nothing. Am I supposed to enable these triggers via /etc/goaccess.conf? Is it documented anywhere how to do that?

There are two options, one is to build it from source as specified here and use
./configure --enable-utf8 --enable-geoip=legacy --enable-tcb=btree

The other and easiest is to use the deb repo as you did above but use goaccess-tcb instead
$ echo "deb http://deb.goaccess.io/ $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/goaccess.list
$ wget -O - https://deb.goaccess.io/gnugpg.key | sudo apt-key add -
$ sudo apt-get update
$ sudo apt-get install goaccess-tcb

Closing this. Feel free to reopen it if needed.


Adopt CloudEvents standard

https://github.com/cloudevents/spec/blob/main/cloudevents/primer.md
An event includes context and data about an occurrence. Each occurrence is uniquely identified by the data of the event.
Events represent facts and therefore do not include a destination, whereas messages convey intent, transporting data from a source to a given destination.
Eventing
Events are commonly used in server-side code to connect disparate systems where the change of state in one system causes code to execute in another. For example, a source may generate an event when it receives an external signal (e.g. HTTP or RPC) or observes a changing value (e.g. an IoT sensor or period of inactivity).
To illustrate how a system uses CloudEvents, the simplified diagram below shows how an event from a source triggers an action.
The source generates a message where the event is encapsulated in a protocol. The event arrives to a destination, triggering an action which is provided with the event data.
A source is a specific instance of a source-type which allows for staging and test instances. Open source software of a specific source-type may be deployed by multiple companies or providers.
Events can be delivered through various industry standard protocols (e.g. HTTP, AMQP, MQTT, SMTP), open-source protocols (e.g. Kafka, NATS), or platform/vendor specific protocols.

CloudEvents is now a graduated CNCF project. Some notable adopters include

Adobe I/O Events
Azure Event Grid
European Commission
Google Cloud Eventarc

It also closely aligns with the approach of the module (protocol independent, event based triggers to subscribers)
The CloudEvents project have a PHP SDK https://github.com/cloudevents/sdk-php which we should be able to leverage.


Stuck at the referencing part

"Get a reference to the controls that were created in the layout file via the Android Designer. Add the following code inside the OnCreate method, after the call to SetContentView"
I'm stuck at this part of the guide as i keep getting this error :
string translatedNumber = Core.PhonewordTranslator.ToNumber(phoneNumberText.Text);
The name "Core" does not exist in the current context.
I've seen people mention that the guide is not exactly up to date. In any case, i'd really appreciate some help. I've google for a decent 3 hours for solutions yet i am more confused. Please be kind with me as i'm a total begginer in this. I apologize if my problem has a easy fix that i didn't see or think of.
Thank you!

In the Write some code step you need to add a new C# file to your solution, and paste in the Core. PhonewordTranslator class as shown in the docs.
Can you share a screenshot that includes your solution explorer? This might help to identify the issue. Thanks.


fix: bytes type in TextDoc and VideoDoc

There is a bug related to the type of the bytes field in the predefined Documents, such as TextDoc.
The bytes field is of type Optional[bytes], but when looking at TextDoc.__fields__['bytes'].type_ it equals 'None' instead of Optional[bytes]
Because of this, the following fails:
from docarray import DocumentArray
from docarray.documents import TextDoc, VideoDoc

da = DocumentArray[TextDoc]([TextDoc()])
for name, value in TextDoc.__fields__.items():
    print(f"name, type = {name, value.type_}")
da.summary()  # fails

da = DocumentArray[VideoDoc]([VideoDoc()])
da.summary()  # fails

name, type = ('id', <class 'docarray.typing.id.ID'>)
name, type = ('text', <class 'str'>)
name, type = ('url', <class 'docarray.typing.url.text_url.TextUrl'>)
name, type = ('embedding', typing.Union[docarray.typing.tensor.embedding.ndarray.NdArrayEmbedding, docarray.typing.tensor.embedding.torch.TorchEmbedding, docarray.typing.tensor.embedding.tensorflow.TensorFlowEmbedding, NoneType])
name, type = ('bytes', <class 'NoneType'>)  # <----------------------- NoneType instead of bytes!

╭─────── DocumentArray Summary ────────╮
│                                      │
│   Type     DocumentArray[VideoDoc]   │
│   Length   1                         │
│                                      │
╰──────────────────────────────────────╯
Traceback (most recent call last):
  File "/Users/charlottegerhaher/Library/Application Support/JetBrains/PyCharm2022.2/scratches/scratch_71.py", line 66, in <module>
    da.summary()
  File "/Users/charlottegerhaher/Desktop/jina-ai/docarray_v2/docarray/docarray/array/abstract_array.py", line 276, in summary
    DocumentArraySummary(self).summary()
  File "/Users/charlottegerhaher/Desktop/jina-ai/docarray_v2/docarray/docarray/display/document_array_summary.py", line 54, in summary
    self.da.document_type.schema_summary()
  File "/Users/charlottegerhaher/Desktop/jina-ai/docarray_v2/docarray/docarray/base_document/document.py", line 71, in schema_summary
    DocumentSummary.schema_summary(cls)
  File "/Users/charlottegerhaher/Desktop/jina-ai/docarray_v2/docarray/docarray/display/document_summary.py", line 41, in schema_summary
    DocumentSummary._get_schema(cls),
  File "/Users/charlottegerhaher/Desktop/jina-ai/docarray_v2/docarray/docarray/display/document_summary.py", line 76, in _get_schema
    for arg in field_type.__args__:
AttributeError: type object 'NoneType' has no attribute '__args__'

This can be solved by removing the  = None default for TextDoc and VideoDoc. Since they are optional, there default stays None, even without explicitly stating it.
I removed all other = None defaults to to keep it coherent, since sometimes this was explicitly stated, sometimes not.

[ ] check and update documentation, if required. See guide

I think type_ is not safe you should use outer_type rather. Btw we have a _get_field_type method that you should use

haha yes, we can handle it internally, but there's a real chance developers also use Optional[bytes] = None in their dataclasses which as we know would not work, so maybe it's worth further investigation?

Then lets rename everything to not bytes. This is a python reserved keyword anyway I believe.

and feel free to still open an issue on pydantic, it might still be a bug in pydantic code so better for them to be aware of it


Export a top-level Error enum from construct_runtime!

Is there an existing issue?

[X] I have searched the existing issues

Experiencing problems? Have you tried our Stack Exchange first?

[X] This is not a support question.

Description of bug
Not technically a bug, more of feature request, but then there is no other category of issue, and I opened a stackexchange issue but got little traction beyond "why would you need this?".

Given that the construct_runtime macro exports top-level Call and Event enums that group the pallet-level equivalents, it seems reasonable to expect that there would also be a top-level Error enum to allow easy encoding and decoding of runtime errors.
The specific use-case I have in mind is an api that allows execution of a runtime::Call with response type of Result<runtime::Event, runtime::Error>, where runtime::Error contains a useful error message (or at least a structured enum that can be matched on).
Encoding the Call: easy. Decoding the Events: easy. Decoding the Error.. not so easy.
Right now the only option (as far as I can tell) to get the details of the Error involves parsing the metadata to pull out the error details, which is not the most intuitive or ergonomic. If there is a better alternative, please let me know!
I appreciate this might be non-trivial to add, but it would be great if it could be considered.
Steps to reproduce
No response

It's the same use case as polkaJs and subxt - but both are general-purpose client libraries. If I want to write one specifically for my runtime, what I have suggested above might be helpful.

Subxt already has an issue for exactly what you want: https://github.com/paritytech/subxt/issues/313

So... great! Clearly I'm not the only one who thinks this would be useful. The issue has been open in subxt for over a year, though, so apparently not getting much love. Moreover, like I said, subxt is a general purpose library, and for various reasons we'd rather write our own simple client. Subxt is a general purpose library that generates client code from the type metadata. It's very clever and magical. But it's intended for client libraries that don't necessarily have access to the source code of the target chain.
For anyone writing a client for their own chain, we shouldn't need to generate it from the type metadata: we have all the type info we need in the source code, and we have the rust compiler to ensure its correctness. The only thing we're missing is a slightly more useful runtime Error type - hence my suggestion.
I don't really understand - is there some specific reason you think it's a bad idea?

So you want to use this error type in your node? Or where exactly? Or only in your runtime?

My use case is outside the runtime (but with access to the runtime crate: so I can use the concrete types of my runtime). I want to create a type-safe wrapper around the jsonrpc interface to submit extrinsics. And I want to be able to return a useful error when a call fails.
I can submit an extrinsic with an encoded runtime::Call, get the hash, and then watch for runtime::Events for that extrinsic. If I get the Event ExtrinsicFailed then I know there was an error - If the error occurred in the pallet code, I can pull out the ModuleError, which is defined as:
/// Reason why a pallet call failed.
#[derive(Eq, Clone, Copy, Encode, Decode, Debug, TypeInfo)]
#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]
pub struct ModuleError {
	/// Module index, matching the metadata module index.
	pub index: u8,
	/// Module specific error value.
	// NB. MAX_MODULE_ERROR_ENCODED_SIZE is 4 for some reason
	pub error: [u8; MAX_MODULE_ERROR_ENCODED_SIZE],
	/// Optional error message.
	#[codec(skip)]
	#[cfg_attr(feature = "std", serde(skip_deserializing))]
	pub message: Option<&'static str>,
}

But note the message is not encoded. So in order to get any useful information about the error (ie. the originating pallet::Error), I need to write some additional code to parse the module index and error index. And it seems like a top-level runtime::Error enum would help: I could just do something like runtime::Error::decode([module_error.index, module_error.error]).
I feel like this would obviously be quite useful, in the same way that being able to refer to calls and events can be useful. I don't understand why errors do not follow the same approach as used for calls and events - was this a conscious decision? Is there a better alternative for what I'm trying to do?

I don't understand why errors do not follow the same approach as used for calls and events - was this a conscious decision?

Yes it was. Otherwise we would have required to add type Error to each pallet Config trait with a bound type Error: From<crate::Error>. Instead of this we are being able to return pallet related errors in a much simpler way.
I also get what you are trying to do, but this goes a little bit against the design decisions of Substrate. Substrate is build in a way that the node and runtime are separate. They are only talking to each other via defined interfaces/apis. When you would start using the Error enum from the runtime it would may break after a runtime upgrade. Imagine a runtime upgrade which adds a new error variant that is triggered. Your node would not be able to "parse" this as it doesn't know this variant.
If you are watching for the runtime events any way, getting the error and index isn't hard. What you could do is to add support for your requested feature to frame-metadata so that it can give you the concrete error or the error docs for a given index & error. This also shouldn't be that hard. WDYT?

Hey, thanks for the reply!
I guess this makes sense but then similar arguments seem to apply to pallet calls, events and origins. And we could have the Error type for convenience but still use DispatchError where it makes sense to do so. I'm not suggesting to change the entire node/runtime interface!
TLDR I can see why it was done the way it was, but I still think a top-level RuntimeError enum would be useful in some cases, for similar reasons that top-level RuntimeEvent/Call/Origins are useful. I don't see why Errors are an exception.
The suggested compromise with frame-metadata is definitely a good alternative though, thanks. How can I request the feature / add my support?

The suggested compromise with frame-metadata is definitely a good alternative though, thanks. How can I request the feature / add my support?

You can open an issue here: https://github.com/paritytech/frame-metadata

Thanks, I found this - https://github.com/paritytech/frame-metadata/issues/43
Looks like it might fit our needs.


Provide transaction input information in transaction details

The problem that you wish to solve
Right now one of most crucial information is missing in transaction details - WHO sent it. If I want to know that I have to use external service to lookup tx details and see where the inputs came from, the cardano wallet data only show this:
  "inputs": [
    {
      "id": "16717b2ef1f7479f6dcba243122f1f222451bc3a44328f9a7e0e9cc2b96394d7",
      "index": 1
    }
  ],

that's useless
Description
Show information about inputs, this information must be on blockchain, otherwise other tools wouldn't be able to see it. If you can't even see where did the transaction come from, they you don't really see much.
Implementation suggestions
No response

At the time of this writing, the HTTP endpoint /wallets/{walletId}/transactions does a partial lookup of transaction inputs when displaying transactions.
However, it can only show information for inputs that belong to the wallet — showing information about other inputs would require keeping track of all past transactions. This is expensive for a wallet to do, and the node doesn't quite do it.

Closely related to #2710


[Bug]: creator can't alter schedule

ODC version
4.3.0
OB version

What happened?
creator can't pause schedule
What did you expect to happen?
creator can do it
How can we reproduce it (as minimally and precisely as possible)?
create schedule and pause it.
Anything else we need to know?
No response

test pass


Rethrow errors as ProtostarExceptions in cairo bindings

https://github.com/software-mansion/protostar/pull/1433#discussion_r1105552266

closing as this is a part of #1541


Raven.setExtraContext is not exposed in typescript definition

The setExtraContext function is not present in the Typescript definition.
Raven.setExtraContext({ phoneNumber: Customer.PhoneNumber })

src/component/App.tsx(167,13): error TS2339: Property 'setExtraContext' does not exist on type 'RavenStatic'.
https://github.com/getsentry/raven-js/blob/4a8591b7ae5a22dc100322f058f8dfde57f802c2/typescript/raven.d.ts

Thanks!! 🎉
--
Marc O'Morain
<EMAIL_ADDRESS>On Thu, 25 Aug 2016, at 04:02, Ben Vinegar wrote:

Closed #698[1] via c39b7e1[2].
— You are receiving this because you authored the thread. Reply to
this email directly, view it on GitHub[3], or mute the thread[4].

Links:

https://github.com/getsentry/raven-js/issues/698
https://github.com/getsentry/raven-js/commit/c39b7e148c6bece28198866becf7b9616b322b38
https://github.com/getsentry/raven-js/issues/698#event-766876132
https://github.com/notifications/unsubscribe-auth/AAbWAbD8D75hDiVWp40XHtdqYMRYqXTgks5qjQXGgaJpZM4JpyKb


Add catalog options to set catalog

#503  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @RajatPawar and the rest of your teammates on  Graphite


Option to not create a new line before await (await-same-line)

I've taken a shot at implementing #4425 as a first-time contribution.
Tasks left to do:

[x] Decide how to handle line and block comments in front of .await
[ ] Make tests run with await-same-line instead of default config somehow
[x] Add documentation to Configurations.md

Thank you so much for your work on this (as well as #4889), and apologies for the delay in providing feedback.
I'll lead with the bad news up front and note that I'm going to close both of these PRs, but want to explain why and the alternative direction we need to go, especially on the off chance you'd be interested in helping with that :smile:
Fundamentally, the realization we've come to is that chains are too complicated with too much subjectivity to support the standard forced-rewriting-according-to-some-predefined-rules paradigm via configuration options that rustfmt uses.
As you're likely already aware, rustfmt is an AST-driven pretty printer style formatter that completely rewrites code based on the rules codified in the Rust Style Guide independently of how the code was originally formatted (with a handful of rare exceptions).
Configuration options are a great fit for enabling formatting use cases which diverge from the that Style Guide when those cases are bounded in scope (e.g. tabs or spaces, opening braces on the same line or the next line, etc). Grouping of chain items on the other hand is completely open ended and just about everyone has a different opinion on which items should be grouped/split, which in turn can vary by context. Attempting to tackle that with configuration options would quickly spiral out of control, both in terms of the configuration surface and codebase complexity, as well as making conflicting configurations a near certainty.
The alternative strategy with that config option based forced rewriting would be picking a couple of favorites and adding config options for those which would satisfy a small subset of use cases, but it would still add complexity to the code and fail to address the large swath of other use cases leaving users frustrated.
Neither of those variants are going to be viable, and in fairness we've probably got some issues that should be closed/updated to reflect that fact. Instead, the best path forward really seems to be to enable an opt-in alternative (rustfmt's defaults always have to adhere to the Style Guide) that would use the original/input formatting of the chains to inform how the chain items are grouped. This would give an option to everyone who feels strongly about needing their chains to be different than what the Style Guide prescribes, regardless of the specifics of their chain and desired groupings. There will almost certainly be some constraints (e.g. rustfmt wouldn't split the chain items even if it exceeds the max_width, or maybe the preservation of chain item group only works for single line chain items, etc.).
I've done enough thought experimentation that I feel this should be possible to do, but it's almost certainly a large chunk of work. Additionally, I suspect an existing change would be needed in the handling of chain items that exceed the max width.
Relevant issues #3863 and #4306

Thank you for the considerate and detailed explanation!


Support fetching individual parameters by name

While our primary use case is gathering all of an applications config all at once, it is certainly useful to do a simpler fetch by name. We should consider supporting the individual parameter use case also.

An alternative way to solve this might be to instead support an in-memory cache so that individual values can be retrieved without refetching from SSM.


Import HomepageHero component on index.md only

WIP~

We can do this but it's not super sustainable. The problem is more general. What's a general solution to this?

I think the proper solution would be to move to Server Components. Seems like we’re not too far off from being able to try that.

@gaearon I am not aware of a general solution that doesn't involve loading all components globally, unfortunately :/
Two options come to mind, but none of them are really general:

Dedicated sets of components for different layouts (i.e. HomeLayout, APIRefenreceLayout, BlogLayout, etc): this could be useful since there are a few components that are only used in the API reference pages, and others that are exclusive to the "learn" section, for example.
Use an mdx plugin that adds missing imports for JSX elements it finds in the document (I haven't explored this option too much, so this could be a terrible idea).

I'm not super familiar with Server Components, but if you think that's the way to go, that's really great to hear!

I'll close this PR now, it wasn't a super big improvement anyways. Thanks for the input!


Improve recusive type checking

The "five turtles" solution from https://github.com/danielnixon/eslint-plugin-total-functions/issues/192 abruptly terminates all recursive type checking.
Prior to that change, linting this would never terminate:
type Foo<U> = {
  readonly a: U;
  readonly b: Bar<Bar<U>>;
};

type Bar<U> = {
  readonly a: U;
  readonly b: Foo<Foo<U>>;
};

declare const foo: Foo<string>;

const bar: Bar<string> = foo;

It turns out that solution is overzealous or overly-naive, because it now means that checking nested structures terminates abruptly in a way that doesn't catch this assignment from mutable to readonly:

type A = {
  readonly a: string;
};

type B = {
  a: A;
};

type C = {
  b: B;
};

type D = {
  c: C;
};

type E = {
  d: D;
};

type F = {
  e: E;
};

type G = {
  f: F;
};

type A2 = {
  a: string;
};

type B2 = {
  a: A2;
};

type C2 = {
  b: B2;
};

type D2 = {
  c: C2;
};

type E2 = {
  d: D2;
};

type F2 = {
  e: E2;
};

type G2 = {
  f: F2;
};

declare const g: G;

// Not flagged, should be
export const g2: G2 = g;

If we change that first type to
type A = {
  a: boolean;
};

we see TypeScript itself is still able to see the issue in the deeply nested structure:
Type 'G' is not assignable to type 'G2'.
  The types of 'f.e.d.c.b.a.a' are incompatible between these types.
    Type 'boolean' is not assignable to type 'string'.

So there must be some improvement we can make that catches this and doesn't fall prey to infinite recursion. What is it? We might have to go spelunking in TypeScript's source.
We know the issue only arises when generics are involved so to start with, we can probably decrement our counter only when we're traversing from one generic type to another. And further, we can probably reset the counter when traversing from a non-generic type to a generic one.
Although, we'd have to be very careful about deciding whether a type is generic or not.

Related: https://github.com/RebeccaStevens/is-immutable-type/issues/98

getRecursionIdentity and isDeeplyNestedType from checker.ts look like they hold the answer.


Rebalancing: Expose the "Rebate" data

We need to be able to show users how much sICX was returned to them through the arbitrage profits of the SCORE at the end of the retirement process, so we need proper APIs and/or event logs to capture this data.

This appears to be taken care of automatically in the event log, there's no specific rebate, just better pricing to the user.


Create a package installler for the unity version and a script based installer for Godot.

This question proposes creating installation packages for each game engine, avoiding manual copying of files. This avoids possible duplicated files, different files in different projects and the manual effort of configuring each project.

The unity version was done. AI4U for Unity installer is based in Unity's Package Manager. For Godot, i'm studing how implements this feature.

In Godot, there is an asset library, but it doesn't fulfill the expected role of package management. The asset library requires the asset package to be in zip format. For our purposes, this does not prevent code duplication and still requires making the zipped source code available. So, the best solution for Godot is to copy and place the AI4UGE code repository in your project.


Link to java docs

Reviewer checklist

[ ] Read the contributing guide
[ ] PR should be motivated, i.e. what does it fix, why, and if relevant, how
[ ] Ensure relevant issues are linked (description should include text like "Fixes #")
[ ] Ensure any appropriate documentation has been added or amended

Coverage: 98.238%. Remained the same when pulling 7509b53584a4d65dcda52c64d64369990dc9f5ce on javadocs into 80f5db1c81c259a6337e216087a4f3676797bd91 on main.


Add .gitignore

No, thanks. .gitignore is a personal statement. Your hard drive differs from mine. Each of our .gitignore files is valid, for us individually.

I got it. Thanks for the review.
But do you have a reason that .gitignore doesn't manage? I want to learn about the benefit.


Centralize CoreComponent access method

:loudspeaker: Type of change

[ ] Bugfix
[ ] New feature
[ ] Enhancement
[x] Refactoring

:scroll: Description
We have several ways to access the CoreComponent, this PR centralize these methods into one.
:green_heart: How did you test it?
Compile success + run the app where we access the CoreComponent
:pencil: Checklist

[x] I ran ./gradlew spotlessApply before submitting the PR
[x] I reviewed submitted code
[ ] I added tests to verify changes
[x] All tests passing

@googlebot I signed it!

is there anything else I can do? @manuelvicnt


Not able to run

Hi @henry-spanka
I just stumbled over this repo yesterday and I am really really interested in it.
Unfortunately, I could not get homebridge to run:
[3/11/2018, 9:34:17 PM] ---
/usr/local/lib/node_modules/homebridge/lib/server.js:212
  var username = config.bridge.username;

It seems that maybe you based the README on an older version on homebridge, or am I doing something wrong?
Thanks

Sorry, my bad.
I didn't see the part in the platform section in here: https://github.com/henry-spanka/homebridge-buschjaeger#configuration

Great. So did it work for you now?
I will release a new version soon when the necessary changes that I currently depend on are merged.
See: https://github.com/sstadlberger/home/pull/15
Please use the version from NPM right now as the GitHub master version won't work.

It is running now, I have to add the actuators now.
I found this package through https://github.com/sstadlberger/home and also saw the waiting PR.

Great. Then have fun running through your house to find the right accessory that lights up ;)

Note that you don't need to add any actuators. The plugin will discover all actuators automatically.

I mean add the to your code:
[3/11/2018, 9:47:40 PM] [BuschJaegerSysAp] Ignoring non-supported accessory Sensor/ Jalousieaktor 2/1-fach with serial ABB700D088CF

Great. I believe this is the same as the Jalousieaktor with 4 channels, so you can use the same accessory class. Can you send me the output of: http://API:8080/info/ABB700D088CF?

That output does not include any sensitive data, right?
I just started with this as we just moved into our house one month ago.

No only the state of the accessory. You may want to hide the serial number though, just in case.

I'll prepare something and send you a mail to the address from your github account.

Sure. You can send me the whole data with: http://API:8080/info. That includes all actuators.

Done


Replacing QEMU with Depot

Changes applied to the GitHub action that generates docker images for the Rollup Explorer app.

Added integration with Depot.
Add permission for issuing OIDC tokens for the workflow run.
Removed QEMU setup step
Removed docker/build-push-action step
Added a docker-bake.hcl to describe a high-level build command.
Also, added a bake-override in the workflow definition to avoid problems with working directory.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 73.126%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
2544

Relevant Lines:
3315

💛  - Coveralls

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Warning: This coverage report may be inaccurate.
This pull request's base commit is no longer the HEAD commit of its target branch. This means it includes changes from outside the original pull request, including, potentially, unrelated coverage changes.

For more information on this, see Tracking coverage changes with pull request builds.
To avoid this issue with future PRs, see these Recommended CI Configurations.
For a quick fix, rebase this PR at GitHub. Your next report should be accurate.

Details

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 73.126%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
2544

Relevant Lines:
3315

💛  - Coveralls


Update pl_pl.json

I looked into Polish translation and I through I would bring in few tweaks and changes.
Some of the translations were a bit too direct and didn't feel to fluid, so I replaced few of them to be less direct while still expressing their accurate meaning.
There is also a slight issue (tho it's also present in original, English language) where it's difficult to distinguish between Origin and Minecraft Mob (Phantom and... yeah you get the idea). I decided to tweak a bit those to make them slightly more distinct.
Majority of the translation was left untouched, but there were few missing translations which I filled holes for.
It would be nice if original translator took a look for secondary opinion. He did a good job overall and I trust his opinion.

Original translator here, I approve all these changes, many of them are better versions of my translations.

This has been merged manually into the 1.17 branch. :)


pyradio: <IP_ADDRESS> -> <IP_ADDRESS>

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for pyradio is: "Curses based internet radio player"
meta.homepage for pyradio is: "http://www.coderholic.com/pyradio/"
meta.changelog for pyradio is: ""
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes
Impact

Checks done (click to expand)

built on NixOS
The tests defined in passthru.tests, if any, passed
found <IP_ADDRESS> with grep in /nix/store/kl9d44ncpyq67fmbrgzrw45g951a3by0-pyradio-<IP_ADDRESS>
found <IP_ADDRESS> in filename of file in /nix/store/kl9d44ncpyq67fmbrgzrw45g951a3by0-pyradio-<IP_ADDRESS>

Rebuild report (if merged into master) (click to expand)

1 total rebuild path(s)

1 package rebuild(s)

First fifty rebuilds by attrpath
pyradio

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/kl9d44ncpyq67fmbrgzrw45g951a3by0-pyradio-<IP_ADDRESS> \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A pyradio https://github.com/r-ryantm/nixpkgs/archive/fe913f1465b240a44b9dd2a3ad6181254fc55aba.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/kl9d44ncpyq67fmbrgzrw45g951a3by0-pyradio-<IP_ADDRESS>
ls -la /nix/store/kl9d44ncpyq67fmbrgzrw45g951a3by0-pyradio-<IP_ADDRESS>/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

1 package built:

pyradio

Maintainer pings
cc @contrun for testing.

Result of nixpkgs-review pr 190351 run on x86_64-linux 1

1 package built:

pyradio


Clamp number of registered editor above 0

Description
Since #5070, there are certain circumstances in which the document counts for rootElementsRegistered can fall below 0, especially if removeRootElementEvents is called more than addRemoveRootElementEvents.
As number of registered root elements should never be fewer than 1 after addRemoveRootElementEvents is called, and because the number of root elements should never be fewer than 0 when removeRootElementEvents is called, we should clamp these values.

We should probably have an invariant rather than just clamping, so we can more easily find any bad code that causes this condition.

Closing in favour of https://github.com/facebook/lexical/pull/6003


Introducing c.platform

As mentioned in #413, it might be useful to have way to know on which platform the code is running. This PR introduces c.platform, which is getter of Context interface.
Node, Deno, and Bun
const global = globalThis as any

if (global?.process?.title === 'node') {
  return 'node'
}

if (global?.Deno !== undefined) {
  return 'deno'
}

if (global?.Bun !== undefined) {
  return 'bun'
}

This is straightforward.
For Deno, global?.process?.title === 'deno' is possible,  but I just used shorter one.
Cloudflare and Fastly
if (typeof global?.WebSocketPair === 'function') {
  return 'cloudflare'
}

return 'fastly'

WebSocketPair is Cloudflare Worker's runtime API. I picked this because this is only available in CF. (For example, cache exists in other platform with similar API.)
For Fastly, I don't know good way to determine it at runtime yet. (Resources: 1, 2)
But it is almost safe to say it is Fastly if it is not others.
type Platform = 'node' | 'deno' | 'bun' | 'cloudflare' | 'fastly'

Hi @yujong-lee !
Wow great!! This is exactly what I wanted!
One thing:

But it is almost safe to say it is Fastly if it is not others.

I think it is better not to judge this as fastly. There are other platforms (not just runtime) that Hono runs on. For example, it works on Edge Runtime by Vercel.

https://zenn.dev/yusukebe/articles/f3b130f69287fc

It also may work on Vercel Edge Functions (Although, Vercel's backend is powered by Cloudflare Workers!).
There is another platform/runtime that has not yet been released called Lagon.

https://lagon.app

It is possible that there will be another platform on which the web standard API will work, so it is better to set other if it is difficult to judge.
Or do you have a better idea than other?

other seems fine to me. I was thinking unknown, but unknown feels like something got wrong.
other implies that it is just something that we don't support judging it yet.

I found way to determine Fastly
Fastly compute serve minify code by default and have no options to turn it off. So I way struggling to find Fastly-specific global variable. But I found this document and solved it.

I added Vercel
Addressing the runtime from official doc.

@yujong-lee
Adding "fastly" and "vercel" is good!

So I started to think that c.runtime is better than c.platform.

Agree. I think c.runtime is better too.

If we agree to do so, we need to decide how to name return values.

I think the name should be short and all lowercase because it can be just a "short name". So, I want to go with the following:
type runtime = 'node' | 'deno' | 'bun' | 'vercel' | 'cloudflare' | 'fastly' | 'other'

For example. It is unlikely that Cloudflare will have a Runtime other than "Cloudflare Workers" in he future. So, it's ok to be cloudflare. Of course, Cloudflare could have a different Runtime than Workers for Cloudflare Pages. However, that is a rare case, and in that case, we can add cloudflare-pages.

@yusukebe Ok. I agree.
I changed the code like below.
get runtime(): Runtime
type Runtime = 'node' | 'deno' | 'bun' | 'vercel' | 'cloudflare' | 'fastly' | 'other'

Thank you! I'll merge it!


feat: Use tags vX.Y.Z-<language> for JReleaser builders

@aalmiray you should be able to verify BYOB provenance with slsa-verifier at main.
You must:

reference the delegator at a tag
reference the TRW (from PW) at a tag

One more PR is needed to support user-provided sha1.