TheAgentK / tuya-mqtt

Nodejs-Script to combine tuyaapi and openhab via mqtt
MIT License
173 stars 81 forks source link

tuya-mqtt not working (OpenHab) #80

Closed DevLvca closed 1 year ago

DevLvca commented 2 years ago

Describe the bug Hi, im currently on raspberry pi and using OpenHab. I have setup the tuya-mqtt in my folder /opt/tuya-mqtt. The Pi creates a hotspot with Hostapd via WiFi. He only gets internet access when I connect him to the Ethernet (it's all supposed to be like that, so it's correct). My Tuya Bulb then connects to the hotspot and can also be pinged. The MQTT-Broker and my LED are already setup and working. --> See config file I have downloaded mqtt-explorer to track the trafic on my broker topic and noticed that every time I connect my Raspberry pi to the Internet, a topic called "Homeassistant" and several subtopics are created. I also noticed that my LED only works when the mentioned topics are created and the status is = online... If the status = offline, the LED cannot be controlled or pinged. It should be mentioned that the pi creates the mentioned topics after booting and after that the status goes online for several seconds. (LED can be controlled during this time without any problems) The status then goes offline again and the LED cannot be controlled. Important: Only if the Pi had Internet access while booting up it will create the topics!

Expected behavior The problem is that I actually want to control the LED completely locally and without any internet access. When booting up, the LED should be easily controlled.

Screenshots image image image image image

Versions:

Additional context Maybe someone can tell me if the port (1884) is correct or whether there is a specific port that is used for the Broker. Also, it would be nice if someone could tell me what the status stands for and if it's normal for me to need an internet connection while booting the Pi.

Thanks for your help!

tsightler commented 2 years ago

I think it is unlikely that you will get a response from anyone else as this project is effectively dead, but I will try to answer a few of your questions.

The Home Assistant topics are mostly non-important as they are only used for automatic discovery when this project is leveraged with Home Assistant. If you are not using Home Assistant, they can just be ignored.

I don't know any reason why internet access should be required, there's no check for internet access in the code, literally it just tries to find the device on the network, using the ID and IP address, and publishes the data if it finds the device. The device will only be "online" if it is found so "offline" indicates that the system cannot communicate with the device. My guess is that hostapd is putting the wireless into some kind of mode that is interfering with the Tuya device discovery on that interface so, when you connect the ethernet, the discovery actually works, but this is totally just a guess on my part.

Unfortunately, I'm no longer using or maintaining this project, and I won't be able to help in any more detail. You can try enabling debug as you should get much more information about the tuya discovery, etc. Good luck!

markuslaube commented 2 years ago

openhab integration works fine for me, please:

stop the deamon and start the tuya-mqtt via command line:

DEBUG=tuya-mqtt:* tuya-mqtt.js

If you send Debug-Output I can have a look for you

DevLvca commented 2 years ago

Hi, thank you for your help. :) Even when getting errors while debugging, the LED can still be controlled as described above...

I took @tsightler advice and played around with hostapd a bit. I figured out that the led could or could not be controlled depending on the configuration. Maybe someone can help me with a working / right hostapd configuration file? :)

Although when I enter your command, I get an output that the command was not found. However, in the past I have debugged many times and used this command "DEBUG=* node tuya-mqtt.js".

The debugging is infinitely long, I have summarized an excerpt for you below:

