Créer un device virtuel


#1

Bonjour,

je souhaite lier des ampoules smart life avec gladys.

Comme il n’y a pas encore de module et que je n’ai pas encore les connaissance pour tenter l’aventure, je passe par une requete sur IFTTT pour les gérer.

Je voudrais créer un device virtuel pour y associer mes scénarios, mais je bloque sur la création du device : gladys me force je pense à associer au device un protocol et un service, mais je met quoi pour un truc virtuel ? ( j’ai essayé de mettre quelque chose de lier à rien comme “smartlife” mais ça ne fonctionne pas, et “gladys non plus ^^” ).

merci de votre aide.


#2

@MathieuA a un petit module fake device qui devrait te servir :wink:

(j’ose espérer que sur la v4, ça sera de base dans les fonctionnalités… :p)


#3

Merci !

je vais tester ça ce soir en rentrant.

J’ai fais quelques recherche avec “faux device” et “device virtuel” mais je n’étais pas tombé sur ce module :confused:.

Je ne sais pas si ça a déjà été proposé @pierre-gilles mais il ne serait pas bon de faire une sorte de topic/liste épinglé avec tous les modules “non officiel” qui ne sont pas présent dans le store, histoire de regroupé un peu tout pour simplifier les recherches ?

d’ailleurs, c’est quoi la différence entre un module qui est dans le store et un module qui n’y ai pas comme celui la ?


#4

Il a été vu par @pierre-gilles et est présent sur le repo officiel (je crois)


#5

Bon je ne suis pas doué je ne comprend pas comment le module fonctionne, ou comment les devices fonctionnent aussi…

Je ne comprenbds pas ce que doit être les valeurs protocol et service :
j’ai essayé avec le nom du module ( je l’ai nommé “virtual device” quand je l’ai installé manuellement via le slug ) et aussi fake-gladys-device comme j’avais cru lire dans un post de @piznel sur une variante du module.

Dans les 2 cas quand j’essaye ensuite de dire à gladys d’allumer le tag du devicetype binary lampe associé à ce device, gladys y échoue avec ce log :

