Comme annoncé, ce forum est passé en lecture seule au 1er janvier 2020. Désormais nous vous invitons à vous rendre sur notre nouvelle page communauté :
Image

A très bientôt !

Plugin Mode version du 2018-05-09

Naboleo
Actif
Messages : 746
Inscription : 20 janv. 2017, 09:57

Plugin Mode version du 2018-05-09

Message par Naboleo » 23 mars 2019, 17:34

Bonjour,

J'ai commencé à remplacer quelques éléments de ma config par le plugin mode. De ce fait j'en profite pour faire quelques retours :

1) Quand je duplique un "mode" qui contient des scénarios et des tags, le nom des scénario et l'action sont systématiquement "aucun" et "start" dans le nouveau mode...
Pour la duplication reste event/équipement ça fonctionne. Bug ouvert JEED-941
2 ) J'ai pas trouvé où sont les logs, j'ai pourtant bien basculé le plugin en "debug" et le fichier est toujours vide
3) Comme j'ai beaucoup les virtuels "centralisateurs de commandes" et que je trouve pas le visuel par défaut du mode pas à mon goût, j'ai tenté une expérience presque concluante :

un mode "mtmp" (vide car j'ai pour l'instant pas besoin de déclencher des actions)
mtmp.PNG
mtmp.PNG (45.21 Kio) Consulté 2215 fois
un virtuel"vtmp", qui reprends, les infos du mode "mtmp"
vtmp.PNG
vtmp.PNG (81.92 Kio) Consulté 2215 fois
Donc à l'usage, je clique dans mon bouton tmp1 de mon virtuel vtmp, ça active le mode tmp1, ça mets à jour le widget par défaut du mode et ensuite le valeur de "visutmp" de mon virtuel "vtmp".... Idem pour tmp2. C'est exactement ce que je veux
Le souci, c'est lors du refresh de la page, la valeur de visumtmp est à 0....C'est lié au nouveau mécanisme de refresh ?
Il y a-t-il une solution plus simple/élégante que
- d'ajouter une commande "event" dans le mode pour forcer le contenu de visutmp
- utiliser les pre-action/post actions des boutons pour lancer le mode (et laisser le fonctionnent similaire au toggle)

Merci pour vos idées
Pièces jointes
otmp.PNG
otmp.PNG (10.11 Kio) Consulté 2215 fois
Dernière édition par Naboleo le 24 mars 2019, 13:44, édité 1 fois.
Pi4/4Go +SSD 32Go (Wifi et bluetooth actifs) + Clé USB Z-Wave Everspring + rfxcom (RTS) + Google Home
7 Danfoss LC-13
2 velux module DIO
7 volets RTS
3 Sonoff
IFTTT
Capteur porte, de présence, et prise intelligente...

Naboleo
Actif
Messages : 746
Inscription : 20 janv. 2017, 09:57

Re: Plugin Mode version du 2018-05-09

Message par Naboleo » 24 mars 2019, 13:44

