Discovery works only on first atempt?

Already asked on Slack but didn’t get much help - I’m trying to extend existing TP/LINK Kasa app with HS300 multi-socket power strip and have problems with discovery phase (it’s using discovery methods from tplink-smarthome-api ). It works only when running first discovery, when I cancel it and start again, it founds nothing, until I restart app. While discovering HS110 (single socket), I can repeat discovery and always getting consistent results. Bear with me, I started few weeks ago and everything is new for me but…anyone any clues ? Is it maybe issue with tplink-smarthome-api library ? Tried some workarounds, like ensuring arrays are reset each time, stopdiscovery, closing pair sessions etc . - no change, only app restart helps.

Maybe I’m missing something very trivial ? Thank you

Discovery works only 1st time - driver.js portion of code

         // discover function
        session.setHandler("discover", async (data) => {

            let discoveredDevicesArray = []; // Initialize an array to store discovered devices

            var discoveryOptions = {
                deviceTypes: 'plug',
                discoveryInterval: 1500,
                discoveryTimeout: 3000,
                breakoutChildren: true,
            }
            this.log('Starting Plug Discovery');
            client.startDiscovery(discoveryOptions);
            
            client.on('plug-new', async (plug) => {
                logEvent('Found plug-new type', plug);
                const sysInfo = await plug.getSysInfo();

                if (plug.model.match(myRegEx) && !devIds.hasOwnProperty(plug.deviceId) && !devIds.hasOwnProperty(plug.childId)) {  
                                        
                    if (sysInfo.children) {
                        const childrenMap = plug.children; // Get the map of children
                        childrenMap.forEach((child, childId) => {
                            const childName = child.alias || `Socket${childId}`;

                            if (!discoveredDevicesArray.some(device => device.childId === childId)) {
                                this.log("New Sub-socket found: " + childName + " in " + plug.host + " id " + childId);
                                discoveredDevicesArray.push({
                                    ip: plug.host,
                                    name: childName,
                                    deviceId: plug.deviceId,
                                    childId: childId
                                });
                            }
                        });
                    }
                }
            });

Discovery works consistently :

// discover function
        session.setHandler("discover", async (data) => {

            let discoveredDevicesArray = []; // Initialize an array to store discovered devices

            var discoveryOptions = {
                deviceTypes: 'plug',
                discoveryInterval: 1500,
                discoveryTimeout: 2000
            }
            client.startDiscovery(discoveryOptions);
            this.log('Starting Plug Discovery');
            client.on('plug-new', async (plug) => {
                logEvent('Found plug-new type', plug);
                const sysInfo = await plug.getSysInfo();
                const deviceName = sysInfo.dev_name || sysInfo.alias || sysInfo.model; //Fallback as per sysinfo available data

                if (plug.model.match(myRegEx) && !devIds.hasOwnProperty(plug.deviceId)) {
                    if (!discoveredDevicesArray.some(device => device.deviceId === plug.deviceId)) {
                        this.log("New Plug found: " + plug.host + " model " + plug.model + " name " + plug.name + " id " + plug.deviceId);
                        discoveredDevicesArray.push({
                            ip: plug.host,
                            name: deviceName,
                            deviceId: plug.deviceId // Store the device ID
                        });
                    }
                }
            });

Maybe some additional insights - as I don’t have HS300 device myself, I’m using tplink-smarthome-simulator (but this behavior is also confirmed by users having HS300) but the advantage is, that I see the logs - while first time it’s clearly visible discovery process, 2nd time it is not reaching the device at all.

Eg. during first discovery I see :

 tplink-simulator:device:tcp [hs300] TCP DATA 10.0.0.7 51104 +0ms
  tplink-simulator:device:tcp {"system":{"get_sysinfo":{}},"context":{"child_ids":["0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F700"]}} +1ms
  tplink-simulator:DEBUG set currentContext null +116ms
  tplink-simulator:DEBUG context.child_ids [ '0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F700' ] +3ms
  tplink-simulator:DEBUG set currentContext [] +0ms
  tplink-simulator:DEBUG get currentContext [] +0ms
  tplink-simulator:DEBUG get currentContext [
  {
    sysinfo: {
      id: '0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F700',
      state: 0,
      alias: 'Mock One',
      on_time: 0,
      next_action: [Object]
    },
    emeter: {
      realtime: [Object],
      daystat: [Object],
      get_vgain_igain: [Object]
    },
    schedule: { next_action: [Object], rules: [Object], daystat: [Object] },
    anti_theft: { rules: [Object] },
    count_down: { rules: [Object] }
  }
] +1ms
  tplink-simulator:device:tcp [hs300] TCP DATA 10.0.0.7 51114 +5ms
  tplink-simulator:device:tcp {"system":{"get_sysinfo":{}},"context":{"child_ids":["0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F701"]}} +0ms
  tplink-simulator:DEBUG set currentContext null +1ms
  tplink-simulator:DEBUG context.child_ids [ '0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F701' ] +1ms
  tplink-simulator:DEBUG set currentContext [] +0ms
  tplink-simulator:DEBUG get currentContext [] +0ms
  tplink-simulator:DEBUG get currentContext [
  {
    sysinfo: {
      id: '0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F701',
      state: 0,
      alias: 'Mock Two',
      on_time: 0,
      next_action: [Object]
    },
    emeter: {
      realtime: [Object],
      daystat: [Object],
      get_vgain_igain: [Object]
    },
    schedule: { next_action: [Object], rules: [Object], daystat: [Object] },
    anti_theft: { rules: [Object] },
    count_down: { rules: [Object] }
  }
] +0ms
  tplink-simulator:device:tcp [hs300] TCP DATA 10.0.0.7 51122 +3ms
  tplink-simulator:device:tcp {"system":{"get_sysinfo":{}},"context":{"child_ids":["0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F702"]}} +0ms
  tplink-simulator:DEBUG set currentContext null +2ms
  tplink-simulator:DEBUG context.child_ids [ '0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F702' ] +0ms
  tplink-simulator:DEBUG set currentContext [] +0ms
  tplink-simulator:DEBUG get currentContext [] +1ms
  tplink-simulator:DEBUG get currentContext [
  {
    sysinfo: {
      id: '0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F702',
      state: 0,
      alias: 'Mock Three',
      on_time: 0,
      next_action: [Object]
    },
    emeter: {
      realtime: [Object],
      daystat: [Object],
      get_vgain_igain: [Object]
    },
    schedule: { next_action: [Object], rules: [Object], daystat: [Object] },
    anti_theft: { rules: [Object] },
    count_down: { rules: [Object] }
  }
] +0ms
  tplink-simulator:device:tcp [hs300] TCP DATA 10.0.0.7 51138 +2ms
  tplink-simulator:device:tcp {"system":{"get_sysinfo":{}},"context":{"child_ids":["0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F703"]}} +0ms
  tplink-simulator:DEBUG set currentContext null +1ms
  tplink-simulator:DEBUG context.child_ids [ '0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F703' ] +0ms
  tplink-simulator:DEBUG set currentContext [] +1ms
  tplink-simulator:DEBUG get currentContext [] +0ms
  tplink-simulator:DEBUG get currentContext [
  {
    sysinfo: {
      id: '0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F703',
      state: 0,
      alias: 'Mock Four',
      on_time: 0,
      next_action: [Object]
    },
    emeter: {
      realtime: [Object],
      daystat: [Object],
      get_vgain_igain: [Object]
    },
    schedule: { next_action: [Object], rules: [Object], daystat: [Object] },
    anti_theft: { rules: [Object] },
    count_down: { rules: [Object] }
  }
] +0ms
  tplink-simulator:device:tcp [hs300] TCP DATA 10.0.0.7 51154 +2ms
  tplink-simulator:device:tcp {"system":{"get_sysinfo":{}},"context":{"child_ids":["0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F704"]}} +0ms
  tplink-simulator:DEBUG set currentContext null +2ms
  tplink-simulator:DEBUG context.child_ids [ '0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F704' ] +0ms
  tplink-simulator:DEBUG set currentContext [] +0ms
  tplink-simulator:DEBUG get currentContext [] +0ms
  tplink-simulator:DEBUG get currentContext [
  {
    sysinfo: {
      id: '0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F704',
      state: 0,
      alias: 'Mock Five',
      on_time: 0,
      next_action: [Object]
    },
    emeter: {
      realtime: [Object],
      daystat: [Object],
      get_vgain_igain: [Object]
    },
    schedule: { next_action: [Object], rules: [Object], daystat: [Object] },
    anti_theft: { rules: [Object] },
    count_down: { rules: [Object] }
  }

When running it 2nd time :

tplink-simulator:device:udp [hs300] UDP responding, delay:100, 59770 10.0.0.7 +102ms
  tplink-simulator:device:udp {"system":{"get_sysinfo":{"sw_ver":"1.0.6 Build 180627 Rel.081000","hw_ver":"1.0","model":"HS300(US)","rssi":-68,"mic_type":"IOT.SMARTPLUGSWITCH","feature":"TIM:ENE","updating":0,"led_off":0,"child_num":6,"children":[{"id":"00","state":0,"alias":"Mock One","on_time":0,"next_action":{"type":-1}},{"id":"01","state":0,"alias":"Mock Two","on_time":0,"next_action":{"type":-1}},{"id":"02","state":0,"alias":"Mock Three","on_time":0,"next_action":{"type":-1}},{"id":"03","state":0,"alias":"Mock Four","on_time":0,"next_action":{"type":-1}},{"id":"04","state":0,"alias":"Mock Five","on_time":0,"next_action":{"type":-1}},{"id":"05","state":0,"alias":"Mock Six","on_time":0,"next_action":{"type":-1}}],"alias":"Mock hs300","deviceId":"0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F7","hwId":"E547FC15A580503DA5EC64C15B8EB7BE","oemId":"A2B2C91E91D73DFB70DD87C4BE706103","latitude":"48.3286","latitude_i":483286,"longitude":"36.3433","longitude_i":363433,"mac":"50:c7:bf:fb:db:b4","err_code":0}}} +1ms
  tplink-simulator:device:udp [hs300] UDP responding, delay:100, 59770 10.0.0.7 +2ms
  tplink-simulator:device:udp {"system":{"get_sysinfo":{"sw_ver":"1.0.6 Build 180627 Rel.081000","hw_ver":"1.0","model":"HS300(US)","rssi":-68,"mic_type":"IOT.SMARTPLUGSWITCH","feature":"TIM:ENE","updating":0,"led_off":0,"child_num":6,"children":[{"id":"00","state":0,"alias":"Mock One","on_time":0,"next_action":{"type":-1}},{"id":"01","state":0,"alias":"Mock Two","on_time":0,"next_action":{"type":-1}},{"id":"02","state":0,"alias":"Mock Three","on_time":0,"next_action":{"type":-1}},{"id":"03","state":0,"alias":"Mock Four","on_time":0,"next_action":{"type":-1}},{"id":"04","state":0,"alias":"Mock Five","on_time":0,"next_action":{"type":-1}},{"id":"05","state":0,"alias":"Mock Six","on_time":0,"next_action":{"type":-1}}],"alias":"Mock hs300","deviceId":"0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F7","hwId":"E547FC15A580503DA5EC64C15B8EB7BE","oemId":"A2B2C91E91D73DFB70DD87C4BE706103","latitude":"48.3286","latitude_i":483286,"longitude":"36.3433","longitude_i":363433,"mac":"50:c7:bf:fb:db:b4","err_code":0}}} +0ms
tplink-simulator:device:tcp [hs300] TCP responding, delay:100, { address: '10.0.0.6', family: 'IPv4', port: 9999 } +94ms
  tplink-simulator:device:tcp {"system":{"get_sysinfo":{"sw_ver":"1.0.6 Build 180627 Rel.081000","hw_ver":"1.0","model":"HS300(US)","rssi":-68,"mic_type":"IOT.SMARTPLUGSWITCH","feature":"TIM:ENE","updating":0,"led_off":0,"child_num":6,"children":[{"id":"0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F700","state":0,"alias":"Mock One","on_time":0,"next_action":{"type":-1}},{"id":"0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F701","state":0,"alias":"Mock Two","on_time":0,"next_action":{"type":-1}},{"id":"0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F702","state":0,"alias":"Mock Three","on_time":0,"next_action":{"type":-1}},{"id":"0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F703","state":0,"alias":"Mock Four","on_time":0,"next_action":{"type":-1}},{"id":"0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F704","state":0,"alias":"Mock Five","on_time":0,"next_action":{"type":-1}},{"id":"0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F705","state":0,"alias":"Mock Six","on_time":0,"next_action":{"type":-1}}],"alias":"Mock hs300","deviceId":"0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F7","hwId":"E547FC15A580503DA5EC64C15B8EB7BE","oemId":"A2B2C91E91D73DFB70DD87C4BE706103","latitude":"48.3286","latitude_i":483286,"longitude":"36.3433","longitude_i":363433,"mac":"50:c7:bf:fb:db:b4","err_code":0}}} +1ms
  tplink-simulator:device:tcp [hs300] TCP responding, delay:100, { address: '10.0.0.6', family: 'IPv4', port: 9999 } +3ms
  tplink-simulator:device:tcp {"system":{"get_sysinfo":{"sw_ver":"1.0.6 Build 180627 Rel.081000","hw_ver":"1.0","model":"HS300(US)","rssi":-68,"mic_type":"IOT.SMARTPLUGSWITCH","feature":"TIM:ENE","updating":0,"led_off":0,"child_num":6,"children":[{"id":"0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F700","state":0,"alias":"Mock One","on_time":0,"next_action":{"type":-1}},{"id":"0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F701","state":0,"alias":"Mock Two","on_time":0,"next_action":{"type":-1}},{"id":"0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F702","state":0,"alias":"Mock Three","on_time":0,"next_action":{"type":-1}},{"id":"0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F703","state":0,"alias":"Mock Four","on_time":0,"next_action":{"type":-1}},{"id":"0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F704","state":0,"alias":"Mock Five","on_time":0,"next_action":{"type":-1}},{"id":"0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F705","state":0,"alias":"Mock Six","on_time":0,"next_action":{"type":-1}}],"alias":"Mock hs300","deviceId":"0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F7","hwId":"E547FC15A580503DA5EC64C15B8EB7BE","oemId":"A2B2C91E91D73DFB70DD87C4BE706103","latitude":"48.3286","latitude_i":483286,"longitude":"36.3433","longitude_i":363433,"mac":"50:c7:bf:fb:db:b4","err_code":0}}} +2ms
  tplink-simulator:device:tcp [hs300] TCP responding, delay:100, { address: '10.0.0.6', family: 'IPv4', port: 9999 } +2ms
  tplink-simulator:device:tcp {"system":{"get_sysinfo":{"sw_ver":"1.0.6 Build 180627 Rel.081000","hw_ver":"1.0","model":"HS300(US)","rssi":-68,"mic_type":"IOT.SMARTPLUGSWITCH","feature":"TIM:ENE","updating":0,"led_off":0,"child_num":6,"children":[{"id":"0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F700","state":0,"alias":"Mock One","on_time":0,"next_action":{"type":-1}},{"id":"0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F701","state":0,"alias":"Mock Two","on_time":0,"next_action":{"type":-1}},{"id":"0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F702","state":0,"alias":"Mock Three","on_time":0,"next_action":{"type":-1}},{"id":"0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F703","state":0,"alias":"Mock Four","on_time":0,"next_action":{"type":-1}},{"id":"0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F704","state":0,"alias":"Mock Five","on_time":0,"next_action":{"type":-1}},{"id":"0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F705","state":0,"alias":"Mock Six","on_time":0,"next_action":{"type":-1}}],"alias":"Mock hs300","deviceId":"0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F7","hwId":"E547FC15A580503DA5EC64C15B8EB7BE","oemId":"A2B2C91E91D73DFB70DD87C4BE706103","latitude":"48.3286","latitude_i":483286,"longitude":"36.3433","longitude_i":363433,"mac":"50:c7:bf:fb:db:b4","err_code":0}}} +0ms
  tplink-simulator:device:tcp [hs300] TCP responding, delay:100, { address: '10.0.0.6', family: 'IPv4', port: 9999 } +1ms
  tplink-simulator:device:tcp {"system":{"get_sysinfo":{"sw_ver":"1.0.6 Build 180627 Rel.081000","hw_ver":"1.0","model":"HS300(US)","rssi":-68,"mic_type":"IOT.SMARTPLUGSWITCH","feature":"TIM:ENE","updating":0,"led_off":0,"child_num":6,"children":[{"id":"0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F700","state":0,"alias":"Mock One","on_time":0,"next_action":{"type":-1}},{"id":"0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F701","state":0,"alias":"Mock Two","on_time":0,"next_action":{"type":-1}},{"id":"0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F702","state":0,"alias":"Mock Three","on_time":0,"next_action":{"type":-1}},{"id":"0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F703","state":0,"alias":"Mock Four","on_time":0,"next_action":{"type":-1}},{"id":"0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F704","state":0,"alias":"Mock Five","on_time":0,"next_action":{"type":-1}},{"id":"0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F705","state":0,"alias":"Mock Six","on_time":0,"next_action":{"type":-1}}],"alias":"Mock hs300","deviceId":"0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F7","hwId":"E547FC15A580503DA5EC64C15B8EB7BE","oemId":"A2B2C91E91D73DFB70DD87C4BE706103","latitude":"48.3286","latitude_i":483286,"longitude":"36.3433","longitude_i":363433,"mac":"50:c7:bf:fb:db:b4","err_code":0}}} +1ms
  tplink-simulator:device:tcp [hs300] TCP responding, delay:100, { address: '10.0.0.6', family: 'IPv4', port: 9999 } +1ms
  tplink-simulator:device:tcp {"system":{"get_sysinfo":{"sw_ver":"1.0.6 Build 180627 Rel.081000","hw_ver":"1.0","model":"HS300(US)","rssi":-68,"mic_type":"IOT.SMARTPLUGSWITCH","feature":"TIM:ENE","updating":0,"led_off":0,"child_num":6,"children":[{"id":"0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F700","state":0,"alias":"Mock One","on_time":0,"next_action":{"type":-1}},{"id":"0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F701","state":0,"alias":"Mock Two","on_time":0,"next_action":{"type":-1}},{"id":"0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F702","state":0,"alias":"Mock Three","on_time":0,"next_action":{"type":-1}},{"id":"0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F703","state":0,"alias":"Mock Four","on_time":0,"next_action":{"type":-1}},{"id":"0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F704","state":0,"alias":"Mock Five","on_time":0,"next_action":{"type":-1}},{"id":"0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F705","state":0,"alias":"Mock Six","on_time":0,"next_action":{"type":-1}}],"alias":"Mock hs300","deviceId":"0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F7","hwId":"E547FC15A580503DA5EC64C15B8EB7BE","oemId":"A2B2C91E91D73DFB70DD87C4BE706103","latitude":"48.3286","latitude_i":483286,"longitude":"36.3433","longitude_i":363433,"mac":"50:c7:bf:fb:db:b4","err_code":0}}} +0ms
  tplink-simulator:device:tcp [hs300] TCP responding, delay:100, { address: '10.0.0.6', family: 'IPv4', port: 9999 } +2ms
  tplink-simulator:device:tcp {"system":{"get_sysinfo":{"sw_ver":"1.0.6 Build 180627 Rel.081000","hw_ver":"1.0","model":"HS300(US)","rssi":-68,"mic_type":"IOT.SMARTPLUGSWITCH","feature":"TIM:ENE","updating":0,"led_off":0,"child_num":6,"children":[{"id":"0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F700","state":0,"alias":"Mock One","on_time":0,"next_action":{"type":-1}},{"id":"0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F701","state":0,"alias":"Mock Two","on_time":0,"next_action":{"type":-1}},{"id":"0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F702","state":0,"alias":"Mock Three","on_time":0,"next_action":{"type":-1}},{"id":"0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F703","state":0,"alias":"Mock Four","on_time":0,"next_action":{"type":-1}},{"id":"0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F704","state":0,"alias":"Mock Five","on_time":0,"next_action":{"type":-1}},{"id":"0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F705","state":0,"alias":"Mock Six","on_time":0,"next_action":{"type":-1}}],"alias":"Mock hs300","deviceId":"0FC3850FBB8E766D7DEC9E1DCF70A0236C8C75F7","hwId":"E547FC15A580503DA5EC64C15B8EB7BE","oemId":"A2B2C91E91D73DFB70DD87C4BE706103","latitude":"48.3286","latitude_i":483286,"longitude":"36.3433","longitude_i":363433,"mac":"50:c7:bf:fb:db:b4","err_code":0}}} +0ms

Note the difference of TCP 1st and UDP only 2nd, for me it seems to be problem with API tplink-smarthome-api, what do you think ?

Interesting also the 2nd attempt returns “Mock Three” only on repeating attempts … ? :thinking:

So problem, despite of having logging in the plug-new, that was never triggered 2nd time, was after all in the follow up function checking plugs online… :man_facepalming: :man_facepalming: :man_facepalming:

Working only 1st time

client.on('plug-online', (plug,) => {
                if (plug.model.match(myRegEx) && !devIds.hasOwnProperty(plug.deviceId) && !devIds.hasOwnProperty(plug.childId)) {

                    if (!discoveredDevicesArray.some(device => device.childId === childId)) {
                        this.log("New Socket found online: " + childName + " in " + plug.host + " id " + childId);
                        discoveredDevicesArray.push({
                            ip: plug.host,
                            name: childName,
                            deviceId: plug.deviceId,
                            childId: childId
                        });
                    }
                }
            });

Working everytime

            client.on('plug-online', (plug) => {
                logEvent('Found plug-online type', plug);
                
                if (plug.model.match(myRegEx) && !devIds.hasOwnProperty(plug.deviceId)) {
                    let deviceName = plug.alias || `Device ${plug.deviceId}`;
                    let childId = plug.childId || null; // null for non-child devices
            
                    if (!discoveredDevicesArray.some(device => device.deviceId === plug.deviceId && device.childId === childId)) {
                        this.log(`New Socket found online: ${deviceName} in ${plug.host} with Device ID: ${plug.deviceId} and Child ID: ${childId}`);
                        discoveredDevicesArray.push({
                            ip: plug.host,
                            name: deviceName,
                            deviceId: plug.deviceId,
                            childId: childId
                        });
                    }
                }
            });

What helped me - enabling debug code for the tplink-smarthome-api, which complained about :

[Mock One] plug.emitEvents() inUse: false relayState: false lastState: {"inUse":false,"relayState":false}
client.startDiscovery(): Error processing response: ReferenceError: childName is not defined
    at Client.<anonymous> (/app/drivers/hs300/driver.js:107:64)
    at Client.emit (node:events:529:35)
    at Client.emit (/app/node_modules/tplink-smarthome-api/lib/client.js:158:27)
    at process (/app/node_modules/tplink-smarthome-api/lib/client.js:414:22)
    at /app/node_modules/tplink-smarthome-api/lib/client.js:435:17
    at Array.forEach (<anonymous>)
    at Client.createOrUpdateDeviceFromSysInfo (/app/node_modules/tplink-smarthome-api/lib/client.js:433:30)
    at Socket.<anonymous> (/app/node_modules/tplink-smarthome-api/lib/client.js:342:26)
    at Socket.emit (node:events:517:28)
    at UDP.onMessage [as onmessage] (node:dgram:942:8)