Plugin WES V4 : Beta

Bonjour @Alexandre,

Je ne sais pas si la version du 10 juin est terminée mais voici quelques retours :

  1. Au niveau de l’interface, les champs suivants ne devraient-ils pas être visible uniquement sur l’équipement principal « WES » et pas sur ses sous équipements (analogique, bouton, compteurs, …) :
  • IP du Wes

  • Port du Wes

  • Compte du Wes

  • Password du Wes

  1. Les commandes apparaissent dans l’onglet « Equipement » et non dans l’onglet « Commandes ». Est-ce voulu ?

  2. Les cases à cocher « Activer » et « Visible » ne sont pas alignées :
    Ligne 132

<div class="form-group">
          	<label class="col-sm-2 control-label" ></label>
						<div class="col-sm-10">
							<label class="checkbox-inline"><input type="checkbox" class="eqLogicAttr" data-label-text="{{Activer}}" data-l1key="isEnable" checked/>Activer</label>
							<label class="checkbox-inline"><input type="checkbox" class="eqLogicAttr" data-label-text="{{Visible}}" data-l1key="isVisible" checked/>Visible</label>
            </div>
					</div>

A remplacer par :

<div class="form-group">
          	<label class="col-sm-3 control-label" ></label>
						<div class="col-sm-9">
							<label class="checkbox-inline"><input type="checkbox" class="eqLogicAttr" data-label-text="{{Activer}}" data-l1key="isEnable" checked/>Activer</label>
							<label class="checkbox-inline"><input type="checkbox" class="eqLogicAttr" data-label-text="{{Visible}}" data-l1key="isVisible" checked/>Visible</label>
            </div>
					</div>
  1. Le bouton de configuration du Push ne devrait-il pas apparaitre uniquement sur l’équipement global et sur les sous équipements concernés (boutons et relais) ?

  2. Le bouton pour accéder à la carte ne devrait-il pas apparaitre uniquement sur le WES. Sur les sous équipement, le lien ne fonctionne pas car les champs de configuration du WES ne sont pas renseignés. En lien avec le point 1.

  3. Configuration des URLs de push pour le retour d’état :

