Async Device.js --> App.js

Zelfs wanneer gezocht wordt op “Homey use eslint” of “Homey typescript” krijg je de Homey apps SDK documentation in the top 3 van de zoekresultaten…

1 Like

Heb het nu in js staan en nog steeds een fout en het is niet mijn editor.

Wat is hier een mogelijke oplossing voor?

APP.JS

image

DEVICE.JS

image

De foutmelding is “Unable to initialize app”.

Ik geloof niet dat je de app geinitialiseerd hebt, zoals in de code die @robertklep eerder in dit topic heeft gedeeld staat…

Toch wel

  • Nieuwe app
  • Type script (N)
  • Use ESLint (n)

De content van de app.js en device.js is exact hetzelfde als @robertklep eerder in de tweede post van dit topic heeft gedeeld?

ja

dit (van jou)

is toch niet hetzelfde als dit (van Robert)

het is inderdaad niet exact het zelfde maar het komt op het zelfde neer

en is het device ook toegevoegd aan Homey, zodat deze geïnitialiseerd kan worden?

/**
* onInit is called when the device is initialized.
*/

het is een virtueel device dus hoeft dit niet.

hoe denk je dan dat de onInit van een device instance aangeroepen wordt?
Ook virtuele devices moet je toevoegen aan Homey, zodat deze een eigen device ID krijgen

ze hebben een eigen device id en zijn toegevoegd.

en wat is de content van je device.js?

‘use strict’;

const { Device } = require(‘homey’);

class MyDevice extends Device {

/**

  • onInit is called when the device is initialized.

*/

async onInit() {

// ***********************************************************************************

// ON / OFF

// ***********************************************************************************

this.registerCapabilityListener('onoff', async (value) => {

  let devData = this.getData();

  // ==================================

  // I

  // ==================================

  // I1 - - - - - - - - - - - - - - - -

 

  if (devData.id === 'AE_I1') {

    // True

    if (value === true) {

      const app = this.homey.app;

     

      await app.blink();

    }

    // False

    if (value === false) {}

  }

Net even compleet nieuwe app gemaakt:

ted@MacBook-Pro Downloads % homey app create

? What is your app’s name? Jens’s TEST app

? What is your app’s description? Demonstrate that blinking works

? What is your app’s unique ID? nl.Jens

? What is your app’s category? lights

? Use TypeScript? No

? Use ESLint? Yes

? Use standard license for Homey Apps (GPL3)? Yes

? Seems good? Yes

✓ Installing dev dependencies: @types/homey@npm:homey-apps-sdk-v3-types, eslint, eslint-config-athom

✓ Installation complete

✓ App created in /Users/ted/Downloads/nl.Jens

En een dummy device

ted@MacBook-Pro nl.Jens % homey app driver create

? What is your Driver’s Name? JENS

? What is your Driver’s ID? JENS

? What is your Driver’s Device Class? Light (light)

? What are your Driver’s Capabilities? Motion alarm (alarm_motion)

? Seems good? Yes

? What type of device is this? Other

✓ Driver created in /Users/ted/Downloads/nl.Jens/drivers/JENS

ted@MacBook-Pro nl.Jens % homey app run

✓ Pre-processing app…

Added Driver JENS

✓ Validating app…

✓ Homey App validated successfully against level debug

✓ Packing Homey App…

— App size: 129 KB

✓ Installing Homey App on Homey Pro (http://10.0.2.23:80)…

✓ Homey App nl.Jens successfully installed

✓ Running nl.Jens, press CTRL+C to quit

— Profile your app’s performance at Homey Developer Tools

─────────────── Logging stdout & stderr ───────────────

[log] 2021-10-23 17:30:02 [MyApp] MyApp has been initialized

[log] 2021-10-23 17:30:02 [ManagerDrivers] [Driver:JENS] MyDriver has been initialized

───────────────────────────────────────────────────────

Aangezien het device nog niet is toegevoegd, zal het aanroepen van blink niets doen vanuit device.js:

ted@MacBook-Pro nl.Jens % homey app run

✓ Pre-processing app…

Added Driver JENS

✓ Validating app…

✓ Homey App validated successfully against level debug

✓ Packing Homey App…

— App size: 129 KB

✓ Installing Homey App on Development Homey (http://10.0.2.20:80)…

✓ Homey App nl.Jens successfully installed

✓ Running nl.Jens, press CTRL+C to quit

— Profile your app’s performance at Homey Developer Tools

─────────────── Logging stdout & stderr ───────────────

[log] 2021-10-23 17:35:58 [MyApp] MyApp has been initialized

[log] 2021-10-23 17:35:58 [ManagerDrivers] [Driver:JENS] MyDriver has been initialized

───────────────────────────────────────────────────────

Wanneer ik deze echter vanuit de driver aanroep doet ie het wel:

─────────────── Logging stdout & stderr ───────────────

[log] 2021-10-23 17:42:55 [MyApp] MyApp has been initialized

[log] 2021-10-23 17:42:55 [ManagerDrivers] [Driver:JENS] MyDriver has been initialized

[log] 2021-10-23 17:42:55 [MyApp] Blinking…

Het is juist de bedoeling dat hij niet vanuit de driver wordt aangeroepen maar dan noch,
het gaat hem over de foutmelding dat blink niet berijdbaar is voor de code.

Je roept iets aan vanuit een capabilityListener, met condities…

Wanneer je de blink functie aanroept direct vanuit de onInit in device.js, onder aanname dat het device inderdaad toegevoegd is aan Homey, dan doet ie het nog steeds niet?

nee,

maar het gaat er niet om of hij aangeroepen wordt of niet dat weet ik wel wanneer hij wat doet,

maar over dat hij async niet herkent met blink() en wel met onInit() terwijl alle haaktjes en puntcoma’s het zelfde zijn

We zijn inmiddels 12 uur verder…

Je deelt slechts fragmenten van informatie na herhaaldelijk vragen.
We kunnen geen gedachten lezen / in jouw Homey kijken / je debug logs lezen.

Inmiddels is door twee developers aangetoond dat de basis code wel werkt…
succes er mee!

1 Like

Welnee, je mag helemaal geen methods declareren in methods. Ik snap ook niet wat je wilt doen, of waarom je niet uitgaat van de code die ik liet zien.

1 Like