mqttjs:client MqttClient :: options.protocol mqtt +0ms mqttjs:client MqttClient :: options.protocolVersion 4 +1ms mqttjs:client MqttClient :: options.username username +0ms mqttjs:client MqttClient :: options.keepalive 60 +0ms mqttjs:client MqttClient :: options.reconnectPeriod 1000 +0ms mqttjs:client MqttClient :: options.rejectUnauthorized undefined +0ms mqttjs:client MqttClient :: options.topicAliasMaximum undefined +1ms mqttjs:client MqttClient :: clientId mqttjs_79b7efb1 +0ms mqttjs:client MqttClient :: setting up stream +1ms mqtt-packet:parser _resetState: resetting packet, error, _list, and _stateCounter +0ms mqttjs:client _setupStream :: calling method to clear reconnect +7ms mqttjs:client _clearReconnect : clearing reconnect timer +0ms mqttjs:client _setupStream :: using streamBuilder provided to client to create stream +0ms mqttjs calling streambuilder for mqtt +20ms mqttjs:tcp port 1884 and host localhost +0ms mqttjs:client _setupStream :: pipe stream to writable stream +15ms mqttjs:client _setupStream: sending packet connect +3ms mqttjs:client sendPacket :: packet: { cmd: 'connect' } +1ms mqttjs:client sendPacket :: emitting packetsend +7ms mqttjs:client sendPacket :: writing to stream +1ms mqtt-packet:writeToStream generate called +0ms mqtt-packet:writeToStream generate: packet.cmd: connect +65ms mqtt-packet:writeToStream writeVarByteInt: writing to stream: <Buffer 2e> +3ms mqtt-packet:writeToStream writeNumberCached: number: 4 +2ms mqtt-packet:writeToStream writeNumberCached: <Buffer 00 04> +0ms mqtt-packet:writeToStream writeString: MQTT +1ms mqtt-packet:writeToStream writeNumberCached: number: 60 +0ms mqtt-packet:writeToStream writeNumberCached: <Buffer 00 3c> +0ms mqtt-packet:writeToStream writeNumberCached: number: 15 +0ms mqtt-packet:writeToStream writeNumberCached: <Buffer 00 0f> +1ms mqtt-packet:writeToStream writeString: mqttjs_79b7efb1 +0ms mqtt-packet:writeToStream writeNumberCached: number: 8 +0ms mqtt-packet:writeToStream writeNumberCached: <Buffer 00 08> +0ms mqtt-packet:writeToStream writeString: username +0ms mqtt-packet:writeToStream writeNumberCached: number: 7 +0ms mqtt-packet:writeToStream writeNumberCached: <Buffer 00 07> +1ms mqtt-packet:writeToStream writeString: MqttPwd +0ms mqttjs:client sendPacket :: writeToStream result true +73ms mqttjs:client writable stream :: parsing buffer +15ms mqtt-packet:parser parse: current state: _parseHeader +119ms mqtt-packet:parser _parseHeader: packet: Packet { cmd: 'connack', retain: false, qos: 0, dup: false, length: -1, topic: null, payload: null } +2ms mqtt-packet:parser parse: state complete. _stateCounter is now: 1 +4ms mqtt-packet:parser parse: packet.length: -1, buffer list length: 3 +0ms mqtt-packet:parser _parseVarByteNum +1ms mqtt-packet:parser _parseVarByteNum: result: { bytes: 1, value: 2 } +1ms mqtt-packet:parser _parseLength 2 +0ms mqtt-packet:parser parse: state complete. _stateCounter is now: 2 +0ms mqtt-packet:parser parse: packet.length: 2, buffer list length: 2 +0ms mqtt-packet:parser _parsePayload: payload BufferListStream { mqtt-packet:parser _bufs: [ <Buffer 00 00> ], mqtt-packet:parser length: 2, mqtt-packet:parser _readableState: mqtt-packet:parser ReadableState { mqtt-packet:parser objectMode: false, mqtt-packet:parser highWaterMark: 16384, mqtt-packet:parser buffer: BufferList { head: null, tail: null, length: 0 }, mqtt-packet:parser length: 0, mqtt-packet:parser pipes: null, mqtt-packet:parser pipesCount: 0, mqtt-packet:parser flowing: null, mqtt-packet:parser ended: false, mqtt-packet:parser endEmitted: false, mqtt-packet:parser reading: false, mqtt-packet:parser sync: true, mqtt-packet:parser needReadable: false, mqtt-packet:parser emittedReadable: false, mqtt-packet:parser readableListening: false, mqtt-packet:parser resumeScheduled: false, mqtt-packet:parser paused: true, mqtt-packet:parser emitClose: true, mqtt-packet:parser autoDestroy: false, mqtt-packet:parser destroyed: false, mqtt-packet:parser defaultEncoding: 'utf8', mqtt-packet:parser awaitDrain: 0, mqtt-packet:parser readingMore: false, mqtt-packet:parser decoder: null, mqtt-packet:parser encoding: null }, mqtt-packet:parser readable: true, mqtt-packet:parser _events: [Object: null prototype] {}, mqtt-packet:parser _eventsCount: 0, mqtt-packet:parser _maxListeners: undefined, mqtt-packet:parser _writableState: mqtt-packet:parser WritableState { mqtt-packet:parser objectMode: false, mqtt-packet:parser highWaterMark: 16384, mqtt-packet:parser finalCalled: false, mqtt-packet:parser needDrain: false, mqtt-packet:parser ending: false, mqtt-packet:parser ended: false, mqtt-packet:parser finished: false, mqtt-packet:parser destroyed: false, mqtt-packet:parser decodeStrings: true, mqtt-packet:parser defaultEncoding: 'utf8', mqtt-packet:parser length: 0, mqtt-packet:parser writing: false, mqtt-packet:parser corked: 0, mqtt-packet:parser sync: true, mqtt-packet:parser bufferProcessing: false, mqtt-packet:parser onwrite: [Function], mqtt-packet:parser writecb: null, mqtt-packet:parser writelen: 0, mqtt-packet:parser bufferedRequest: null, mqtt-packet:parser lastBufferedRequest: null, mqtt-packet:parser pendingcb: 0, mqtt-packet:parser prefinished: false, mqtt-packet:parser errorEmitted: false, mqtt-packet:parser emitClose: true, mqtt-packet:parser autoDestroy: false, mqtt-packet:parser bufferedRequestCount: 0, mqtt-packet:parser corkedRequestsFree: mqtt-packet:parser CorkedRequest { next: null, entry: null, finish: [Function] } }, mqtt-packet:parser writable: true, mqtt-packet:parser allowHalfOpen: true } +1ms mqtt-packet:parser _parseConnack +6ms mqtt-packet:parser _parseConnack: complete +0ms mqtt-packet:parser _parsePayload complete result: true +0ms mqtt-packet:parser parse: state complete. _stateCounter is now: 3 +1ms mqtt-packet:parser parse: packet.length: 2, buffer list length: 2 +0ms mqtt-packet:parser _newPacket +0ms mqtt-packet:parser _newPacket: parser emit packet: packet.cmd: connack, packet.payload: null, packet.length: 2 +1ms mqttjs:client parser :: on packet push to packets array. +18ms mqtt-packet:parser _newPacket: new packet +0ms mqtt-packet:parser parse: state complete. _stateCounter is now: 4 +1ms mqtt-packet:parser parse: packet.length: -1, buffer list length: 0 +0ms mqtt-packet:parser parse: exited while loop. packet: -1, buffer list length: 0 +0ms mqttjs:client work :: getting next packet in queue +1ms mqttjs:client work :: packet pulled from queue +1ms mqttjs:client _handlePacket :: emitting packetreceive +0ms mqttjs:client _handleConnack +1ms mqttjs:client _setupPingTimer :: keepalive 60 (seconds) +1ms mqttjs:client connect :: sending queued packets +9ms mqttjs:client deliver :: entry undefined +1ms mqttjs:client _resubscribe +1ms tuya-mqtt:info Connection established to MQTT server +0ms mqttjs:client subscribe: array topic tuya/# +2ms mqttjs:client subscribe: pushing topic tuya/# and qos 0 to subs list +1ms mqttjs:client subscribe :: resubscribe true +1ms mqttjs:client subscribe :: call _sendPacket +0ms mqttjs:client _sendPacket :: (mqttjs_79b7efb1) :: start +1ms mqttjs:client sendPacket :: packet: { cmd: 'subscribe', mqttjs:client subscriptions: [ { topic: 'tuya/#', qos: 0 } ], mqttjs:client qos: 1, mqttjs:client retain: false, mqttjs:client dup: false, mqttjs:client messageId: 15277 } +1ms mqttjs:client sendPacket :: emitting packetsend +1ms mqttjs:client sendPacket :: writing to stream +0ms mqtt-packet:writeToStream generate called +56ms mqtt-packet:writeToStream generate: packet.cmd: subscribe +0ms mqtt-packet:writeToStream subscribe: packet: +1ms mqtt-packet:writeToStream subscribe: writing to stream: [ [ [ <Buffer 80>, <Buffer 81> ], [ <Buffer 88>, <Buffer 89> ] ], [ [ <Buffer 82>, <Buffer 83> ], [ <Buffer 8a>, <Buffer 8b> ] ], [ [ <Buffer 84>, <Buffer 85> ], [ <Buffer 8c>, <Buffer 8d> ] ] ] +0ms mqtt-packet:writeToStream writeVarByteInt: writing to stream: <Buffer 0b> +1ms mqtt-packet:writeToStream writeNumberCached: number: 15277 +1ms mqtt-packet:writeToStream writeNumberCached: <Buffer 3b ad> +0ms mqtt-packet:writeToStream writeNumberCached: number: 6 +0ms mqtt-packet:writeToStream writeNumberCached: <Buffer 00 06> +0ms mqtt-packet:writeToStream writeString: tuya/# +1ms mqttjs:client sendPacket :: writeToStream result true +5ms mqttjs:client sendPacket :: invoking cb +0ms mqttjs:client nop :: undefined +0ms mqttjs:client subscribe: array topic tuya/smart_light_bulb/status +1ms mqttjs:client subscribe: pushing topic tuya/smart_light_bulb/status and qos 0 to subs list +0ms mqttjs:client subscribe :: resubscribe true +0ms mqttjs:client subscribe :: call _sendPacket +1ms mqttjs:client _sendPacket :: (mqttjs_79b7efb1) :: start +0ms mqttjs:client sendPacket :: packet: { cmd: 'subscribe', mqttjs:client subscriptions: [ { topic: 'tuya/smart_light_bulb/status', qos: 0 } ], mqttjs:client qos: 1, mqttjs:client retain: false, mqttjs:client dup: false, mqttjs:client messageId: 15278 } +0ms mqttjs:client sendPacket :: emitting packetsend +1ms mqttjs:client sendPacket :: writing to stream +0ms mqtt-packet:writeToStream generate called +4ms mqtt-packet:writeToStream generate: packet.cmd: subscribe +0ms mqtt-packet:writeToStream subscribe: packet: +0ms mqtt-packet:writeToStream subscribe: writing to stream: [ [ [ <Buffer 80>, <Buffer 81> ], [ <Buffer 88>, <Buffer 89> ] ], [ [ <Buffer 82>, <Buffer 83> ], [ <Buffer 8a>, <Buffer 8b> ] ], [ [ <Buffer 84>, <Buffer 85> ], [ <Buffer 8c>, <Buffer 8d> ] ] ] +1ms mqtt-packet:writeToStream writeVarByteInt: writing to stream: <Buffer 21> +1ms mqtt-packet:writeToStream writeNumberCached: number: 15278 +0ms mqtt-packet:writeToStream writeNumberCached: <Buffer 3b ae> +1ms mqtt-packet:writeToStream writeNumberCached: number: 28 +0ms mqtt-packet:writeToStream writeNumberCached: <Buffer 00 1c> +0ms mqtt-packet:writeToStream writeString: tuya/smart_light_bulb/status +0ms mqttjs:client sendPacket :: writeToStream result true +5ms mqttjs:client sendPacket :: invoking cb +0ms mqttjs:client nop :: undefined +0ms tuya-mqtt:tuyapi Search for device id 60282541b4e62d7a34 +0ms TuyAPI IP and ID are already both resolved. +0ms tuya-mqtt:tuyapi Found device id 60282541b4e62d7a34 +5ms TuyAPI Connecting to 192.168.99.99... +7ms mqttjs:client writable stream :: parsing buffer +19ms mqtt-packet:parser parse: current state: _parseHeader +54ms mqtt-packet:parser _parseHeader: packet: Packet { cmd: 'suback', retain: false, qos: 0, dup: false, length: -1, topic: null, payload: null } +0ms mqtt-packet:parser parse: state complete. _stateCounter is now: 1 +1ms mqtt-packet:parser parse: packet.length: -1, buffer list length: 9 +0ms mqtt-packet:parser _parseVarByteNum +0ms mqtt-packet:parser _parseVarByteNum: result: { bytes: 1, value: 3 } +1ms mqtt-packet:parser _parseLength 3 +0ms mqtt-packet:parser parse: state complete. _stateCounter is now: 2 +1ms mqtt-packet:parser parse: packet.length: 3, buffer list length: 8 +0ms mqtt-packet:parser _parsePayload: payload BufferListStream { mqtt-packet:parser _bufs: [ <Buffer 3b ad 00 90 03 3b ae 00> ], mqtt-packet:parser length: 8, mqtt-packet:parser _readableState: mqtt-packet:parser ReadableState { mqtt-packet:parser objectMode: false, mqtt-packet:parser highWaterMark: 16384, mqtt-packet:parser buffer: BufferList { head: null, tail: null, length: 0 }, mqtt-packet:parser length: 0, mqtt-packet:parser pipes: null, mqtt-packet:parser pipesCount: 0, mqtt-packet:parser flowing: null, mqtt-packet:parser ended: false, mqtt-packet:parser endEmitted: false, mqtt-packet:parser reading: false, mqtt-packet:parser sync: true, mqtt-packet:parser needReadable: false, mqtt-packet:parser emittedReadable: false, mqtt-packet:parser readableListening: false, mqtt-packet:parser resumeScheduled: false, mqtt-packet:parser paused: true, mqtt-packet:parser emitClose: true, mqtt-packet:parser autoDestroy: false, mqtt-packet:parser destroyed: false, mqtt-packet:parser defaultEncoding: 'utf8', mqtt-packet:parser awaitDrain: 0, mqtt-packet:parser readingMore: false, mqtt-packet:parser decoder: null, mqtt-packet:parser encoding: null }, mqtt-packet:parser readable: true, mqtt-packet:parser _events: [Object: null prototype] {}, mqtt-packet:parser _eventsCount: 0, mqtt-packet:parser _maxListeners: undefined, mqtt-packet:parser _writableState: mqtt-packet:parser WritableState { mqtt-packet:parser objectMode: false, mqtt-packet:parser highWaterMark: 16384, mqtt-packet:parser finalCalled: false, mqtt-packet:parser needDrain: false, mqtt-packet:parser ending: false, mqtt-packet:parser ended: false, mqtt-packet:parser finished: false, mqtt-packet:parser destroyed: false, mqtt-packet:parser decodeStrings: true, mqtt-packet:parser defaultEncoding: 'utf8', mqtt-packet:parser length: 0, mqtt-packet:parser writing: false, mqtt-packet:parser corked: 0, mqtt-packet:parser sync: true, mqtt-packet:parser bufferProcessing: false, mqtt-packet:parser onwrite: [Function], mqtt-packet:parser writecb: null, mqtt-packet:parser writelen: 0, mqtt-packet:parser bufferedRequest: null, mqtt-packet:parser lastBufferedRequest: null, mqtt-packet:parser pendingcb: 0, mqtt-packet:parser prefinished: false, mqtt-packet:parser errorEmitted: false, mqtt-packet:parser emitClose: true, mqtt-packet:parser autoDestroy: false, mqtt-packet:parser bufferedRequestCount: 0, mqtt-packet:parser corkedRequestsFree: mqtt-packet:parser CorkedRequest { next: null, entry: null, finish: [Function] } }, mqtt-packet:parser writable: true, mqtt-packet:parser allowHalfOpen: true } +0ms mqtt-packet:parser _parseSuback +5ms mqtt-packet:parser _parseNum: result: 15277 +14ms mqtt-packet:parser _parseMessageId: packet.messageId 15277 +0ms mqtt-packet:parser _parsePayload complete result: true +1ms mqtt-packet:parser parse: state complete. _stateCounter is now: 3 +0ms mqtt-packet:parser parse: packet.length: 3, buffer list length: 8 +0ms mqtt-packet:parser _newPacket +1ms mqtt-packet:parser _newPacket: parser emit packet: packet.cmd: suback, packet.payload: null, packet.length: 3 +0ms mqttjs:client parser :: on packet push to packets array. +25ms mqtt-packet:parser _newPacket: new packet +0ms mqtt-packet:parser parse: state complete. _stateCounter is now: 4 +1ms mqtt-packet:parser parse: packet.length: -1, buffer list length: 5 +0ms mqtt-packet:parser _parseHeader: packet: Packet { cmd: 'suback', retain: false, qos: 0, dup: false, length: -1, topic: null, payload: null } +1ms mqtt-packet:parser parse: state complete. _stateCounter is now: 1 +0ms mqtt-packet:parser parse: packet.length: -1, buffer list length: 4 +0ms mqtt-packet:parser _parseVarByteNum +1ms mqtt-packet:parser _parseVarByteNum: result: { bytes: 1, value: 3 } +0ms mqtt-packet:parser _parseLength 3 +1ms mqtt-packet:parser parse: state complete. _stateCounter is now: 2 +0ms mqtt-packet:parser parse: packet.length: 3, buffer list length: 3 +0ms mqtt-packet:parser _parsePayload: payload BufferListStream { mqtt-packet:parser _bufs: [ <Buffer 3b ae 00> ], mqtt-packet:parser length: 3, mqtt-packet:parser _readableState: mqtt-packet:parser ReadableState { mqtt-packet:parser objectMode: false, mqtt-packet:parser highWaterMark: 16384, mqtt-packet:parser buffer: BufferList { head: null, tail: null, length: 0 }, mqtt-packet:parser length: 0, mqtt-packet:parser pipes: null, mqtt-packet:parser pipesCount: 0, mqtt-packet:parser flowing: null, mqtt-packet:parser ended: false, mqtt-packet:parser endEmitted: false, mqtt-packet:parser reading: false, mqtt-packet:parser sync: true, mqtt-packet:parser needReadable: false, mqtt-packet:parser emittedReadable: false, mqtt-packet:parser readableListening: false, mqtt-packet:parser resumeScheduled: false, mqtt-packet:parser paused: true, mqtt-packet:parser emitClose: true, mqtt-packet:parser autoDestroy: false, mqtt-packet:parser destroyed: false, mqtt-packet:parser defaultEncoding: 'utf8', mqtt-packet:parser awaitDrain: 0, mqtt-packet:parser readingMore: false, mqtt-packet:parser decoder: null, mqtt-packet:parser encoding: null }, mqtt-packet:parser readable: true, mqtt-packet:parser _events: [Object: null prototype] {}, mqtt-packet:parser _eventsCount: 0, mqtt-packet:parser _maxListeners: undefined, mqtt-packet:parser _writableState: mqtt-packet:parser WritableState { mqtt-packet:parser objectMode: false, mqtt-packet:parser highWaterMark: 16384, mqtt-packet:parser finalCalled: false, mqtt-packet:parser needDrain: false, mqtt-packet:parser ending: false, mqtt-packet:parser ended: false, mqtt-packet:parser finished: false, mqtt-packet:parser destroyed: false, mqtt-packet:parser decodeStrings: true, mqtt-packet:parser defaultEncoding: 'utf8', mqtt-packet:parser length: 0, mqtt-packet:parser writing: false, mqtt-packet:parser corked: 0, mqtt-packet:parser sync: true, mqtt-packet:parser bufferProcessing: false, mqtt-packet:parser onwrite: [Function], mqtt-packet:parser writecb: null, mqtt-packet:parser writelen: 0, mqtt-packet:parser bufferedRequest: null, mqtt-packet:parser lastBufferedRequest: null, mqtt-packet:parser pendingcb: 0, mqtt-packet:parser prefinished: false, mqtt-packet:parser errorEmitted: false, mqtt-packet:parser emitClose: true, mqtt-packet:parser autoDestroy: false, mqtt-packet:parser bufferedRequestCount: 0, mqtt-packet:parser corkedRequestsFree: mqtt-packet:parser CorkedRequest { next: null, entry: null, finish: [Function] } }, mqtt-packet:parser writable: true, mqtt-packet:parser allowHalfOpen: true } +0ms mqtt-packet:parser _parseSuback +3ms mqtt-packet:parser _parseNum: result: 15278 +1ms mqtt-packet:parser _parseMessageId: packet.messageId 15278 +0ms mqtt-packet:parser _parsePayload complete result: true +1ms mqtt-packet:parser parse: state complete. _stateCounter is now: 3 +0ms mqtt-packet:parser parse: packet.length: 3, buffer list length: 3 +0ms mqtt-packet:parser _newPacket +1ms mqtt-packet:parser _newPacket: parser emit packet: packet.cmd: suback, packet.payload: null, packet.length: 3 +0ms mqttjs:client parser :: on packet push to packets array. +10ms mqtt-packet:parser _newPacket: new packet +1ms mqtt-packet:parser parse: state complete. _stateCounter is now: 4 +0ms mqtt-packet:parser parse: packet.length: -1, buffer list length: 0 +0ms mqtt-packet:parser parse: exited while loop. packet: -1, buffer list length: 0 +0ms mqttjs:client work :: getting next packet in queue +1ms mqttjs:client work :: packet pulled from queue +1ms mqttjs:client _handlePacket :: emitting packetreceive +0ms mqttjs:client _handleAck :: packet type suback +2ms mqttjs:client nop :: null +1ms mqttjs:client work :: getting next packet in queue +0ms mqttjs:client work :: packet pulled from queue +1ms mqttjs:client _handlePacket :: emitting packetreceive +0ms mqttjs:client _handleAck :: packet type suback +0ms mqttjs:client nop :: null +1ms TuyAPI Error event from socket. 192.168.99.99 { Error: connect ECONNRESET 192.168.99.99:6668 at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1107:14) errno: 'ECONNRESET', code: 'ECONNRESET', syscall: 'connect', address: '192.168.99.99', port: 6668 } +48ms tuya-mqtt:error Error: Error from socket: connect ECONNRESET 192.168.99.99:6668 tuya-mqtt:error at Socket.client.on.err (/opt/tuya-mqtt/node_modules/tuyapi/index.js:490:30) tuya-mqtt:error at Socket.emit (events.js:198:13) tuya-mqtt:error at emitErrorNT (internal/streams/destroy.js:91:8) tuya-mqtt:error at emitErrorAndCloseNT (internal/streams/destroy.js:59:3) tuya-mqtt:error at process._tickCallback (internal/process/next_tick.js:63:19) +0ms tuya-mqtt:error connect ECONNRESET 192.168.99.99:6668 +2ms tuya-mqtt:error Error connecting to device id 60282541b4e62d7a34...retry in 10 seconds. +1ms TuyAPI Socket closed: 192.168.99.99 +6ms mqttjs:client writable stream :: parsing buffer +2s mqtt-packet:parser parse: current state: _parseHeader +2s mqtt-packet:parser _parseHeader: packet: Packet { cmd: 'publish', retain: false, qos: 0, dup: false, length: -1, topic: null, payload: null } +1ms mqtt-packet:parser parse: state complete. _stateCounter is now: 1 +1ms mqtt-packet:parser parse: packet.length: -1, buffer list length: 38 +1ms mqtt-packet:parser _parseVarByteNum +0ms mqtt-packet:parser _parseVarByteNum: result: { bytes: 1, value: 37 } +1ms mqtt-packet:parser _parseLength 37 +1ms mqtt-packet:parser parse: state complete. _stateCounter is now: 2 +0ms mqtt-packet:parser parse: packet.length: 37, buffer list length: 37 +1ms mqtt-packet:parser _parsePayload: payload BufferListStream { mqtt-packet:parser _bufs: mqtt-packet:parser [ <Buffer 00 1c 74 75 79 61 2f 73 6d 61 72 74 5f 6c 69 67 68 74 5f 62 75 6c 62 2f 73 74 61 74 75 73 6f 66 66 6c 69 6e 65> ], mqtt-packet:parser length: 37, mqtt-packet:parser _readableState: mqtt-packet:parser ReadableState { mqtt-packet:parser objectMode: false, mqtt-packet:parser highWaterMark: 16384, mqtt-packet:parser buffer: BufferList { head: null, tail: null, length: 0 }, mqtt-packet:parser length: 0, mqtt-packet:parser pipes: null, mqtt-packet:parser pipesCount: 0, mqtt-packet:parser flowing: null, mqtt-packet:parser ended: false, mqtt-packet:parser endEmitted: false, mqtt-packet:parser reading: false, mqtt-packet:parser sync: true, mqtt-packet:parser needReadable: false, mqtt-packet:parser emittedReadable: false, mqtt-packet:parser readableListening: false, mqtt-packet:parser resumeScheduled: false, mqtt-packet:parser paused: true, mqtt-packet:parser emitClose: true, mqtt-packet:parser autoDestroy: false, mqtt-packet:parser destroyed: false, mqtt-packet:parser defaultEncoding: 'utf8', mqtt-packet:parser awaitDrain: 0, mqtt-packet:parser readingMore: false, mqtt-packet:parser decoder: null, mqtt-packet:parser encoding: null }, mqtt-packet:parser readable: true, mqtt-packet:parser _events: [Object: null prototype] {}, mqtt-packet:parser _eventsCount: 0, mqtt-packet:parser _maxListeners: undefined, mqtt-packet:parser _writableState: mqtt-packet:parser WritableState { mqtt-packet:parser objectMode: false, mqtt-packet:parser highWaterMark: 16384, mqtt-packet:parser finalCalled: false, mqtt-packet:parser needDrain: false, mqtt-packet:parser ending: false, mqtt-packet:parser ended: false, mqtt-packet:parser finished: false, mqtt-packet:parser destroyed: false, mqtt-packet:parser decodeStrings: true, mqtt-packet:parser defaultEncoding: 'utf8', mqtt-packet:parser length: 0, mqtt-packet:parser writing: false, mqtt-packet:parser corked: 0, mqtt-packet:parser sync: true, mqtt-packet:parser bufferProcessing: false, mqtt-packet:parser onwrite: [Function], mqtt-packet:parser writecb: null, mqtt-packet:parser writelen: 0, mqtt-packet:parser bufferedRequest: null, mqtt-packet:parser lastBufferedRequest: null, mqtt-packet:parser pendingcb: 0, mqtt-packet:parser prefinished: false, mqtt-packet:parser errorEmitted: false, mqtt-packet:parser emitClose: true, mqtt-packet:parser autoDestroy: false, mqtt-packet:parser bufferedRequestCount: 0, mqtt-packet:parser corkedRequestsFree: mqtt-packet:parser CorkedRequest { next: null, entry: null, finish: [Function] } }, mqtt-packet:parser writable: true, mqtt-packet:parser allowHalfOpen: true } +1ms mqtt-packet:parser _parsePublish +11ms mqtt-packet:parser _parseNum: result: 28 +1ms mqtt-packet:parser _parseString: result: tuya/smart_light_bulb/status +2ms mqtt-packet:parser _parsePublish: payload from buffer list: <Buffer 6f 66 66 6c 69 6e 65> +1ms mqtt-packet:parser _parsePayload complete result: true +0ms mqtt-packet:parser parse: state complete. _stateCounter is now: 3 +1ms mqtt-packet:parser parse: packet.length: 37, buffer list length: 37 +1ms mqtt-packet:parser _newPacket +0ms mqtt-packet:parser _newPacket: parser emit packet: packet.cmd: publish, packet.payload: offline, packet.length: 37 +1ms mqttjs:client parser :: on packet push to packets array. +27ms mqtt-packet:parser _newPacket: new packet +1ms mqtt-packet:parser parse: state complete. _stateCounter is now: 4 +1ms mqtt-packet:parser parse: packet.length: -1, buffer list length: 0 +0ms mqtt-packet:parser parse: exited while loop. packet: -1, buffer list length: 0 +1ms mqttjs:client work :: getting next packet in queue +2ms mqttjs:client work :: packet pulled from queue +1ms mqttjs:client _handlePacket :: emitting packetreceive +0ms mqttjs:client _handlePublish: packet Packet { cmd: 'publish', retain: false, qos: 0, dup: false, length: 37, topic: 'tuya/smart_light_bulb/status', payload: <Buffer 6f 66 66 6c 69 6e 65> } +3ms mqttjs:client _handlePublish: qos 0 +2ms tuya-mqtt:info Home Assistant state topic tuya/smart_light_bulb/status received message: offline +2s mqttjs:client writable stream :: parsing buffer +303ms mqtt-packet:parser parse: current state: _parseHeader +309ms mqtt-packet:parser _parseHeader: packet: Packet { cmd: 'publish', retain: false, qos: 0, dup: false, length: -1, topic: null, payload: null } +1ms mqtt-packet:parser parse: state complete. _stateCounter is now: 1 +1ms mqtt-packet:parser parse: packet.length: -1, buffer list length: 38 +0ms mqtt-packet:parser _parseVarByteNum +0ms mqtt-packet:parser _parseVarByteNum: result: { bytes: 1, value: 37 } +0ms mqtt-packet:parser _parseLength 37 +1ms mqtt-packet:parser parse: state complete. _stateCounter is now: 2 +0ms mqtt-packet:parser parse: packet.length: 37, buffer list length: 37 +1ms mqtt-packet:parser _parsePayload: payload BufferListStream { mqtt-packet:parser _bufs: mqtt-packet:parser [ <Buffer 00 1c 74 75 79 61 2f 73 6d 61 72 74 5f 6c 69 67 68 74 5f 62 75 6c 62 2f 73 74 61 74 75 73 6f 66 66 6c 69 6e 65> ], mqtt-packet:parser length: 37, mqtt-packet:parser _readableState: mqtt-packet:parser ReadableState { mqtt-packet:parser objectMode: false, mqtt-packet:parser highWaterMark: 16384, mqtt-packet:parser buffer: BufferList { head: null, tail: null, length: 0 }, mqtt-packet:parser length: 0, mqtt-packet:parser pipes: null, mqtt-packet:parser pipesCount: 0, mqtt-packet:parser flowing: null, mqtt-packet:parser ended: false, mqtt-packet:parser endEmitted: false, mqtt-packet:parser reading: false, mqtt-packet:parser sync: true, mqtt-packet:parser needReadable: false, mqtt-packet:parser emittedReadable: false, mqtt-packet:parser readableListening: false, mqtt-packet:parser resumeScheduled: false, mqtt-packet:parser paused: true, mqtt-packet:parser emitClose: true, mqtt-packet:parser autoDestroy: false, mqtt-packet:parser destroyed: false, mqtt-packet:parser defaultEncoding: 'utf8', mqtt-packet:parser awaitDrain: 0, mqtt-packet:parser readingMore: false, mqtt-packet:parser decoder: null, mqtt-packet:parser encoding: null }, mqtt-packet:parser readable: true, mqtt-packet:parser _events: [Object: null prototype] {}, mqtt-packet:parser _eventsCount: 0, mqtt-packet:parser _maxListeners: undefined, mqtt-packet:parser _writableState: mqtt-packet:parser WritableState { mqtt-packet:parser objectMode: false, mqtt-packet:parser highWaterMark: 16384, mqtt-packet:parser finalCalled: false, mqtt-packet:parser needDrain: false, mqtt-packet:parser ending: false, mqtt-packet:parser ended: false, mqtt-packet:parser finished: false, mqtt-packet:parser destroyed: false, mqtt-packet:parser decodeStrings: true, mqtt-packet:parser defaultEncoding: 'utf8', mqtt-packet:parser length: 0, mqtt-packet:parser writing: false, mqtt-packet:parser corked: 0, mqtt-packet:parser sync: true, mqtt-packet:parser bufferProcessing: false, mqtt-packet:parser onwrite: [Function], mqtt-packet:parser writecb: null, mqtt-packet:parser writelen: 0, mqtt-packet:parser bufferedRequest: null, mqtt-packet:parser lastBufferedRequest: null, mqtt-packet:parser pendingcb: 0, mqtt-packet:parser prefinished: false, mqtt-packet:parser errorEmitted: false, mqtt-packet:parser emitClose: true, mqtt-packet:parser autoDestroy: false, mqtt-packet:parser bufferedRequestCount: 0, mqtt-packet:parser corkedRequestsFree: mqtt-packet:parser CorkedRequest { next: null, entry: null, finish: [Function] } }, mqtt-packet:parser writable: true, mqtt-packet:parser allowHalfOpen: true } +0ms mqtt-packet:parser _parsePublish +5ms mqtt-packet:parser _parseNum: result: 28 +0ms mqtt-packet:parser _parseString: result: tuya/smart_light_bulb/status +1ms mqtt-packet:parser _parsePublish: payload from buffer list: <Buffer 6f 66 66 6c 69 6e 65> +0ms mqtt-packet:parser _parsePayload complete result: true +1ms mqtt-packet:parser parse: state complete. _stateCounter is now: 3 +0ms mqtt-packet:parser parse: packet.length: 37, buffer list length: 37 +0ms mqtt-packet:parser _newPacket +1ms mqtt-packet:parser _newPacket: parser emit packet: packet.cmd: publish, packet.payload: offline, packet.length: 37 +0ms mqttjs:client parser :: on packet push to packets array. +12ms mqtt-packet:parser _newPacket: new packet +1ms mqtt-packet:parser parse: state complete. _stateCounter is now: 4 +0ms mqtt-packet:parser parse: packet.length: -1, buffer list length: 0 +0ms mqtt-packet:parser parse: exited while loop. packet: -1, buffer list length: 0 +0ms mqttjs:client work :: getting next packet in queue +2ms mqttjs:client work :: packet pulled from queue +0ms mqttjs:client _handlePacket :: emitting packetreceive +0ms mqttjs:client _handlePublish: packet Packet { cmd: 'publish', retain: false, qos: 0, dup: false, length: 37, topic: 'tuya/smart_light_bulb/status', payload: <Buffer 6f 66 66 6c 69 6e 65> } +0ms mqttjs:client _handlePublish: qos 0 +1ms tuya-mqtt:info Home Assistant state topic tuya/smart_light_bulb/status received message: offline +307ms mqttjs:client writable stream :: parsing buffer +673ms mqtt-packet:parser parse: current state: _parseHeader +676ms mqtt-packet:parser _parseHeader: packet: Packet { cmd: 'publish', retain: false, qos: 0, dup: false, length: -1, topic: null, payload: null } +0ms mqtt-packet:parser parse: state complete. _stateCounter is now: 1 +1ms mqtt-packet:parser parse: packet.length: -1, buffer list length: 38 +1ms mqtt-packet:parser _parseVarByteNum +0ms mqtt-packet:parser _parseVarByteNum: result: { bytes: 1, value: 37 } +0ms mqtt-packet:parser _parseLength 37 +1ms mqtt-packet:parser parse: state complete. _stateCounter is now: 2 +0ms mqtt-packet:parser parse: packet.length: 37, buffer list length: 37 +0ms mqtt-packet:parser _parsePayload: payload BufferListStream { mqtt-packet:parser _bufs: mqtt-packet:parser [ <Buffer 00 1c 74 75 79 61 2f 73 6d 61 72 74 5f 6c 69 67 68 74 5f 62 75 6c 62 2f 73 74 61 74 75 73 6f 66 66 6c 69 6e 65> ], mqtt-packet:parser length: 37, mqtt-packet:parser _readableState: mqtt-packet:parser ReadableState { mqtt-packet:parser objectMode: false, mqtt-packet:parser highWaterMark: 16384, mqtt-packet:parser buffer: BufferList { head: null, tail: null, length: 0 }, mqtt-packet:parser length: 0, mqtt-packet:parser pipes: null, mqtt-packet:parser pipesCount: 0, mqtt-packet:parser flowing: null, mqtt-packet:parser ended: false, mqtt-packet:parser endEmitted: false, mqtt-packet:parser reading: false, mqtt-packet:parser sync: true, mqtt-packet:parser needReadable: false, mqtt-packet:parser emittedReadable: false, mqtt-packet:parser readableListening: false, mqtt-packet:parser resumeScheduled: false, mqtt-packet:parser paused: true, mqtt-packet:parser emitClose: true, mqtt-packet:parser autoDestroy: false, mqtt-packet:parser destroyed: false, mqtt-packet:parser defaultEncoding: 'utf8', mqtt-packet:parser awaitDrain: 0, mqtt-packet:parser readingMore: false, mqtt-packet:parser decoder: null, mqtt-packet:parser encoding: null }, mqtt-packet:parser readable: true, mqtt-packet:parser _events: [Object: null prototype] {}, mqtt-packet:parser _eventsCount: 0, mqtt-packet:parser _maxListeners: undefined, mqtt-packet:parser _writableState: mqtt-packet:parser WritableState { mqtt-packet:parser objectMode: false, mqtt-packet:parser highWaterMark: 16384, mqtt-packet:parser finalCalled: false, mqtt-packet:parser needDrain: false, mqtt-packet:parser ending: false, mqtt-packet:parser ended: false, mqtt-packet:parser finished: false, mqtt-packet:parser destroyed: false, mqtt-packet:parser decodeStrings: true, mqtt-packet:parser defaultEncoding: 'utf8', mqtt-packet:parser length: 0, mqtt-packet:parser writing: false, mqtt-packet:parser corked: 0, mqtt-packet:parser sync: true, mqtt-packet:parser bufferProcessing: false, mqtt-packet:parser onwrite: [Function], mqtt-packet:parser writecb: null, mqtt-packet:parser writelen: 0, mqtt-packet:parser bufferedRequest: null, mqtt-packet:parser lastBufferedRequest: null, mqtt-packet:parser pendingcb: 0, mqtt-packet:parser prefinished: false, mqtt-packet:parser errorEmitted: false, mqtt-packet:parser emitClose: true, mqtt-packet:parser autoDestroy: false, mqtt-packet:parser bufferedRequestCount: 0, mqtt-packet:parser corkedRequestsFree: mqtt-packet:parser CorkedRequest { next: null, entry: null, finish: [Function] } }, mqtt-packet:parser writable: true, mqtt-packet:parser allowHalfOpen: true } +1ms mqtt-packet:parser _parsePublish +4ms mqtt-packet:parser _parseNum: result: 28 +1ms mqtt-packet:parser _parseString: result: tuya/smart_light_bulb/status +0ms mqtt-packet:parser _parsePublish: payload from buffer list: <Buffer 6f 66 66 6c 69 6e 65> +0ms mqtt-packet:parser _parsePayload complete result: true +1ms mqtt-packet:parser parse: state complete. _stateCounter is now: 3 +0ms mqtt-packet:parser parse: packet.length: 37, buffer list length: 37 +0ms mqtt-packet:parser _newPacket +1ms mqtt-packet:parser _newPacket: parser emit packet: packet.cmd: publish, packet.payload: offline, packet.length: 37 +0ms mqttjs:client parser :: on packet push to packets array. +12ms mqtt-packet:parser _newPacket: new packet +0ms mqtt-packet:parser parse: state complete. _stateCounter is now: 4 +1ms mqtt-packet:parser parse: packet.length: -1, buffer list length: 0 +0ms mqtt-packet:parser parse: exited while loop. packet: -1, buffer list length: 0 +0ms mqttjs:client work :: getting next packet in queue +1ms mqttjs:client work :: packet pulled from queue +1ms mqttjs:client _handlePacket :: emitting packetreceive +0ms mqttjs:client _handlePublish: packet Packet { cmd: 'publish', retain: false, qos: 0, dup: false, length: 37, topic: 'tuya/smart_light_bulb/status', payload: <Buffer 6f 66 66 6c 69 6e 65> } +0ms mqttjs:client _handlePublish: qos 0 +1ms tuya-mqtt:info Home Assistant state topic tuya/smart_light_bulb/status received message: offline +687ms mqttjs:client writable stream :: parsing buffer +607ms mqtt-packet:parser parse: current state: _parseHeader +610ms mqtt-packet:parser _parseHeader: packet: Packet { cmd: 'publish', retain: false, qos: 0, dup: false, length: -1, topic: null, payload: null } +0ms mqtt-packet:parser parse: state complete. _stateCounter is now: 1 +1ms mqtt-packet:parser parse: packet.length: -1, buffer list length: 38 +0ms mqtt-packet:parser _parseVarByteNum +1ms mqtt-packet:parser _parseVarByteNum: result: { bytes: 1, value: 37 } +0ms mqtt-packet:parser _parseLength 37 +1ms mqtt-packet:parser parse: state complete. _stateCounter is now: 2 +0ms mqtt-packet:parser parse: packet.length: 37, buffer list length: 37 +0ms mqtt-packet:parser _parsePayload: payload BufferListStream { mqtt-packet:parser _bufs: mqtt-packet:parser [ <Buffer 00 1c 74 75 79 61 2f 73 6d 61 72 74 5f 6c 69 67 68 74 5f 62 75 6c 62 2f 73 74 61 74 75 73 6f 66 66 6c 69 6e 65> ], mqtt-packet:parser length: 37, mqtt-packet:parser _readableState: mqtt-packet:parser ReadableState { mqtt-packet:parser objectMode: false, mqtt-packet:parser highWaterMark: 16384, mqtt-packet:parser buffer: BufferList { head: null, tail: null, length: 0 }, mqtt-packet:parser length: 0, mqtt-packet:parser pipes: null, mqtt-packet:parser pipesCount: 0, mqtt-packet:parser flowing: null, mqtt-packet:parser ended: false, mqtt-packet:parser endEmitted: false, mqtt-packet:parser reading: false, mqtt-packet:parser sync: true, mqtt-packet:parser needReadable: false, mqtt-packet:parser emittedReadable: false, mqtt-packet:parser readableListening: false, mqtt-packet:parser resumeScheduled: false, mqtt-packet:parser paused: true, mqtt-packet:parser emitClose: true, mqtt-packet:parser autoDestroy: false, mqtt-packet:parser destroyed: false, mqtt-packet:parser defaultEncoding: 'utf8', mqtt-packet:parser awaitDrain: 0, mqtt-packet:parser readingMore: false, mqtt-packet:parser decoder: null, mqtt-packet:parser encoding: null }, mqtt-packet:parser readable: true, mqtt-packet:parser _events: [Object: null prototype] {}, mqtt-packet:parser _eventsCount: 0, mqtt-packet:parser _maxListeners: undefined, mqtt-packet:parser _writableState: mqtt-packet:parser WritableState { mqtt-packet:parser objectMode: false, mqtt-packet:parser highWaterMark: 16384, mqtt-packet:parser finalCalled: false, mqtt-packet:parser needDrain: false, mqtt-packet:parser ending: false, mqtt-packet:parser ended: false, mqtt-packet:parser finished: false, mqtt-packet:parser destroyed: false, mqtt-packet:parser decodeStrings: true, mqtt-packet:parser defaultEncoding: 'utf8', mqtt-packet:parser length: 0, mqtt-packet:parser writing: false, mqtt-packet:parser corked: 0, mqtt-packet:parser sync: true, mqtt-packet:parser bufferProcessing: false, mqtt-packet:parser onwrite: [Function], mqtt-packet:parser writecb: null, mqtt-packet:parser writelen: 0, mqtt-packet:parser bufferedRequest: null, mqtt-packet:parser lastBufferedRequest: null, mqtt-packet:parser pendingcb: 0, mqtt-packet:parser prefinished: false, mqtt-packet:parser errorEmitted: false, mqtt-packet:parser emitClose: true, mqtt-packet:parser autoDestroy: false, mqtt-packet:parser bufferedRequestCount: 0, mqtt-packet:parser corkedRequestsFree: mqtt-packet:parser CorkedRequest { next: null, entry: null, finish: [Function] } }, mqtt-packet:parser writable: true, mqtt-packet:parser allowHalfOpen: true } +0ms mqtt-packet:parser _parsePublish +5ms mqtt-packet:parser _parseNum: result: 28 +0ms mqtt-packet:parser _parseString: result: tuya/smart_light_bulb/status +1ms mqtt-packet:parser _parsePublish: payload from buffer list: <Buffer 6f 66 66 6c 69 6e 65> +0ms mqtt-packet:parser _parsePayload complete result: true +0ms mqtt-packet:parser parse: state complete. _stateCounter is now: 3 +1ms mqtt-packet:parser parse: packet.length: 37, buffer list length: 37 +0ms mqtt-packet:parser _newPacket +0ms mqtt-packet:parser _newPacket: parser emit packet: packet.cmd: publish, packet.payload: offline, packet.length: 37 +0ms mqttjs:client parser :: on packet push to packets array. +12ms mqtt-packet:parser _newPacket: new packet +1ms mqtt-packet:parser parse: state complete. _stateCounter is now: 4 +0ms mqtt-packet:parser parse: packet.length: -1, buffer list length: 0 +0ms mqtt-packet:parser parse: exited while loop. packet: -1, buffer list length: 0 +1ms mqttjs:client work :: getting next packet in queue +1ms mqttjs:client work :: packet pulled from queue +0ms mqttjs:client _handlePacket :: emitting packetreceive +0ms mqttjs:client _handlePublish: packet Packet { cmd: 'publish', retain: false, qos: 0, dup: false, length: 37, topic: 'tuya/smart_light_bulb/status', payload: <Buffer 6f 66 66 6c 69 6e 65> } +0ms mqttjs:client _handlePublish: qos 0 +1ms tuya-mqtt:info Home Assistant state topic tuya/smart_light_bulb/status received message: offline +622ms ^C tuya-mqtt:info Exit code: SIGINT +592ms mqttjs:client writable stream :: parsing buffer +1s mqtt-packet:parser parse: current state: _parseHeader +1s mqtt-packet:parser _parseHeader: packet: Packet { cmd: 'publish', retain: false, qos: 0, dup: false, length: -1, topic: null, payload: null } +0ms mqtt-packet:parser parse: state complete. _stateCounter is now: 1 +2ms mqtt-packet:parser parse: packet.length: -1, buffer list length: 38 +0ms mqtt-packet:parser _parseVarByteNum +0ms mqtt-packet:parser _parseVarByteNum: result: { bytes: 1, value: 37 } +1ms mqtt-packet:parser _parseLength 37 +0ms mqtt-packet:parser parse: state complete. _stateCounter is now: 2 +1ms mqtt-packet:parser parse: packet.length: 37, buffer list length: 37 +0ms mqtt-packet:parser _parsePayload: payload BufferListStream { mqtt-packet:parser _bufs: mqtt-packet:parser [ <Buffer 00 1c 74 75 79 61 2f 73 6d 61 72 74 5f 6c 69 67 68 74 5f 62 75 6c 62 2f 73 74 61 74 75 73 6f 66 66 6c 69 6e 65> ], mqtt-packet:parser length: 37, mqtt-packet:parser _readableState: mqtt-packet:parser ReadableState { mqtt-packet:parser objectMode: false, mqtt-packet:parser highWaterMark: 16384, mqtt-packet:parser buffer: BufferList { head: null, tail: null, length: 0 }, mqtt-packet:parser length: 0, mqtt-packet:parser pipes: null, mqtt-packet:parser pipesCount: 0, mqtt-packet:parser flowing: null, mqtt-packet:parser ended: false, mqtt-packet:parser endEmitted: false, mqtt-packet:parser reading: false, mqtt-packet:parser sync: true, mqtt-packet:parser needReadable: false, mqtt-packet:parser emittedReadable: false, mqtt-packet:parser readableListening: false, mqtt-packet:parser resumeScheduled: false, mqtt-packet:parser paused: true, mqtt-packet:parser emitClose: true, mqtt-packet:parser autoDestroy: false, mqtt-packet:parser destroyed: false, mqtt-packet:parser defaultEncoding: 'utf8', mqtt-packet:parser awaitDrain: 0, mqtt-packet:parser readingMore: false, mqtt-packet:parser decoder: null, mqtt-packet:parser encoding: null }, mqtt-packet:parser readable: true, mqtt-packet:parser _events: [Object: null prototype] {}, mqtt-packet:parser _eventsCount: 0, mqtt-packet:parser _maxListeners: undefined, mqtt-packet:parser _writableState: mqtt-packet:parser WritableState { mqtt-packet:parser objectMode: false, mqtt-packet:parser highWaterMark: 16384, mqtt-packet:parser finalCalled: false, mqtt-packet:parser needDrain: false, mqtt-packet:parser ending: false, mqtt-packet:parser ended: false, mqtt-packet:parser finished: false, mqtt-packet:parser destroyed: false, mqtt-packet:parser decodeStrings: true, mqtt-packet:parser defaultEncoding: 'utf8', mqtt-packet:parser length: 0, mqtt-packet:parser writing: false, mqtt-packet:parser corked: 0, mqtt-packet:parser sync: true, mqtt-packet:parser bufferProcessing: false, mqtt-packet:parser onwrite: [Function], mqtt-packet:parser writecb: null, mqtt-packet:parser writelen: 0, mqtt-packet:parser bufferedRequest: null, mqtt-packet:parser lastBufferedRequest: null, mqtt-packet:parser pendingcb: 0, mqtt-packet:parser prefinished: false, mqtt-packet:parser errorEmitted: false, mqtt-packet:parser emitClose: true, mqtt-packet:parser autoDestroy: false, mqtt-packet:parser bufferedRequestCount: 0, mqtt-packet:parser corkedRequestsFree: mqtt-packet:parser CorkedRequest { next: null, entry: null, finish: [Function] } }, mqtt-packet:parser writable: true, mqtt-packet:parser allowHalfOpen: true } +0ms mqtt-packet:parser _parsePublish +5ms mqtt-packet:parser _parseNum: result: 28 +0ms mqtt-packet:parser _parseString: result: tuya/smart_light_bulb/status +1ms mqtt-packet:parser _parsePublish: payload from buffer list: <Buffer 6f 66 66 6c 69 6e 65> +0ms mqtt-packet:parser _parsePayload complete result: true +0ms mqtt-packet:parser parse: state complete. _stateCounter is now: 3 +1ms mqtt-packet:parser parse: packet.length: 37, buffer list length: 37 +0ms mqtt-packet:parser _newPacket +0ms mqtt-packet:parser _newPacket: parser emit packet: packet.cmd: publish, packet.payload: offline, packet.length: 37 +1ms mqttjs:client parser :: on packet push to packets array. +13ms mqtt-packet:parser _newPacket: new packet +0ms mqtt-packet:parser parse: state complete. _stateCounter is now: 4 +0ms mqtt-packet:parser parse: packet.length: -1, buffer list length: 0 +1ms mqtt-packet:parser parse: exited while loop. packet: -1, buffer list length: 0 +0ms mqttjs:client work :: getting next packet in queue +1ms mqttjs:client work :: packet pulled from queue +0ms mqttjs:client _handlePacket :: emitting packetreceive +1ms mqttjs:client _handlePublish: packet Packet { cmd: 'publish', retain: false, qos: 0, dup: false, length: 37, topic: 'tuya/smart_light_bulb/status', payload: <Buffer 6f 66 66 6c 69 6e 65> } +0ms mqttjs:client _handlePublish: qos 0 +1ms tuya-mqtt:info Home Assistant state topic tuya/smart_light_bulb/status received message: offline +628ms tuya-mqtt:info Exit code: 0 +374ms