0|gladys   | brain : classify : Identified label deviceType;set-device-on
0|gladys   | Getting conversation 01e261d8-f138-431b-8323-caea83b64e7b, found 1 messages.
0|gladys   | { deviceTypes:
0|gladys   |    [ RowDataPacket {
0|gladys   |        name: 'on/off',
0|gladys   |        service: 'virtual device',
0|gladys   |        protocol: 'virtual device',
0|gladys   |        id: 54,
0|gladys   |        type: 'binary',
0|gladys   |        tag: 'plafond',
0|gladys   |        unit: null,
0|gladys   |        min: 0,
0|gladys   |        max: 1,
0|gladys   |        device: 19,
0|gladys   |        roomName: 'Salon',
0|gladys   |        roomId: 1,
0|gladys   |        deviceName: 'plafond_salon',
0|gladys   |        display: 1 } ],
0|gladys   |   rooms:
0|gladys   |    [ RowDataPacket {
0|gladys   |        name: 'Salon',
0|gladys   |        house: 1,
0|gladys   |        permission: null,
0|gladys   |        id: 1,
0|gladys   |        createdAt: 2019-01-19T11:42:50.000Z,
0|gladys   |        updatedAt: 2019-01-19T11:42:50.000Z } ],
0|gladys   |   houses: [],
0|gladys   |   channel: [],
0|gladys   |   times: [],
0|gladys   |   replacedText: 'allume le %DEVICE_TYPE% du %ROOM%',
0|gladys   |   allHouses:
0|gladys   |    [ RowDataPacket {
0|gladys   |        uuid: 'ffd20ab8-82d3-461a-a5dd-d48a8f3231cb',
0|gladys   |        name: 'Mamaison',
0|gladys   |        address: 'mon adresse',
0|gladys   |        city: 'ma ville',
0|gladys   |        postcode: '00000',
0|gladys   |        country: 'France',
0|gladys   |        latitude: 0,
0|gladys   |        longitude: 0,
0|gladys   |        id: 1,
0|gladys   |        createdAt: 2019-01-19T11:42:44.000Z,
0|gladys   |        updatedAt: 2019-01-19T11:42:44.000Z } ],
0|gladys   |   language: 'fr',
0|gladys   |   user:
0|gladys   |    { firstname: Set',
0|gladys   |      lastname: 'Chulain',
0|gladys   |      email: 'monmail@email.com',
0|gladys   |      birthdate: 'happy birthday',
0|gladys   |      gender: 0,
0|gladys   |      language: 'fr-FR',
0|gladys   |      assistantName: 'Gladys',
0|gladys   |      preparationTimeAfterWakeUp: 600,
0|gladys   |      role: 'admin',
0|gladys   |      id: 1,
0|gladys   |      createdAt: '2019-01-19T11:36:40.000Z',
0|gladys   |      updatedAt: '2019-01-20T16:10:21.000Z',
0|gladys   |      online: true },
0|gladys   |   label: 'set-device-on',
0|gladys   |   conversationMessages: [] }
0|gladys   | Brain : classify : Error while executing command in service = deviceType, label = set-device-on
0|gladys   | Error: virtual device does not exist or does not have an exec function
0|gladys   |     at /home/pi/gladys/api/core/devicetype/deviceType.exec.js:56:31
0|gladys   |     at tryCatcher (/home/pi/gladys/node_modules/bluebird/js/release/util.js:16:23)
0|gladys   |     at Promise._settlePromiseFromHandler (/home/pi/gladys/node_modules/bluebird/js/release/promise.js:512:31)
0|gladys   |     at Promise._settlePromise (/home/pi/gladys/node_modules/bluebird/js/release/promise.js:569:18)
0|gladys   |     at Promise._settlePromise0 (/home/pi/gladys/node_modules/bluebird/js/release/promise.js:614:10)
0|gladys   |     at Promise._settlePromises (/home/pi/gladys/node_modules/bluebird/js/release/promise.js:693:18)
0|gladys   |     at Promise._fulfill (/home/pi/gladys/node_modules/bluebird/js/release/promise.js:638:18)
0|gladys   |     at /home/pi/gladys/node_modules/bluebird/js/release/nodeback.js:42:21
0|gladys   |     at /home/pi/gladys/node_modules/sails-mysql/lib/connections/spawn.js:120:16
0|gladys   |     at Object.poolfully [as releaseConnection] (/home/pi/gladys/node_modules/sails-mysql/lib/connections/release.js:28:12)
0|gladys   |     at Query._callback (/home/pi/gladys/node_modules/sails-mysql/lib/connections/spawn.js:105:35)
0|gladys   |     at Query.Sequence.end (/home/pi/gladys/node_modules/mysql/lib/protocol/sequences/Sequence.js:96:24)
0|gladys   |     at Query._handleFinalResultPacket (/home/pi/gladys/node_modules/mysql/lib/protocol/sequences/Query.js:144:8)
0|gladys   |     at Query.EofPacket (/home/pi/gladys/node_modules/mysql/lib/protocol/sequences/Query.js:128:8)
0|gladys   |     at Protocol._parsePacket (/home/pi/gladys/node_modules/mysql/lib/protocol/Protocol.js:280:23)
0|gladys   |     at Parser.write (/home/pi/gladys/node_modules/mysql/lib/protocol/Parser.js:73:12)
0|gladys   |     at Protocol.write (/home/pi/gladys/node_modules/mysql/lib/protocol/Protocol.js:39:16)
0|gladys   |     at Socket.<anonymous> (/home/pi/gladys/node_modules/mysql/lib/Connection.js:96:28)
0|gladys   |     at emitOne (events.js:116:13)
0|gladys   |     at Socket.emit (events.js:211:7)
0|gladys   |     at addChunk (_stream_readable.js:263:12)
0|gladys   |     at readableAddChunk (_stream_readable.js:250:11)
0|gladys   |     at Socket.Readable.push (_stream_readable.js:208:10)
0|gladys   |     at TCP.onread (net.js:594:20)
0|gladys   | Brain : answer : Answering with label error in language fr-FR
0|gladys   | Brain : answer : Found 2 possible.
0|gladys   | Brain : answer : Trying to contact socket
0|gladys   | Message sent with success with socket.
0|gladys   | Brain : answer : Trying to contact speak
0|gladys   | Unable to reach user with service speak. Trying with other services.
0|gladys   | Brain : answer : Trying to contact telegram
0|gladys   | Message sent with success with telegram.
0|gladys   | brain : classify : Answered in 0s, 487.454 ms

Je ne sais pas trop quoi dire… à l’aide ? ^^"


#6

Cette ligne est très interessante, gladys te dis qu’elle ne connais pas de type virtual device.
Je pense que tu devrais tenter une réinstallation du module en supprimant les espaces dans le nom du module et dans son slug. Chez moi ca fonctionne très bien avec le slug gladys-fake-module :
Voici mes réglages, le premier champ contiens gladys-fake-module suivi d’un chiffe et les deux autres juste gladys-fake-module

Coté logs, j’ai toujours une ligne rouge dès que je modifie un deviceType gladys-fake-module mais le fonctionnement est normal en dehors de ça.


#7

Merci @jojolll ça fonctionne \o/ !

j’ai réinstallé pour avoir le même nom de module que toi et fais les même réglages que toi.

Du coup je ne sais toujours pas ce pourquoi ça ne marchait pas, et ce que gladys entends par protocol service et identifier, et je serais bien incapable de créer un périphérique manuellment sans qu’il soit un fake, mais pour ce coup ci on va dire que le problème est contourné :smiley: .


#8

Je crois que ton problème viens de l’espace que tu as mis dans le slug (chez moi c’est des tirets), ou alors, tu as fait une faute de frappe, toujours dans le slug, lors de l’installation du module ^^

Dans tous les cas, gladys ne reconnaissait pas le device donc ça doit être une histoire du genre :wink: