Stap 2: Instellen van de repo
Tessel van modules alle hebben dezelfde fundamentele map. U kunt een sjabloon voor Tessel modules in het algemeen zien op onze stijlgids hier. U zou kunnen willen controleren de PIR-repo ingesteld voor ontwikkeling hier.
Hier zijn toelichting op een aantal van de belangrijke bestanden:
index.js (sjabloon) dit bestand is het stuurprogramma voor de hardware. Hier is de basisopstelling:
- Util en de gebeurtenis emitter, samen met eventuele andere afhankelijkheden nodig. Deze laat u schrijven gebeurtenisgestuurde API's.
- Maak een constructorfunctie die de hardware als een object instantieert. De twee argumenten zijn "hardware" en een callback. De functie moet uitstoten een "ready" gebeurtenis die het object retourneert wanneer het klaar is. Voor de PIR is het "klaar" zo snel als het object wordt geïnstantieerd. Voor iets meer complexe, bijvoorbeeld de Ambient module, het is niet "ready" totdat het controleert dat er de juiste firmwareversie.
- 'hardware' geeft aan waar het apparaat is aangesloten op Tessel. Voor modules is het een haven. Voor externe hardware, zal dit hoogstwaarschijnlijk een poort en een PIN-code (bijvoorbeeld tessel.port['GPIO'].pin['A3']). U moet waarschijnlijk ook toevoegen foutafhandeling in het geval dat het verkeerde hardware-type wordt doorgegeven (bijvoorbeeld alleen een poort wanneer u een pincode nodig) of voor de specificatie van het verkeerde type pin (u kunt zien welke pinnen zijn digitale, analoge en PWM in de voorbeelden hier). U kunt de PIR-code voor voorbeelden van deze foutafhandeling.
- ' callback(err, obj)' moet retourneren een fout als er eventuele fouten aansluiten, of als geen fouten bevat, moet het object als resultaat als tweede argument.
- Functies: dit is het leuke gedeelte! Wat wil je als de API voor uw hardware? Wat is handig? Wat wilt u bloot? Voor de PIR-bewegingsmelder heb ik slechts één functie, die de pin leest. Allermeest naar de nuttige informatie is beter blootgesteld als gebeurtenissen voor "beweging", "stilte" en "wijzigen".
- functie: de standaard vereist voor een Tessel module is require('module').use(tessel.port['PORT']). De functie "gebruiken" vergt hardwarespecificatie en een retouraanroep, en ze vervolgens doorgeeft aan het object constructor.exports: de functie object en de functie exporteren.
package.json (sjabloon) gebruik 'npm init' voor het genereren van de meeste van dit bestand.
Andere objecten van de nota:
U hoeft niet de tessel npm pakket als een afhankelijkheid.
- Een "hardware" onderdeel toevoegen. Standaard duwt Tessel de gehele map zodat eventuele afhankelijkheden opgenomen worden. Met een sectie "hardware", kunt u bestanden en mappen te negeren wanneer duwen om ingesloten apparaten. Voor onze modules, die we aanbieden ". / test"en". / voorbeelden".
map examples (sjabloon) U moet ten minste één voorbeeld. Dit moet basis functionaliteit van de hardware tonen. Mijne wacht op een gebeurtenis ready, dan logt een bericht op de uitstoot van de "beweging" en "stilte" evenementen. Wanneer u de module nodig hebt, verwijzen naar '... /' in plaats van de naam van de module.
testen van map (sjabloon) We gebruiken het knooppunt module "tinytap" voor het testen. Elke functionaliteit die kan worden getest zonder fysieke interactie testbare met moet ' tessel uitgevoerd test / * .js.
README.md (sjabloon) uw readme is uw documentatie. Voor consistentie met Tessel modules, check out de sjabloon. We gebruiken het knooppunt module "marktype" om mooie, Linking API-documentatie.