Aller au contenu
Lazer

Quick App - Gestionnaire d'Événements Automatique - GEA pour HC3

Recommended Posts

ok

 

Tu peux me donner un exemple de fonction config() personnalisée, j'ai il me semble déjà utilisé ça mai il y longtemps 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

On en a parlé sur la page précédente justement !

Là où tu devais incorporer ton Telegram.

 

Inutile que je copie/colle ce qui a déjà été fait.

Je t'invite donc à consulter la page officielle de GEA de Steven dont j'ai donné le lien dans le premier post de ce topic, où tu y trouveras notamment la doc Syntaxe faite par Pepite.

Tout y est expliqué.

 

Partager ce message


Lien à poster
Partager sur d’autres sites

On ne s'est pas compris, c'est fonction directement dans le MAIN ou CONFIGU ?

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Dans config

Je t'ai déjà dit qu'il ne faut surtout pas, ô grand jamais, modifier main ;)

 

Avec des couleurs rouge/vert c'est clair :D

 

Partager ce message


Lien à poster
Partager sur d’autres sites

c'est un EXP code comme :

GEA.add ( {"Function", function() return timecycleB() end}, 0, "" , {
       {"Telegram", 288, { "function ok #value# - #time#" }} })

 

A utilisé directement dans CONFIG

Partager ce message


Lien à poster
Partager sur d’autres sites

salut 

 

je souhaite testé le 

{"VirtualDevice", 73, 2}

  par  

"QuickApp"       (alias identique "QA")              
  {"QuickApp", <id_module>, <method>, [paramètres]}

 

 

Mais je ne comprends pas trop 

Partager ce message


Lien à poster
Partager sur d’autres sites

Et bien, ça c'est pas bon :

{"VirtualDevice", 73, 2}

2 est un nombre, ça ne peut pas être un nom de fonction.

 

Il faut donc mettre une chaine de caractère qui contienne le nom de ta fonction au sein du QuickApp.


Par exemple :

 

{"QuickApp", 73, "MaFonctionQuiFaitPleinDeSuperTrucsUiles", "avec", "tout", "un", "tas", "d'arguments"}

Tu noteras que j'ai ajouté des arguments à passer à la fonction.

 

Du coup dans ton QA tu dois avoir quelque chose qui ressemble à ça :

function QuickApp:MaFonctionQuiFaitPleinDeSuperTrucsUiles(...)

end

 

Et 73 c'est l'ID de ton QuickApp bien sûr

 

Modifié par Lazer

Partager ce message


Lien à poster
Partager sur d’autres sites

j'ai créé un QA avec un bouton qui active le profile 4

function QuickApp:p4(onReleased)
fibaro.profile("activateProfile", 4)
end

vue que "VirtualDevice", "VD"  => remplacé par "QuickApp" et "QA"

 

et Dans GEA je cherche le moyen d'activé ce bouton Id p4 et onReleased p4

 

 

 

j'ai un autre bug ou pas avec GEA mai je t'en parlerai après, je continu l'observation 

 

Modifié par 971jmd

Partager ce message


Lien à poster
Partager sur d’autres sites

Non mais oublie le bouton, c'est fini la HC2, avec le numéro du bouton qui change dès que tu modifies le VD :blink:

 

Comme je t'ai dis, tu appelles directement la fonction qui t'intéresse.

Dans ton cas, c'est la fonction associée au bouton, donc :

{"QuickApp", 73, "p4"}

C'est tout simple, rapide, efficace, maintenable.

 

Modifié par Lazer

Partager ce message


Lien à poster
Partager sur d’autres sites

j'ai testé ça et GEA me crache dessus :D

 

Non tu oublies que ne fonctionne plus VirtualDevice

 

et ça fonctionne bien avec, c'est "" qui me manquaient

GEA.add(true, 0, "p4", {{"QuickApp", 238, "p4"}})

merci

Partager ce message


Lien à poster
Partager sur d’autres sites

l'autre éventuel BUG, vient je pense de {"OnOff", id["LAMPE_CUISINE"] } 

 

GEA.add({"SceneActivation", id["TELECOM_DU_BAR"] , 14}, -1, "", {{"OnOff", id["LAMPE_CUISINE"] } })

 

Te temps en temps quand j'appuie sur le bouton pour lancée l'action, la lampe s'allume et s'éteint

Partager ce message


Lien à poster
Partager sur d’autres sites

Mais bien sûr, c'était "QuickApp" et pas "VirtualDevice" dans mes exemples précédents, j'avais bêtement copié ta ligne sans même vérifié ça, tellement pressé que j'étais de répondre (et dans ma tête c'était tellement évident qu'on parlait bien de QuickApp)

:2:

Je vais éditer les messages

 

 

Etrange ton comportement "OnOff", je l'ai testé et ça fonctionnait bien chez moi.

