Release 2.5.0 ManagerDiscovery

Kan iemand mij uitleggen wat dit precies toevoegt aan Homey, het is mij niet helemaal duidelijk?

2 Likes

Het is een uniforme manier voor app ontwikkelaars om apparaten in het netwerk van de gebruiker te kunnen vinden, mits die apparaten gebruik maken van één van de ondersteunde protocollen (mDNS, SSDP of zoeken naar een MAC-range).

Daar staat tegenover dat Homey apps vaak gebruik maken van onderliggende Node.js modules die de specifieke discovery voor de ondersteunde apparaten zelf al implementeren.

Maar kennelijk was er een grote behoefte om hier een uniforme interface voor te maken.

Een voordeel kan zijn dat, mits geïntegreerd door de app ontwikkelaar, je een IP adres van een apparaat niet meer hoeft in te vullen in de instellingen van de app. Dit omdat het apparaat direct gevonden kan worden en je deze eventueel kan selecteren uit een keuze lijstje.

Voor apps waarvan de ontwikkelaar auto discovery te lastig vond zou het inderdaad een uitkomst kunnen zijn. Daar staat tegenover dat auto discovery niet altijd even goed werkt omdat het gebruik kan maken van netwerkprotocollen die afhankelijk zijn van correcte WiFi-/routerinstellingen

Bedankt voor jullie antwoorden dat maakt het een en ander meer helder.

Een nadeel van deze methode is dat alleen apparaten op het lokale netwerk worden gevonden. In dezelfde IP reeks. Zodra er een router tussen zit heb je meer aan het invoeren van een ip adres.

Alleen als dit aangevuld wordt met DNS-SD standaard zijn ook devices van remote netwerken mogelijk met mDNS.

Voor de meesten van ons zal het geen probleem zijn, maar voor diegene die aan netwerksegmentering doen of bv een garage op afstand hebben over internet, die kan dan bij gebruik van deze protocollen geen sensoren in de garage ophangen.

Ik vind het sowieso een beetje een oplossing voor een niet-bestaand probleem :roll_eyes:In de documentatie stond vorige week nog dat apps waarbij gebruikers een IP-adres moeten invoeren maar waar ook auto discovery mogelijk is “ergens in de toekomst” niet meer toegelaten zouden worden tot de app store, maar dat kan ik inmiddels niet meer terugvinden.

@M_a_r_c_o is dat niet met alle automatische detectie manieren? dat deze alleen op lokaal netwerk zoeken, vind dit nogal een erg ver gezochte reden om maar iets negatiefs erover te vinden.
Het is gewoon een optie die Athom aanbied… is niet iets waar je je aan Moet houden.

@robertklep
dit was in de mail die rond is gestuurd

Note: sometime in the future, apps that require the user to input an IP address manually when there is a discovery mechanism available, won’t be allowed in the Homey App Store.

ergens in de toekomst, dit kan ook pas over 10 jaar zijn natuurlijk.

Maar je mag gerust ergens anders over zeiken aangezien Athom het in jouw ogen het niet goed kan doen, het is gewoon een optie die ze aanbieden om het gemakkelijker te maken voor developers.
Dat was zowiezo al de hele reden om de SDK v2 te schrijven, om dit soort dingen te kunnen aanbieden, is dat dan ook nutteloos geweest? (laat maar, ik weet je antwoord al)

Ondertussen wachten we verder op betere debugging faciliteiten, de mogelijkheid om duidelijkere tracebacks te krijgen in geval van exceptions, de mogelijkheid om apps tijdens ontwikkeling incrementeel te uploaden naar Homey om het ontwikkelproces sneller te maken, up-to-date TypeScript definities, meer Zigbee/Z-Wave functionaliteit, om zomaar wat dingen te noemen die Homey echt een fatsoenlijke ontwikkelomgeving geven.

Maar kennelijk was device discovery een dusdanig groot probleem voor ontwikkelaars dat dat de prioriteit heeft gekregen.

2 Likes

Nee, niet met alle, maar wel met de hier gebruikte methodes. Dus als alle ondersteund worden, dan is het niet negatief. Maar ** niet alle, maar een paar ** dat is niet positief en niet positief is negatief.

