Aller au contenu

instance de scènes


jjacques68

Messages recommandés

hello !

on en a déjà parlé, il me semble.

 

sur le HC3 il n'y a plus la notion d'instance de scène.

On peut grâce aux options de la scène, définir si la prochaine exécution annule et remplace la précédente, ou pas.

EDIT : dans ce dernier cas, la prochaine exécution sera tout simplement ignorée.

 

je rencontre certain cas bien précis où j'aurai bien aimé avoir la possibilité d'avoir plusieurs instances simultanément...

n'y a - t - il pas un moyen de pouvoir le faire ?

ou peut être d'une autre façon ?

Une autre approche ?

 

bien à vous !

Modifié par jjacques68
Lien vers le commentaire
Partager sur d’autres sites

il y a 4 minutes, jjacques68 a dit :

je rencontre certain cas bien précis où j'aurai bien aimé avoir la possibilité d'avoir plusieurs instances simultanément...

Ça dépend. Vous devez décrire ces cas très spécifiques ...

Lien vers le commentaire
Partager sur d’autres sites

et bien par exemple, j'ai une scène qui est déclenchée lors du passage à TRUE de tous mes FGMS;(j'ai tous les FGMS dans les conditions)

 

Si par exemple 2 FGMS passent à TRUE "simultanément", selon l'option de la scène  :

 

- soit la première instance n'aura pas le temps de se terminer, et la deuxième instance se déroulera correctement.

- soit la première instance se termine, mais la deuxième ne sera pas exécutée

Modifié par jjacques68
Lien vers le commentaire
Partager sur d’autres sites

Ton exemple est intéressant,

 

Il y a des solutions: multiplication des scènes, lecture de tous les devices (de préférence avec polling et pas de boucle sans fin, mais l'idée est la.), technique du refreshState, ... Elles font toutes le job mais aucunes acceptables pour moi (spof)

 

Ou comme pour sceneId attendre que fibaro réintègre cela ;), il y a des échanges sur le sujet...

 

Lien vers le commentaire
Partager sur d’autres sites

bon ok j'attends...

 

J'ai pas envie de multiplier les scènes !

je l'ai fait pour les PIR et l'éclairage, j'avais une scène pour tous les PIR qui le gérait l'éclairage.

ça marche du tonnerre, sauf que si par mal chance 2 personnes passent devant un PIR, y en aura un qui aura pas de lumière :) 

 

du coup j'ai séparée les scènes triggées par le TRUE / FALSE au lieu du "anyValue" d'origine, mais ça a rien changé... pour l'exemple que je viens de citer.

sauf que si une lumière doit s'allumer en même qu'une autre doit s'éteindre, là ça marche maintenant...

 

 

 

Lien vers le commentaire
Partager sur d’autres sites

dans le même sujet,je remarque, 

  • lorsque certaines scènes sont triggées
  • alors qu'une instance est déjà en cours
  • ET que l'option "Allow to restart a running scene" est sur YES,

qu'il y a de temps en temps des erreurs qui apparaissent dans les log.

Mais pas de précisions !

j'ai juste "error" avec le numéro de la scène et rien d'autres !

 

ça parle a qqun ?

 

Lien vers le commentaire
Partager sur d’autres sites

j'en avais parlé dans un autre sujet, le seul moyen rapide que j'avais trouvé pour le reproduire c'était avec ça

print("start")
fibaro.sleep(10000)
print("end")

et de relancer la scène avant la fin des 10 secondes.

ça fera le même effet !

 

Mais dans les scènes où ça arrive, je n'ai pas de tempo... leurs seules particularités, sont des éventuelles appels à l'API...

 

Elles sont très rapide (une fraction de secondes) mais si y a plusieurs déclenchement ("simultanés")... ça bug.

Je m'en rend compte, vu que je stocke en base de données, l'historique du debug ET le status des device.

Je me rends compte que plusieurs device trigger de ces scènes ont changé de status (valeur) au même moment (timecode) où l'erreur apparaît.

La scène est donc être relancée pour chaque device. (option YES)

Le problème disparaît si je mets l'option sur OFF.

 

Mais ça tourne en rond :) , sur OFF, je perds potentiellement des instances de scènes, sur ON ça bug

(bon dans tous les cas je perds de toutes façon des instances)

 

s'ils pouvaient remettre les multi instance, ça réglerait tous les problèmes...

 

Modifié par jjacques68
Lien vers le commentaire
Partager sur d’autres sites

Je comprends mieux en effet... je pense qu’ils n’ont pas implémenté de mechanisms d’annulation de taches usuelles de le monde asynchrone

Le problème avec le multi instance d’une scène c’est qu’il y aura toujours une limite...


Envoyé de mon iPhone en utilisant Tapatalk

Lien vers le commentaire
Partager sur d’autres sites

  • 3 semaines après...

je relance le sujet, je viens de me rendre compte que dans l'API de scènes, il y a une propriété "maxRunningInstances" qui visiblement par défaut est à 2.

 

J'ai réussi à la mettre à plus, ici 10, mais je ne constate aucun changement de comportement...

 

bien dommage ça !

{
  "id": 6545,
  "name": "__essai",
  "type": "lua",
  "mode": "automatic",
  "maxRunningInstances": 10,
  "icon": "scene_lua",
  "hidden": false,
  "protectedByPin": false,
  "stopOnAlarm": false,
  "restart": false,
  "enabled": true,
  "content": "{\"conditions\":\"{}\",\"actions\":\"fibaro.warning(\\\"essai\\\",\\\"start\\\")\\nfibaro.setTimeout(10*1000, function() fibaro.warning(\\\"essai\\\",\\\"end\\\") end)\"}",
  "created": 1589226657,
  "updated": 1589610840,
  "categories": [
    1
  ]
}

 

  • Like 1
Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...