Edit : finalement mon souci ci-dessus est corrigé. Je suis reparti de 0 et ça marche. A priori, il faut bien attendre la totalité de la configuration pour sauvegarder (notamment les types d'info) sinon ça casse tout

Par contre j'ai trouver un autre bug, si on renomme un des états d'un mode, qui est lui-même utilisé dans un autre mode, alors on se retrouve avec un ancien #id# à la place de la commande renommée. Bug ouvert JEED-942
Pi4/4Go +SSD 32Go (Wifi et bluetooth actifs) + Clé USB Z-Wave Everspring + rfxcom (RTS) + Google Home
7 Danfoss LC-13
2 velux module DIO
7 volets RTS
3 Sonoff
IFTTT
Capteur porte, de présence, et prise intelligente...

Naboleo
Actif
Messages : 746
Inscription : 20 janv. 2017, 09:57

Re: Plugin Mode version du 2018-05-09

Message par Naboleo » 28 mars 2019, 12:33

Pour ceux que ça intéresse j'ai ajouté une petite gestion des log.
J'ai fait un PR sur github https://github.com/jeedom/plugin-mode/pull/10
En attendant, il suffit de remplacer la fonction "doAction" dans /var/www/html/plugins/mode/core/class/mode.class.php

Code : Tout sélectionner

	public function doAction($_mode, $_type, $_previousMode = '') {
		if (!is_array($this->getConfiguration('modes'))) {
			return;
		}
		if ($_previousMode == '') {
			$_previousMode = $this->getConfiguration('previousMode');
		}
		foreach ($this->getConfiguration('modes') as $key => $value) {
			if ($value['name'] != $_mode) {
				continue;
			}
			$txtmode='['.$this->getName().']['.$_type.']['.$_mode.']';
			log::add('mode', 'info','Lancement de '.$txtmode);
			
			$i=0;
			foreach ($value[$_type] as $action) {
				$i+= 1;
				$act=$action['cmd'];
				$txtact=$txtmode.'[#'.$i.']=> '.$act;
				if (isset($action['onlyIfMode']) && $action['onlyIfMode'] != 'all' && $action['onlyIfMode'] != $_previousMode) {
					log::add('mode', 'debug','*SKIP* '.$txtact.' car condition ['.$_mode.' != '.$action['onlyIfMode'].']');
					continue;
				}
				try {
					$options = array();
					if (isset($action['options'])) {
						$options = $action['options'];
					}
					scenarioExpression::createAndExec('action', $action['cmd'], $options);
					log::add('mode', 'info','*RUN* '.$txtact);
					if (is_array($options)) {
						foreach ($options as $key => $value) {
							if($key == 'enable'){
								continue;
							}else{
								log::add('mode', 'debug',$txtact.' -> ['.$key.'='.$value.']');
							}
						}
					}
				} catch (Exception $e) {
					log::add('mode', 'error', __('Erreur lors de l\'éxecution de ', __FILE__) . $action['cmd'] . __('. Détails : ', __FILE__) . $e->getMessage());
				}
			}
			log::add('mode', 'info','Fin de ['.$this->getName().']['.$_type.']['.$_mode.']');
			return;
		}
	}
Voilà à quoi ça ressemble

Code : Tout sélectionner

[2019-03-29 17:35:11][INFO] : Lancement de [TMP][inAction][mode1]
[2019-03-29 17:35:11][INFO] : Run [TMP][inAction][mode1][#1]=> log
[2019-03-29 17:35:11][DEBUG] : [TMP][inAction][mode1][#1]=> log -> [background=0]
[2019-03-29 17:35:11][DEBUG] : [TMP][inAction][mode1][#1]=> log -> [message=blabla1]
[2019-03-29 17:35:11][DEBUG] : [TMP][inAction][mode1][#2]=> scenario SKIPPED car condition [mode1 != mode2]
[2019-03-29 17:35:11][INFO] : Fin de [TMP][inAction][mode1]
[2019-03-29 17:36:59][INFO] : Lancement de [TMP][inAction][mode1]
[2019-03-29 17:36:59][INFO] : RUN [TMP][inAction][mode1][#1]=> log
[2019-03-29 17:36:59][DEBUG] : [TMP][inAction][mode1][#1]=> log -> [background=0]
[2019-03-29 17:36:59][DEBUG] : [TMP][inAction][mode1][#1]=> log -> [message=blabla1]
[2019-03-29 17:36:59][DEBUG] : SKIP [TMP][inAction][mode1][#2]=> scenario car condition [mode1 != mode2]
[2019-03-29 17:36:59][INFO] : Fin de [TMP][inAction][mode1]
[2019-03-29 17:37:23][INFO] : Lancement de [TMP][inAction][mode1]
[2019-03-29 17:37:23][INFO] : *RUN* [TMP][inAction][mode1][#1]=> log
[2019-03-29 17:37:23][DEBUG] : [TMP][inAction][mode1][#1]=> log -> [background=0]
[2019-03-29 17:37:23][DEBUG] : [TMP][inAction][mode1][#1]=> log -> [message=blabla1]
[2019-03-29 17:37:23][DEBUG] : *SKIP* [TMP][inAction][mode1][#2]=> scenario car condition [mode1 != mode2]
[2019-03-29 17:37:23][INFO] : Fin de [TMP][inAction][mode1]

Pi4/4Go +SSD 32Go (Wifi et bluetooth actifs) + Clé USB Z-Wave Everspring + rfxcom (RTS) + Google Home
7 Danfoss LC-13
2 velux module DIO
7 volets RTS
3 Sonoff
IFTTT
Capteur porte, de présence, et prise intelligente...

Répondre

Revenir vers « [Plugin Officiel] Mode »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité