I feel like we’ve already had this discussion, that the Sonoff dongle had issues, but that it works very well with your other dongle.
It’s true, I confirm what I said in other posts, but I would like to know if I’m the only one in this case, I haven’t seen any other messages to that effect.
I will re-test. I have the impression that the mapping of my Xiaomi wireless button is different because my scene allowing me to turn on/off my lamp was no longer working.
I will try again to check and investigate as soon as I have some time and I will keep you informed!
Hi @lmilcent, have you been able to re-test since? ![]()
Sorry for the big delay, it’s quite busy at work. I’m also in the process of reinstalling a https://www.ldlc.com/fiche/PB00276535.html that I was able to get for free to make my home automation server (Gladys, VPN and other services), of course I forgot to test the dev build again ![]()
Come on, I’ll try to do this as soon as possible ![]()
Je confirme @pierre-gilles, il y des changements qui cassent mon installation.
Ce qui est cassé (à première vue)
- J’ai des erreurs, liées à Gladys Plus (abonnement retiré) qui claquent régulièrement.
Logs
2022-04-14T10:07:09+0200 <warn> handleMqttMessage.js:100 () Zigbee2mqtt device PriseSupp, feature power_outage_memory not configured in Gladys.
2022-04-14T10:07:12+0200 <warn> handleMqttMessage.js:100 () Zigbee2mqtt device CapteurMouvementEntree, feature illuminance_lux not configured in Gladys.
2022-04-14T10:07:12+0200 <warn> handleMqttMessage.js:100 () Zigbee2mqtt device CapteurMouvementEntree, feature linkquality not configured in Gladys.
2022-04-14T10:07:12+0200 <warn> handleMqttMessage.js:100 () Zigbee2mqtt device CapteurMouvementEntree, feature illuminance_lux not configured in Gladys.
2022-04-14T10:07:12+0200 <warn> handleMqttMessage.js:100 () Zigbee2mqtt device CapteurMouvementEntree, feature linkquality not configured in Gladys.
2022-04-14T10:07:16+0200 <warn> handleMqttMessage.js:100 () Zigbee2mqtt device CapteurMouvementSalon, feature illuminance_lux not configured in Gladys.
2022-04-14T10:07:16+0200 <warn> handleMqttMessage.js:100 () Zigbee2mqtt device CapteurMouvementSalon, feature linkquality not configured in Gladys.
2022-04-14T10:07:17+0200 <warn> handleMqttMessage.js:100 () Zigbee2mqtt device CapteurMouvementSalon, feature illuminance_lux not configured in Gladys.
2022-04-14T10:07:17+0200 <warn> handleMqttMessage.js:100 () Zigbee2mqtt device CapteurMouvementSalon, feature linkquality not configured in Gladys.
2022-04-14T10:07:46+0200 <warn> handleMqttMessage.js:100 () Zigbee2mqtt device CapteurMouvementSalleAManger, feature illuminance_lux not configured in Gladys.
2022-04-14T10:07:46+0200 <warn> handleMqttMessage.js:100 () Zigbee2mqtt device CapteurMouvementSalleAManger, feature linkquality not configured in Gladys.
2022-04-14T10:08:00+0200 <info> scene.checkCalendarTriggers.js:24 (SceneManager.checkCalendarTriggers) Checking calendar triggers at Thu, 14 Apr 2022 08:08:00 GMT
2022-04-14T10:08:09+0200 <warn> handleMqttMessage.js:100 () Zigbee2mqtt device PriseBureau, feature linkquality not configured in Gladys.
2022-04-14T10:08:09+0200 <warn> handleMqttMessage.js:100 () Zigbee2mqtt device PriseBureau, feature power_outage_memory not configured in Gladys.
2022-04-14T10:08:09+0200 <warn> handleMqttMessage.js:100 () Zigbee2mqtt device PriseSupp, feature linkquality not configured in Gladys.
2022-04-14T10:08:09+0200 <warn> handleMqttMessage.js:100 () Zigbee2mqtt device PriseSupp, feature power_outage_memory not configured in Gladys.
2022-04-14T10:08:23+0200 <warn> index.js:828 (Socket.<anonymous>) Socket disconnected by the server. Trying to reconnect...
2022-04-14T10:08:23+0200 <warn> index.js:794 (Socket.<anonymous>) Gladys Gateway: Unable to get new access token or refresh user list.
2022-04-14T10:08:23+0200 <warn> index.js:795 (Socket.<anonymous>) Error: Request failed with status code 403
at createError (/src/server/node_modules/axios/lib/core/createError.js:16:15)
at settle (/src/server/node_modules/axios/lib/core/settle.js:17:12)
at IncomingMessage.handleStreamEnd (/src/server/node_modules/axios/lib/adapters/http.js:269:11)
at IncomingMessage.emit (events.js:412:35)
at endReadableNT (internal/streams/readable.js:1334:12)
at processTicksAndRejections (internal/process/task_queues.js:82:21) {
config: {
url: 'https://api.gladysgateway.com/instances/access-token',
method: 'get',
headers: {
Accept: 'application/json, text/plain, */*',
authorization: 'xxxxxxxxxxxxxx',
'User-Agent': 'axios/0.21.4'
},
transformRequest: [ [Function: transformRequest] ],
transformResponse: [ [Function: transformResponse] ],
timeout: 0,
adapter: [Function: httpAdapter],
xsrfCookieName: 'XSRF-TOKEN',
xsrfHeaderName: 'X-XSRF-TOKEN',
maxContentLength: -1,
maxBodyLength: -1,
validateStatus: [Function: validateStatus],
transitional: {
silentJSONParsing: true,
forcedJSONParsing: true,
clarifyTimeoutError: false
},
data: undefined
},
request: <ref *1> ClientRequest {
_events: [Object: null prototype] {
abort: [Function (anonymous)],
aborted: [Function (anonymous)],
connect: [Function (anonymous)],
error: [Function (anonymous)],
socket: [Function (anonymous)],
timeout: [Function (anonymous)],
prefinish: [Function: requestOnPrefinish]
},
_eventsCount: 7,
_maxListeners: undefined,
outputData: [],
outputSize: 0,
writable: true,
destroyed: false,
_last: true,
chunkedEncoding: false,
shouldKeepAlive: false,
_defaultKeepAlive: true,
useChunkedEncodingByDefault: false,
sendDate: false,
_removedConnection: false,
_removedContLen: false,
_removedTE: false,
_contentLength: 0,
_hasBody: true,
_trailer: '',
finished: true,
_headerSent: true,
socket: TLSSocket {
_tlsOptions: [Object],
_secureEstablished: true,
_securePending: false,
_newSessionPending: false,
_controlReleased: true,
secureConnecting: false,
_SNICallback: null,
servername: 'api.gladysgateway.com',
alpnProtocol: false,
authorized: true,
authorizationError: null,
encrypted: true,
_events: [Object: null prototype],
_eventsCount: 10,
connecting: false,
_hadError: false,
_parent: null,
_host: 'api.gladysgateway.com',
_readableState: [ReadableState],
_maxListeners: undefined,
_writableState: [WritableState],
allowHalfOpen: false,
_sockname: null,
_pendingData: null,
_pendingEncoding: '',
server: undefined,
_server: null,
ssl: [TLSWrap],
_requestCert: true,
_rejectUnauthorized: true,
parser: null,
_httpMessage: [Circular *1],
[Symbol(res)]: [TLSWrap],
[Symbol(verified)]: true,
[Symbol(pendingSession)]: null,
[Symbol(async_id_symbol)]: 14971,
[Symbol(kHandle)]: [TLSWrap],
[Symbol(kSetNoDelay)]: false,
[Symbol(lastWriteQueueSize)]: 0,
[Symbol(timeout)]: null,
[Symbol(kBuffer)]: null,
[Symbol(kBufferCb)]: null,
[Symbol(kBufferGen)]: null,
[Symbol(kCapture)]: false,
[Symbol(kBytesRead)]: 0,
[Symbol(kBytesWritten)]: 0,
[Symbol(connect-options)]: [Object],
[Symbol(RequestTimeout)]: undefined
},
_header: 'GET /instances/access-token HTTP/1.1\r\n' +
'Accept: application/json, text/plain, */*\r\n' +
'authorization: xxxxxxxxxxxxxxxxxxxxxxx1Z1yLZZRvktInSYpXxNRoDcQx3vYNIviy7b9M\r\n' +
'User-Agent: axios/0.21.4\r\n' +
'Host: api.gladysgateway.com\r\n' +
'Connection: close\r\n' +
'\r\n',
_keepAliveTimeout: 0,
_onPendingData: [Function: noopPendingOutput],
agent: Agent {
_events: [Object: null prototype],
_eventsCount: 2,
_maxListeners: undefined,
defaultPort: 443,
protocol: 'https:',
options: [Object],
requests: {},
sockets: [Object],
freeSockets: {},
keepAliveMsecs: 1000,
keepAlive: false,
maxSockets: Infinity,
maxFreeSockets: 256,
scheduling: 'lifo',
maxTotalSockets: Infinity,
totalSocketCount: 1,
maxCachedSessions: 100,
_sessionCache: [Object],
[Symbol(kCapture)]: false
},
socketPath: undefined,
method: 'GET',
maxHeaderSize: undefined,
insecureHTTPParser: undefined,
path: '/instances/access-token',
_ended: true,
res: IncomingMessage {
_readableState: [ReadableState],
_events: [Object: null prototype],
_eventsCount: 3,
_maxListeners: undefined,
socket: [TLSSocket],
httpVersionMajor: 1,
httpVersionMinor: 1,
httpVersion: '1.1',
complete: true,
headers: [Object],
rawHeaders: [Array],
trailers: {},
rawTrailers: [],
aborted: false,
upgrade: false,
url: '',
method: null,
statusCode: 403,
statusMessage: 'Forbidden',
client: [TLSSocket],
_consuming: false,
_dumped: false,
req: [Circular *1],
responseUrl: 'https://api.gladysgateway.com/instances/access-token',
redirects: [],
[Symbol(kCapture)]: false,
[Symbol(RequestTimeout)]: undefined
},
aborted: false,
timeoutCb: null,
upgradeOrConnect: false,
parser: null,
maxHeadersCount: null,
reusedSocket: false,
host: 'api.gladysgateway.com',
protocol: 'https:',
_redirectable: Writable {
_writableState: [WritableState],
_events: [Object: null prototype],
_eventsCount: 2,
_maxListeners: undefined,
_options: [Object],
_ended: true,
_ending: true,
_redirectCount: 0,
_redirects: [],
_requestBodyLength: 0,
_requestBodyBuffers: [],
_onNativeResponse: [Function (anonymous)],
_currentRequest: [Circular *1],
_currentUrl: 'https://api.gladysgateway.com/instances/access-token',
[Symbol(kCapture)]: false
},
[Symbol(kCapture)]: false,
[Symbol(kNeedDrain)]: false,
[Symbol(corked)]: 0,
[Symbol(kOutHeaders)]: [Object: null prototype] {
accept: [Array],
authorization: [Array],
'user-agent': [Array],
host: [Array]
}
},
response: {
status: 403,
statusText: 'Forbidden',
headers: {
server: 'nginx/1.19.3',
date: 'Thu, 14 Apr 2022 08:08:23 GMT',
'content-type': 'application/json; charset=utf-8',
'content-length': '67',
connection: 'close',
'x-powered-by': 'Express',
'access-control-allow-origin': '*',
'access-control-allow-methods': 'GET,PUT,POST,PATCH,DELETE,OPTIONS',
'access-control-allow-headers': 'Content-Type, Authorization, Content-Length, X-Requested-With',
etag: 'W/"43-cmA3lePMVRz8mAO0r30P2lM8MEc"',
'strict-transport-security': 'max-age=31536000'
},
config: {
url: 'https://api.gladysgateway.com/instances/access-token',
method: 'get',
headers: [Object],
transformRequest: [Array],
transformResponse: [Array],
timeout: 0,
adapter: [Function: httpAdapter],
xsrfCookieName: 'XSRF-TOKEN',
xsrfHeaderName: 'X-XSRF-TOKEN',
maxContentLength: -1,
maxBodyLength: -1,
validateStatus: [Function: validateStatus],
transitional: [Object],
data: undefined
},
request: <ref *1> ClientRequest {
_events: [Object: null prototype],
_eventsCount: 7,
_maxListeners: undefined,
outputData: [],
outputSize: 0,
writable: true,
destroyed: false,
_last: true,
chunkedEncoding: false,
shouldKeepAlive: false,
_defaultKeepAlive: true,
useChunkedEncodingByDefault: false,
sendDate: false,
_removedConnection: false,
_removedContLen: false,
_removedTE: false,
_contentLength: 0,
_hasBody: true,
_trailer: '',
finished: true,
_headerSent: true,
socket: [TLSSocket],
_header: 'GET /instances/access-token HTTP/1.1\r\n' +
'Accept: application/json, text/plain, */*\r\n' +
'authorization: xxxx xxxxxxxxxxxx xx xxxRvktInSYpXxNRoDcQx3vYNIviy7b9M\r\n' +
'User-Agent: axios/0.21.4\r\n' +
'Host: api.gladysgateway.com\r\n' +
'Connection: close\r\n' +
'\r\n',
_keepAliveTimeout: 0,
_onPendingData: [Function: noopPendingOutput],
agent: [Agent],
socketPath: undefined,
method: 'GET',
maxHeaderSize: undefined,
insecureHTTPParser: undefined,
path: '/instances/access-token',
_ended: true,
res: [IncomingMessage],
aborted: false,
timeoutCb: null,
upgradeOrConnect: false,
parser: null,
maxHeadersCount: null,
reusedSocket: false,
host: 'api.gladysgateway.com',
protocol: 'https:',
_redirectable: [Writable],
[Symbol(kCapture)]: false,
[Symbol(kNeedDrain)]: false,
[Symbol(corked)]: 0,
[Symbol(kOutHeaders)]: [Object: null prototype]
},
data: {
status: 403,
error_code: 'FORBIDDEN',
error_message: 'Forbidden'
}
},
isAxiosError: true,
toJSON: [Function: toJSON]
}
2022-04-14T10:08:28+0200 <warn> handleMqttMessage.js:100 () Zigbee2mqtt device CapteurMouvementSalon, feature illuminance_lux not configured in Gladys.
2022-04-14T10:08:28+0200 <warn> handleMqttMessage.js:100 () Zigbee2mqtt device CapteurMouvementSalon, feature linkquality not configured in Gladys.
2022-04-14T10:08:28+0200 <warn> handleMqttMessage.js:100 () Zigbee2mqtt device CapteurMouvementSalon, feature illuminance_lux not configured in Gladys.
2022-04-14T10:08:28+0200 <warn> handleMqttMessage.js:100 () Zigbee2mqtt device CapteurMouvementSalon, feature linkquality not configured in Gladys.
- Quand je clique sur mon interrupteur sans fil, j’ai deux warning et mon interrupteur ne fonctionne pas, donc ma scène ne s’exécute pas.
2022-04-14T10:09:02+0200 <warn> handleMqttMessage.js:100 () Zigbee2mqtt device InterrupteurSansFil, feature linkquality not configured in Gladys.
2022-04-14T10:09:02+0200 <warn> handleMqttMessage.js:100 () Zigbee2mqtt device InterrupteurSansFil, feature temperature not configured in Gladys.
Investigations
-
Pourtant le bouton est bien détecté :
-
En supprimant / re-créant le bouton sans fil (ce qui a très très fortement ralenti le système de mon Raspberry Pi) :
- On voit que c’est bien
nodequi utilise la majorité du disque (et l’agent de monitoringnetdataqui en rajoute, mais ça c’est perso, hors gladys)
- On voit que c’est bien
Solution
Je pense que mes tests précédents n’ont rien changé. Ce qui s’est passé, c’est que le simple clic n’est plus égal à 1, mais égal à 0 désormais.
Ma scène utilisais le 1, ce qui mécaniquement l’a rendue obsolete.
En changeant la valeur de ma scène en = 0 alors c’est fonctionnel à nouveau. Il faut faire attention ici, car ça risque de casser pas mal de scènes, sur les différents types de clic (simple, double, long)
MOD Edit :
Je me suis permis d’éditer ton post pour supprimer les tokens d’authorisation … on ne sait jamais !!
Thanks for your feedback @lmilcent!
Ok, I see, that’s not great.
On the other hand, I didn’t understand if this PR solved your problems. Can you discuss with @AlexTrovato to see how we could make this PR work?
Well, the conclusion is that I was too quick, I merged this PR too early on master, and now we have a master that is no longer deployable. I would revert the PR if needed if I want to deploy the other fixes first, I haven’t done a release of Gladys for 2 weeks now ![]()
I’ll reply to your other comments, but they are not related to this PR:
This is a known limitation of the current implementation of device deletion, which cascade deletes all states, saturating the disk bandwidth until everything is deleted ![]()
See:
Have you disconnected Gladys Plus in the settings?
Ok indeed, I see that I was a bit hasty on the « button click ».
I correct the mapping to match Gladys’s click mapping.
Regarding the warning logs:
- linkquality concerns the signal quality, not yet mapped
- temperature should generate a feature on your concerned device, although I am quite surprised to see this kind of feature on a switch
@lmilcent do you know which docker image (Gladys version) you are using?
I am generating a new image (up-to-date on the Gladys trunk) containing the mapping fix: atrovato/gladys:zigbee2mqtt (available in 2 hours).
You will therefore have to put your scene back as it was before, in order to test that it is not more broken.
@pierre-gilles the fix is quite simple, as the code is isolated.
If you notice other things, I am on the alert!
I think these changes are necessary for z2m, we must not let go!!!
Thanks ![]()
If you notice anything else, I’m on high alert!
I think these changes are necessary for z2m, we must not give up!!!
Thank you ![]()
Hello @AlexTrovato
I take advantage of your offer, I don’t know if my request falls within the scope of your proposal, but if you can look at the Xiaomi LLKZMK11LM (double relay) issue
I thank you in advance
@Psoy which version are you currently on? Because I see two things for your problem:
- Originally (before my changes) only the first switch (state) was managed as an actuator in Gladys
- The display and management of the multi-switch for a device on the dashboard which concerns another more global point that I will not address here
Which version are you currently on? Because I see two things for your problem:
Gladys version 4.8.3 (Pierre-Gilles image installation).
For me, the problem is still the same, no evolution.
Indeed, the first switch works normally
Too bad, I will wait, I thank you for answering
Have a good day
Ok it works!
I had the impression with the message from @lmilcent that it was more serious, if it’s just PR end details, all the better ![]()
Yes I think so too! Thanks again for your availability and for this PR!! ![]()
For the Gladys Plus part @pierre-gilles, I’ve disconnected everything to my knowledge!
And for the container version, it was the latest :dev when I tested. I always do a pull before creating the container.
Otherwise, the rest seems functional, I haven’t noticed anything else.
@lmilcent does the PR from @AlexTrovato correctly fix the issue?
The others on Zigbee2mqtt, does this image work well for you?
It’s been a week now since it’s been running and I haven’t noticed anything else. My scenes still work (after the mentioned modifications).
And no more error messages, except those related to Gladys Plus.
Exactly, normally @AlexTrovato’s PR is supposed to prevent having to make modifications, is that the case?
I realize that my current image is the dev tag of Gladys, not the one from @AlexTrovato. I’ll launch it and keep you posted!
I just realized that I had to restore a backup during testing, as Gladys Plus was no longer « disconnected. » That’s why I had errors in the logs.
Thanks to the current offer, I just got Gladys Plus, which will allow me to test the restoration of all my scenes, Zigbee service, and dashboard. I will give you feedback in a dedicated post.