Remote discovery vereist bv het kunnen invoeren van IP reeksen en niet zoeken op basis van broadcast methodes. Dat is een hel in netwerkland, niet onmogelijk, maar dan heb je bepaalde type professionele switches of routers nodig om die requests remote te krijgen.

Maar zoals ook in eerste bericht, als de mDNS implementatie ook DNS-SD ondersteund, dan is een deel van het remote zoeken op gelost. Nog wel een eigen DNS dienst nodig om het te kunnen gebruiken, maar ik heb de RFC van DNS-SD niet doorgelezen, dus mogelijk is een internet cloud DNS service ook bruikbaar.

Ik heb eigenlijk aangenomen dat ManagerDiscovery ook als API ter beschikking staat. Klopt dat, ik kan hem namelijk niet in de API documentatie vinden. Ik heb het nodig voor een paar ESP8266 chips met mDNS waarvoor ik een Homey driver wil schrijven

Chris

https://developer.athom.com/docs/apps/tutorial-Drivers-Discovery.html

Hi Robert,

thanks for the link, spend at least an hour looking for it myself

Chris

I have tried to get MAC discovery to work, but for some reason it does not work on my network. The code which I am using is

driver.js

 async onPairListDevices(data, callback) {
    const discoveryStrategy = this.getDiscoveryStrategy();
    const discoveryResults = discoveryStrategy.getDiscoveryResults();
    console.log("found " + Object.keys(discoveryResults).length + " devices");
    console.log(discoveryResults);
    const devices = Object.values(discoveryResults).map(discoveryResult => {
      return {
        name: discoveryResult.txt.name,
        data: {
          id: discoveryResult.id,
          ip: discoveryResult.address
        }
      };
    });

    callback(null, devices);
  }

app.json

  "discovery": {
    "esp8266_mac": {
      "type": "mac",
      "mac": {
        "manufacturer": [
           [ 24, 254, 52 ],
           [ 24, 254, 53 ],
           [ 80, 2, 145],
           [ 132, 243, 235]
       ]
      }
    }
  },

....

  "drivers": [
{
  "id": "valve-controller",
  "discovery": "esp8266_mac",
  "name": {
    "en": "Valve Controller",
    "nl": "Klepbesturing"
  },

This does not return any devices. I used decimal numbers and the MAC address parts are the ones shown for the various ESP8266 chip on the Huawei router.

I have tested the code above and debugging shows that the devices array is empty. Frabkly I have no idea why this does not work.

Can someone help me with the following

  • is this code OK?
  • are there any reasons that MAC discovery would not work with all devices on the same subnet (192.168.1.xxx)?
  • is there a way to exclude external errors?
  • any other ideas how to solve this

thanks in advance for any ideas how to solve this

(nu in NL)

TL;DR: je kunt geen MAC discovery gebruiken voor ESP8266 devices in je netwerk.

Homey gebruikt broadcast pings (ping 192.168.1.255) om apparaten op het lokale netwerk te vinden, maar dat is geen methode die gegarandeerd werkt want niet alle apparaten reageren daar op. Apparaten in mijn netwerk die er niet op reageren: Synology NAS, Sony Bravia TV, Android STB, router en de ESP8266 apparaten die ik draai.

Athom weet van het probleem (bestaat al sinds dat discovery geïntroduceerd is) maar ik krijg niet het idee dat ze het belangrijk vinden te fixen (alhoewel ik geen firmware v5 draai dus wie weet).

Oh, bedankt voor de informatie, ik heb inderdaad al eens vastgesteld dat pings niet werken bij de ESP8266 dus dat verklaart het dan. Wel een beetje jammer dat Athom dat er niet bij vermeldt.

Gewone pings werken bij mij wel op ESP8266, alleen broadcast pings niet.

Inderdaad. Ik heb in de SDK repo een issue aangemaakt hierover.

Beste Caseda,

ik heb net twee dagen geprobeerd discovery werkend te krijgen (met MAC) en dat blijkt nu niet te werken doordat de methode die Homey gebruikt niet bij alle devices werkt. Dat stond niet in de sowieso summiere documentatie. Als je discovery aanbiedt (wat op zich een goed idee is) moet je zorgen dat het ook echt betrouwbaar werkt, anders kun je het beter laten.