downloadme4free commented 1 year ago

I used to run tuya-mqtt smoothly on Pi4 + openHAB 3, but after reinstall tuya-mqtt cannot work like before. There's no problem while installing, but when I try to run node tuya-mqtt or even sudo node tuya-mqtt the app will not exit, and I must Ctrl-C to quit the app. As I know when I run node tuya-mqtt the app should run once then I will enable tuya-mqtt.service in systemtcl. While app is running I can controls my Tuya things as normal. How can I fix this?

My system is:

tuya-mqtt-error

tsightler commented 1 year ago

Please note, tuya-mqtt is effectively unmaintained for almost 2 years, no one has stepped up to maintain it and I no longer use Tuya devices so I can only try to help based on what I remember.

I don't really understand why you think something is wrong. You state "While app is running I can controls my Tuya things as normal.", so that sounds good to me. The tuya-mqtt app produces no output by default so, unless you set debug, when you run the script from the CLI it will just sit there until you cancel it, that's just normal. If it is working from the CLI then you just need to setup tuya-mqtt.service to start the app as a service and that's it.

downloadme4free commented 1 year ago

Hi tsightler, thanks for your quick reply! When I run sudo systemctl enable tuya-mqtt openhabian shows Failed to enable unit: Unit file tuya-mqtt.service does not exist., I think it means the system doesn't find tuya-mqtt in running services When I run node tuya-mqtt.js, meanwhile I can control 3 Tuya things (2 sockets and a Smart bulb), but when I press Ctrl-C to terminate tuya-mqtt I can't control them anymore. As my knowledge, I can run node tuya-mqtt.js one time, then it will stay in the system memory as tuya-mqtt.service and quit the main app then return to the CLI, but I'm stuck because after run node tuya-mqtt.js it like infinity loop. Sorry if my English can't clear my thought tuya-mqtt-error 2 tuya-mqtt-error 3 tuya-mqtt-error 4

downloadme4free commented 1 year ago

@tsightler: I have my issue fixed! Firstly, my issue is about I cannot set tuya-mqtt running as a system service, not about tuya-mqtt not working. I should open a new thread instead of posting it here, sorry!

I fix it by creating tuya-mqtt.service file in /etc/systemd/system: `[Unit] Description=TheAgentK Tuya MQTT

[Service] ExecStart=node /opt/tuya-mqtt/tuya-mqtt.js Restart=always User=openhabian Group=openhabian WorkingDirectory=/opt/tuya-mqtt

[Install]` then run: sudo systemctl start tuya-mqtt sudo systemctl enable tuya-mqtt

Now tuya-mqtt is working as expected. Thank you!