Tu arriverais à reproduire de façon plus certaine que "de temps en temps" ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour, j'ai un souci sur GEA 7 sur ma toute fraiche HC3. J'ai intégré mes ampoules HUE sans problème. J'allume bêtement une ampoule sur détection de mouvement.

 

  GEA.add( {51, {"Value-",53,150}}  , -1, "", {
      {"Time","Sunset-30","23:00"},
      {"Time","19:30","23:00"},
      {"Time","07:00","09:00"},
      {"turnOn",21,5*60}, {"Repeat"}
    })

 

Cela fonctionne, mais l'ampoule n'est pas 100% de luminosité par défaut.

 

J'ai essayé

  GEA.add( {51, {"Value-",53,150}}  , -1, "", {
      {"Time","Sunset-30","23:00"},
      {"Time","19:30","23:00"},
      {"Time","07:00","09:00"},
      {{"turnOn",21,5*60},{"Hue", 21, "bri", 100}}, {"Repeat"}
    })

 

Mais j'ai une erreur

[18.11.2020] [20:31:33] [ERROR] [QUICKAPP28]: main.lua:2382: attempt to call a nil value (method 'lower')

 

 

La ligne en question est

if type(a[i]) == "table" and a[i][1]:lower()=="if" then

 

a[1] = vaut nil

 

Une idée  ?

 

PS: pour le reste , la box est juste TOP !!!! (hormis les petits défauts de jeunesse :)))

 

Modifié par Dgille

Partager ce message


Lien à poster
Partager sur d’autres sites

Hue, c'est quelque chose que je n'ai pas pu tester, donc tu es tombé sur un bug non identifié.

Tu pourrais me donner le JSON de ton module Hue, qui semble être l'ID 21 ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci pour ton aide, voici

 

{
  "id": 21,
  "name": "Lampe",
  "roomID": 229,
  "view": [
    {
      "assetsPath": "/dynamic-plugins/com.fibaro.rgbwController/assets",
      "jsPath": "/dynamic-plugins/com.fibaro.rgbwController",
      "name": "com.fibaro.rgbwController",
      "translatesPath": "/dynamic-plugins/com.fibaro.rgbwController/i18n",
      "type": "ts"
    },
    {
      "type": "json"
    }
  ],
  "type": "com.fibaro.philipsHueLight",
  "baseType": "com.fibaro.colorController",
  "enabled": true,
  "visible": true,
  "isPlugin": true,
  "parentId": 20,
  "viewXml": true,
  "configXml": false,
  "interfaces": [
    "levelChange",
    "light"
  ],
  "properties": {
    "alert": 0,
    "brightness": 1,
    "categories": [
      "lights"
    ],
    "color": "255,255,255,0",
    "colormode": "",
    "currentProgram": 0,
    "dead": false,
    "deadReason": "",
    "deviceControlType": 23,
    "deviceIcon": 15,
    "effect": 0,
    "emailNotificationID": 0,
    "emailNotificationType": 0,
    "hue": 0,
    "isLight": true,
    "lightId": 1,
    "log": "",
    "logTemp": "",
    "manufacturer": "",
    "model": "",
    "on": false,
    "pushNotificationID": 0,
    "pushNotificationType": 0,
    "reachable": true,
    "saturation": 0,
    "saveLogs": true,
    "smsNotificationID": 0,
    "smsNotificationType": 0,
    "state": false,
    "userDescription": "",
    "value": 0
  },
  "actions": {
    "setColor": 1,
    "setValue": 1,
    "startLevelDecrease": 0,
    "startLevelIncrease": 0,
    "stopLevelChange": 0,
    "toggle": 0,
    "turnOff": 0,
    "turnOn": 0
  },
  "created": 1605644899,
  "modified": 1605644899,
  "sortOrder": 13
}

Partager ce message


Lien à poster
Partager sur d’autres sites

Petite question : comment on gère les options ?

Voici ma ligne GEA HC2 :

  GEA.output = function(message) fibaro:setGlobal("Pushover", message) end

 

J'ai testé sur HC3:

GEA.output = function(message) fibaro.setGlobalVariable("Pushover", message) end 

 

Ca marche pô.... j'ai une erreur dans le debug:

[19.11.2020] [13:37:01] [ERROR] [QUICKAPP26]: config.lua:10: Wrong parameter type, string required. Provided param 'custom [luabind::detail::null_type] object: (nil)' is type of userdata

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Elle est étrange ton ancienne syntaxe, tu es certaine qu'elle était valide ?

 

D'après la doc, la syntaxe des options est la suivante (voir la doc pour les explications complètes) :

	GEA.options.nom_du_plugin = {name="Nom_Du_Plugin",
				getValue=function(valeur) 
					-- code CONDITION à mettre ici --
						 end,
				action=function(valeur) 
					-- code ACTION à mettre ici -- 
					   end,
				}

 

Donc dans ton cas le fichier de config devrait ressembler à quelque chose comme ça (non testé) :

function config(GEA)
	-- d'autres paramètres...

	-- Définition de mon option personnalisée :
	GEA.options.output = {name = "Output Pushover",
		action = function(message) fibaro.setGlobalVariable("Pushover", message) end,
	}

end

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonsoir, j'ai résolu mon problème, un problème entre la chaise et le clavier, le copier/collé est mal passé, en remettant tout sur une ligne, cela passe au niveau syntaxe.

 

Le second problème est subtil, mais GEA envoi directement les ordres HUE au pont, et donc la luminosité n'est pas en pourcentage, mais sur la valeur décimale d'un octet, 100%=254 :( .

D'ailleurs, on ne pourrait pas passer par le child device  créé par le QA Hue ? à creuser. Désolé pour le bruit.

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Trop fort, je n'ai rien eu à faire :60:

 

Je n'ai pas de Hue à disposition pour tester, mais est-ce que passer par le Child apporterait quelque chose ? Surtout, pourquoi cela n'a pas été fait sur la HC2 ? Il doit y avoir une bonne raison...

 

La conversion 100% = 254 est facile à faire, une simpke règle de trois, je peux l'ajouter sans souci.

Cependant cela va changer la syntaxe de l'API, ce qui va poser problème pour les portages des règles utilisateurs de la HC2 vers la HC3.


Dans ce cas, je propose non pas de modifier le comportement, mais d'ajouter un nouveau comportement.

A savoir que si on continue d'envoyer un nombre entier, alors GEA enverra la valeur telle quelle au pont Hue, comme avant. Syntaxe : GEA.add( {CONDITIONS}, 30, "", {"Hue", 21, "bri", 127} )

Mais si on envoie une chaine de caractères contenant la valeur suivie du symbole %, dans ce cas on fait la conversion. Syntaxe : GEA.add( {CONDITIONS}, 30, "", {"Hue", 21, "bri", "50%"} )

 

Les 2 syntaxes ci-dessus devraient donc produire le même résultat, es-tu d'accord ?

 

Dans la doc, je vois ceci :

 

    - Liste couple Propriétés - Valeurs \\ List of Properties - values
    for details see https://www.developers.meethue.com/documentation/core-concepts#color_gets_more_complicated
        * on - true|false  

        * bri - 1 à 254
        * hue - 0 à 65535 ( 0 and 65535 : ROUGE //RED ; 25500 : VERT//GREEN; 46920 : BLEU/BLUE)
        * sat - 0 à 254 (0 moins saturé (couleur), 254 le plus saturé (blanc))
        * xy - 0 à 1 for x, 0 to 1 for y
        * ct - 153 (6500 Kelvin) à 500 (2000 Kelvin)
            -> 153: 6500K: Daylight;
            -> 269: 5000K: Cool White;
            -> 384: 3500K: White;
            -> 431: 2900K: Halogen Lamp;
            -> 446: 2700K: Incadescent bulb;
            -> 500: 2000K: Bougie/Candle

 

J'ai surligné en rouge les 2 valeurs qui seraient concernées par cet ajout : bri et sat. Là encore, tu confirmes ?

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui, sur HC2, le plugin Hue était instable (au moins dans les premières V4, cela dit, toute la box était instable). Je ne suis pas sur qu'il proposait toutes les propriétés (xy et ct en particulier).

Je pense que Steven a préféré attaquer le pont pour stabiliser le fonctionnement et avoir la maitrise totale de l'écosystème Hue.

 

Avec 2 calculatrices, j'arrive à faire une règle de trois, mais un pourcentage, c'est plus facile à maintenir :).

 

La syntaxe que tu proposes me parait bien, et surtout lisible. On a ainsi la même échelle que celle proposée par les sliders des childs Hue.

 

Pas de problème pour tester bien sur....

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Ah oui, les instabilités des plugins officiels Fibaro, et les débuts de la v4.... :wacko:

Piloter en direct le pont Hue était en effet plus fiable, sans aucun doute :)

 

Je veux bien changer le code et piloter en direct les Children sans passer par le pont Hue, en plus ça simplifiera le code. Qu'en penses-tu, est-ce que le plugin sur HC3 est suffisamment stable pour cela ?
J'y vois un autre avantage, piloter en direct un child permettra un retour d'état instantané, ce qui n'est peut être pas le cas lorsqu'on pilote le pont ?

Partager ce message


Lien à poster
Partager sur d’autres sites

J'ai reçu ma box lundi, je peux juste dire qu'elle tient au moins 48h depuis son dernier reboot.... mais 0 plantage pour le moment, elle me fait bonne impression sur ce point (et sur d'autres).

Si l'on passe en direct, on perdra XY et CT, je n'ai pas trouvé l'équivalent sur le child. En testant des changements d'état via l'app IOS Hue, je constate une latence de 1 à 3s max pour la prise en compte sur l'IHM de la HC3, elle doit faire du polling aussi à son niveau.

 

On pourrait tester sous forme d'une option/plugin GEA, type "HueDirect", avec moins d'option, mais qui éviterait de supprimer le code existant, le temps d'avoir un peu de recul sur tout cela.

 

Partager ce message


Lien à poster
Partager sur d’autres sites

×