Si un seul équipement (relai ou bouton) est coché, les commandes se créent correctement côté WES.
En revanche, si plusieurs équipements sont cochés, les commandes s’écrasent côté WES car il manque l’incrémentation du compteur. Il faudrait ajouter « $compteurId++; » à la fin de chaque bloc :

				if ( $eqLogic->getConfiguration('type') == 'bouton' ) {
					$cmd = $eqLogic->getCmd(null, 'state');
					log::add('wes','debug','Url program.cgi?PRG='.$compteurId.','.($wesid+30).',0,0,1,0,1,2,0,1,4,0000,0000,9,0');
					$this->getUrl('program.cgi?PRG='.$compteurId.','.($wesid+30).',0,0,1,0,1,2,0,1,4,0000,0000,9,0');
					$this->getUrl('program.cgi?RQT'.$compteurId.'='.$pathjeedom.'core/api/jeeApi.php?api='.jeedom::getApiKey('wes').'%26type=wes%26id='.$cmd->getId().'%26value=$I'.$wesid.'00');
					log::add('wes','debug','Url program.cgi?RQT'.$compteurId.'='.$pathjeedom.'core/api/jeeApi.php?api='.jeedom::getApiKey('wes').'%26type=wes%26id='.$cmd->getId().'%26value=$I'.$wesid.'00');
					$compteurId++;
					$this->getUrl('program.cgi?PRG='.$compteurId.','.($wesid+30).',0,0,0,0,1,2,0,1,4,0000,0000,9,0');
					$this->getUrl('program.cgi?RQT'.$compteurId.'='.$pathjeedom.'core/api/jeeApi.php?api='.jeedom::getApiKey('wes').'%26type=wes%26id='.$cmd->getId().'%26value=$I'.$wesid.'00');
                  $compteurId++;
				}elseif ($eqLogic->getConfiguration('type') == 'relai') {
					$cmd = $eqLogic->getCmd(null, 'state');
					$this->getUrl('program.cgi?PRG='.$compteurId.','.($wesid+100).',0,0,1,0,1,2,0,1,4,0000,0000,9,0');
					$wesid = sprintf("%03d", $wesid);
					$this->getUrl('program.cgi?RQT'.$compteurId.'='.$pathjeedom.'core/api/jeeApi.php?api='.jeedom::getApiKey('wes').'%26type=wes%26id='.$cmd->getId().'%26value=$R'.$wesid);
					$compteurId++;
					$this->getUrl('program.cgi?PRG='.$compteurId.','.($wesid+100).',0,0,0,0,1,2,0,1,4,0000,0000,9,0');
					$wesid = sprintf("%03d", $wesid);
					$this->getUrl('program.cgi?RQT'.$compteurId.'='.$pathjeedom.'core/api/jeeApi.php?api='.jeedom::getApiKey('wes').'%26type=wes%26id='.$cmd->getId().'%26value=$R'.$wesid);
                  $compteurId++;
  1. Serait-il possible d’ajouter les switchs virtuels ? Ils fonctionnent comme les relais physiques mais il y en a 16 (seul 8 apparaissent dans le data.cgx mais cartelectronic m’a indiqué qu’ils apparaitraient dans une prochaine version) au lieu de 2 et leur état est 0 ou 1 et non On ou Off.

Pour la config du push, les index commencent à 501 et le tag est « $S ».

Pour les commandes ON et OFF, l’URI est la suivante :

$file .= 'AJAX.cgx?sw'.($wesid).'=ON';
$file .= 'AJAX.cgx?sw'.($wesid).'=OFF';

Pour le commute, elle est un peu différente :

$file .= 'AJAX.cgx?fsw='.$wesid;

En revanche, le commute est bugé pour le moment côté WES. Cela doit être corrigé de leur côté.

Extrait du data.cgx

<switch_virtuel>
<SWITCH1>1</SWITCH1>
<SWITCH2>0</SWITCH2>
<SWITCH3>0</SWITCH3>
<SWITCH4>0</SWITCH4>
<SWITCH5>0</SWITCH5>
<SWITCH6>0</SWITCH6>
<SWITCH7>0</SWITCH7>
<SWITCH8>0</SWITCH8>
</switch_virtuel>
  1. De même, serait-il possible d’ajouter les variables ?

Pour la config du push, les index commencent à 501 et le tag est « $V ».

Il est possible de modifer les valeurs via :

if ( $this->getLogicalId() == 'change_value' )
			$file .= 'AJAX.cgx?varv'.($wesid).'='.($weseqLogic->getCmd(null, 'valeur')->execCmd());

Extrait du data.cgx

<variables>
<VARIABLE1>12338.97</VARIABLE1>
<VARIABLE2>0.00</VARIABLE2>
<VARIABLE3>0.00</VARIABLE3>
<VARIABLE4>0.00</VARIABLE4>
<VARIABLE5>0.00</VARIABLE5>
<VARIABLE6>0.00</VARIABLE6>
<VARIABLE7>0.00</VARIABLE7>
<VARIABLE8>0.00</VARIABLE8>
</variables>

Merci encore pour cette mise à jour.

Bonjour,

Merci pour tout c’est retour, si tu a le temps de me faire plusieurs PR sur la branche beta ? https://github.com/jeedom/plugin-wes

Je regarderai et les validerai :wink:

J’essaie de faire cela dès que je trouve un peu de temps.

1 « J'aime »

J’ai fait la Maj pour la partie alignement des case, et le compteur pour éviter l’écrasement.

J’ai pas eu le temps de faire le reste pour le moment. donc si tu arrive a trouver le temps avant moi n’hésite pas a me faire un ou plusieurs PR :wink:

En voila déjà deux : https://github.com/jeedom/plugin-wes/pulls

Au passage, il y a un petit soucis avec la fonction configPush($url)

[php7:error] [pid 6089] [client 192.168.0.76:44156] PHP Fatal error:  Uncaught ArgumentCountError: Too few arguments to function wes::configPush(), 0 passed in /var/www/html/plugins/wes/core/ajax/wes.ajax.php on line 32 and exactly 1 expected in /var/www/html/plugins/wes/core/class/wes.class.php:681
Stack trace:
#0 /var/www/html/plugins/wes/core/ajax/wes.ajax.php(32): wes->configPush()
#1 {main}
thrown in /var/www/html/plugins/wes/core/class/wes.class.php on line 681, referer: http://192.168.0.141/index.php?v=d&m=wes&p=wes&id=1509

$url semble necessaire pour la partie téléinfo mais comme il n’est pas dans la fonction Ajax, cela pose problème. Je n’ai pas eu le temps de me pencher sur la partie Push pour le téléinfo, mais à voir si l’URL ne peut pas être récupérée directement depuis les paramètres de l’équipement plutôt que de le passer en argument.

Merci @Alexandre pour la validation des PR. En voici d’autres : https://github.com/jeedom/plugin-wes/pull/3

ConfigPush
Pour la fonction « ConfigPush », le paramètre $url est utilisé uniquement pour la téléinfo mais je ne suis pas sur que la partie téléinfo soit utile car elle n’est appelée nul part. Dans le modal pour la configuration du Push, il y a seulement les boutons, relais et switchs. Je ne retrouve nulle part cette URI (/protect/settings) sur le WES

$url .= 'protect/settings/notif'.$wesid.'P.htm'

Cela dit, mon WES est dans une version assez recente (V0.83H B04). Peut être que cette URL était présente dans les versions précédentes. J’ai récemment relancé Nicolas de Cartelectronics concernant leur doc car celle en ligne date de 2016. Il y en a une en cours de rédaction mais pas de date de diffusion. Peut être as-tu plus d’information à ce sujet de leur part.

Néanmoins, je rate peut être quelquechose car je n’ai pas encore pu raccorder mon WES à mon compteur. Je ne peux donc pas tester la partie téléinfo pour le moment.

Dossier
Concernant le paramètre « Dossier », pourrais-tu m’en dire un peu plus sur l’utilisation que tu souhaitais en faire. Est-ce pour permettre de classer les modules dans des onglets différents ?

Le fait de laisser le paramètre « Dossier » en édition pose un probème lorsque l’on modifie un dossier pour un module pour lequel on peut configurer le Push.

Par exemple, si on change le nom du « Dossier » du relais 1 de « relai » par « Lumière », celui ci va bien être affiché dans l’onglet « Lumière » mais il ne sera plus possible de configurer le Push car le dossier correspond également au type du module.

Soit le paramètre « Dossier » doit être en écriture mais on perd la possibilité de réorganiser les modules, soit il faut ajouter un paramètre supplémentaire pour le « Dossier » en plus du Type.

@Alexandre, je n’avais pas vu que tu avais mergé la Beta avec la Master.

La réécriture en mono classe semble poser des soucis pour les utilisateurs qui avaient l’ancienne version déjà installée.

Ils vont probablement devoir recréer les équipements et du coup perdre leurs historiques à moins de les transférer une par une sur les nouveaux équipements.

Je n’y ai pas pensé avant mais n’aurait-il pas été mieux de créer un nouveau plugin WES 2 et conserver l’ancien afin d’avoir une migration en « douceur » ?

D’ailleurs, il y a d’autres PR qu’il faut que je pousse car il y a des soucis avec la fonction pull() pour les relais et switch car les valeurs ne sont pas castées correctement.

c’est uniquement le eqType_name qui pose souci. je vais donc faire dans le Install et update aller changer tout sa en wes

En effet, ce sera mieux comme çà. Merci.

https://github.com/jeedom/plugin-wes/commit/cc807d2d11580a295d7cdab84b1163ecb6cad417

Ne faudrait-il pas aussi rajouter le type ?

je vois pas de quoi tu parle ^^

https://github.com/jeedom/plugin-wes/commit/75452b21d206e8887736285881e6bffde4d5254f

Je viens de faire la modification pour forcer le cast pour les relais et switchs.

1 « J'aime »

Il faut aussi le type pour le wes lui même avec le type « general », non ?

il faut donc faire une vérification si wes et si rien dans setConfiguration type alors

https://github.com/jeedom/plugin-wes/commit/9b2d556494d7388dd0d112d4f729a040ee7f599c

Il y a une coquille ligne 50 :wink:, Il manque les « > »

if($wes-getConfiguration('type') == null || $wes-getConfiguration('type') == ""){

au lieu de :

if($wes->getConfiguration('type') == null || $wes->getConfiguration('type') == ""){

J’ai fait le PR pour la coquille

https://github.com/jeedom/plugin-wes/pull/8

En revanche, il y a toujours le soucis avec la fonction configPush().

En laissant tel quel, cela génère une erreur :

ConfigPushError

Voir plus haut mon précédent post :

je suis de déplacement ce soir et toute la journée de demain. je ne pourrai pas regarder cette partie. je regarde donc vendredi merci pour ton aide :wink:

Il faudrait aussi faire la modification pour les commandes dans le fichier d’upgrade. Si je peux, j’essaie de te faire le PR ce soir.