RETEX - DomoMG - Une suite domotique sous Jeedom - EPISODE 2

En lisant, le sujet, je me pose la question suivante :
Sachant que maitriser tous les coins et recoins de Jeedom est déjà pas une tâche simple, le fait de réencapsuler beaucoup de config, ça rends pas les choses plus dures à maitriser ?

  • Une autre interface à apprendre
  • Un abstraction qui masque les concepts jeedom

Quand on voit qu’un simple scénario mal construit ça mets déjà à genoux le serveur, on peut avoir vite fait de plus voir le problème du tout en passant par cette interface, non ?

Les dangers de « adminer », on en parle par ici (et dans bien d’autres) :

Deplacer info entre 2 virtuels - Plugins / Programmation - Communauté Jeedom

Docker - Gestion de la base de donnée - Matériel Jeedom - Hardware / Docker DIY (Faire soi-même) - Communauté Jeedom

@kiboost n’exagérons rien, si je me souviens bien il était fournis avec Jeedom il y a quelques année … Et je suis sur que toi même tu l’utilises !!!
Je me demande d’ailleurs, qui ici, parmi les devs ne l’utilise pas !!!

Et pour en revenir à DomoMG, ceux qui éventuellement l’utiliserons, sont par définitions des users avertis, voir des devs, ce n’est pas, par définition, un plugin clefs en mains !!!

Et viré pour question de sécurité justement. Et non je ne l’utilise pas …

Après chacun fait ce qu’il veux sur son système, des trucs les plus simples au plus tordus :kissing_smiling_eyes:

C’est vrai que la question mérite d’être posée.

N’utilisant que peu de plugin de « confort », j’ai été amené à développer a peu près toutes les fonctions nécessaires à la domotique en laissant à Jeedom, qui le fait très bien (avec quelques plugin de protocole) le soin de gérer le moteur de communication.

Seulement on s’aperçoit très vite que chaque fonction à son panel de paramètres, difficilement accessible (script PHP, json ou autres) et que ces paramètres doivent être partagés par plusieurs fonction, exemple :

  • le chauffage déconne (script chauffage)
  • je dois envoyer un message au proprio (paramètres communication (éventuellement plusieurs) + coordonnées users)
  • Vérifier l’état de(s) passerelle de pilotage des équipements (paramètrages de maintenance)
  • Remettre en route la cheminée (paramètrages stock de bois :), recherche des allumettes … :slight_smile: )
  • etc …

Par exemple, il y a une heure @pifou m’a signalé que j’avais laissé un mdp en clair dans la class mg, mdp utilisé dans une bonne dizaine de fonctions, il m’a fallu moins de 10 secondes pour déplacer ce mdp dans la table générale de paramétrage et le rendre ainsi accessible facilement pour des modifs ultérieures.

Au début, j’avais mis en place un fichier .ini (doublé de fonction get… et set…) pour centraliser mes paramètres et les rendre accessible de partout. C’était mieux, mais pas très pratique au quotidien.

Comme j’utilise beaucoup les variables « tableaux » natives du PHP, l’idée m’est venue naturellement de créer une interface transparente pour les manipuler de manière confortable, transparente et sécurisé (ceinture et bretelles :slight_smile: )

TABULATOR en est à sa troisième version, et au fur et à mesure j’ai étendu son usage, le dernier concerne le paramétrage de mes widgets.

Exemple ce matin j’ai voulu augmenter de qq px l’espace au dessus des titres de certains widget (J’en ai plus de 80 sur mon design principal (écran 27 " :), mais pas toujours de la même valeur. Avec ce système je n’ai pas hésité est ça été réglé en 1- 2 mn.
image

Pour le coté apprentissage, il n’y en a pas, un tableau, tous le monde le comprends naturellement depuis Multiplan et Excel :slight_smile:

Par contre quand tu utilises 12 plugins tu te demandes vite à quel endroits tu dois gérer tel ou tel paramètre, et quand il faut faire une modif en série …

Coté sécurité, j’ai essayé de blinder avec deux systèmes de sauvegarde (BdD et disque)

Le dernier point que tu abordes avec raison est la charge système éventuelle.

La encore j’ai essayé d’alléger cette charge, traditionnellement, dès que l’on à besoin d’un paramètre on fait un appel en BdD (et cela des milliers de fois).
Avec mon système on charge un tableau de variables une seule fois au lancement du script.
Honnètement cela ne doit pas faire une baisse drastique du trafic, mais pour certaines routines … Peut être…

Et si je me réfère à ce forum, le besoin existe, il y a pléthore de sujet traitant de la copie de paramètres d’un plugin à un autre (les IP par exemple).

Si je me réfère à mon exploit j’ai 135 paramètres « généraux » MAIS x fois plus de paramètres dédiés (par pièce, par équipements, par users, par fonctionnalités) … quand on centralise on est impressionné par le résultat.

Mais le débat reste ouvert !!!

1 « J'aime »

Là ça m’intéresse, quand tu dis sécurité, tu veux dire vs des attaques extérieures ou les fonction d’Adminer qui partiraient en vrille et pèterais la BdD ???

Adminer, comme je suppose l’ensemble de tes outils, c’est clairement orienté développement, on utiliser adminer pour formatter une bdd, vider une table, mettre à jour tout et n’importe quoi, avec une syntaxe (SQL pour adminer, PHP pour ton framework) que tout le monde ne maitrise pas.

Au contraire, jeedom a vocation à donner une interface simple et intuitive - c’est pas non plus le système domotique le plus ‹ user friendly › mais on essaye - tu va sur le market, tu télécharge le plugin qui va bien, tu clic sur ‹ activer › et ça marche :slight_smile:

Du coup oui, le forum ici rassemble beaucoup de développeurs et utilisateurs confirmés, mais il ne faut pas oublier la majorité des utilisateurs, qui ont acheté la box smart de base clé en main et ne savent pas ( ou juste ne veulent pas ) y mettre les mains. Ils nous lisent aussi, et ça me semble normal de mettre les avertissements qui vont bien :wink: d’ailleurs, je suggère aussi de déplacer ce sujet dans une section plus adaptée ( programmation ? )

Ce type de sujet me fait progresser, il faut qu’il reste accessible au commun des mortels.

1 « J'aime »

+1, pourquoi ne pas le traiter comme un plugin ou jeedom en version bêta-> pas de support. Basta.

A remarquer que si adminer est proscrit par certain PuttY lui est recommandé par les mêmes, et pourtant … c’est de la dynamite !!! 3 sec montre en main pour péter une machine par inadvertance !!!
Franchement tu imagines Mr Michu au clavier de putty sans avoir peur ? Pourtant pas une discussion ici qui n’y fait référence à un moment ou un autre !

Les codes que je proposent ont pour but (ils sont documentés contrairement à ceux de Jeedom et aux coutume du logiciel libre) de permettre à quelqu’un d’à l’aise avec le code de mettre en œuvre sa propre solution perso rapidement sans se noyer dans le forum ou dans l’étude de class non documentée.

Tout cela est dans les premières lignes de ma comm’ sur le sujet.

Ca franchement … c’est vrai dans 5% des cas :), et dans la mesure ou le plugin est maintenu ! C’est la raison dailleurs qui fait que j’en utilise un minimum (je sais, je vais me faire haïr :frowning: )
Tapes Zwave dans la recherche du forum … ou « plugin obsolète », c’est instructif !

Autant le core, malgrès toutes les critiques que je lis ici et là est fiable et s’installe en un clic, autant les plugins …

Malheureusement ce que je propose est « hors cadre », destiné à des dev plus ou moins débutant voulant mettre en œuvre leur solution en un minimum de temps grâce à une boite à outils documentée traitant de l’ensemble des sujets.

Donc ni pour Mr Michu (sauf si il est passionné), ni pour les geek qui ne compte pas leurs temps.

Oui, j’ai la sensation d’avoir le c… entre dex strapontins, mais j’aurais adoré avoir cette boite à outils quand j’ai commencé la domotique …

Salut @m.georgein

Je ne vais pas rentrer dans certains débats stériles évoqués ici, car c’est bien la limite de la communication à l’écrit dans un forum, encore plus sur des questions où personnes n’a raison…

Je souhaitais juste laisser un mot d’encouragement. Je suis admiratif de ton travail, et friand de ce genre de contenu. Continue comme ça !

Je publie moi même mes travaux auprès de différentes communautés, et les vieux débats ou critiques sont souvent difficiles à encaisser, même après 20ans de don de son temps… Oui je vieillis :slight_smile: Je songe souvent à arrêter ces dons, et pourtant je continue :face_with_thermometer:

Merci pour le partage ! Et continue comme ça ! :+1:

Bonjour et bravo pour cette présentation.

Je viens de tester et tabulator reste vierge. Lorsque j’essai de charger il tente de lancer avec l’ip 192.168.2.196. J’imagine ton ip. Elle doit être en dur quelque part.
http://192.168.2.196/mg/tabulator/TAB_tabulator_POST.php

Ton fichier tabulator.html contient des ip en dur peut être est ce la cause. De même il y a ton api dedans.

Tu as tenté d’ouvrir directement tabulator.html qui est le fichier résultat … il n’aurait d’ailleurs pas du être présent sur le git :frowning:

Il faut en préalable copier comme je l’ai expliqué tous les fichiers nécessaires avant de lancer le script.
Par sécurité j’ai mis sur le github la dernière version des fichier de TABULATOR.

Merci pour ton retour. En fait je n’ai pas vraiment compris les étapes. Tu demandes de créer un script mais la capture montre un scénario. C’est ce qui me perds un peu

Simple problème définition, je parle bien de création d’un scénario de type « bloc code » dans le langage jeedomien.

Si tu arrives jusqu’à l’affichage du tableau tu peut charger les exemples de tab en en choisissant une via la liste déroulante et en cliquant sur le bouton 'restauration". En théorie si tous les fichiers ont été copiés cela devrait charger la table exemple en question.

Voila ce que j’obtiens dans le log du scénario :

[2021-02-27 09:40:06][SCENARIO] Start : Scenario lance manuellement.
[2021-02-27 09:40:06][SCENARIO] Exécution du sous-élément de type [action] : code
[2021-02-27 09:40:06][SCENARIO] Exécution d'un bloc code
[2021-02-27 09:40:06][SCENARIO] SP : getVar : Variable tabParams ==  **par defaut**
[2021-02-27 09:40:06][SCENARIO] =================================== CLASS MG - AVEC debug 4 : log =>  + INFO + ER_ROR +  WARNING + SP.===================================
[2021-02-27 09:40:06][SCENARIO] *** ERROR *** getParam : Le paramètre (system - pathRef) n'existe pas et aucune valeur par defaut !!!
[2021-02-27 09:40:06][SCENARIO] *** ERROR *** getParam : Le paramètre (system - persistence) n'existe pas et aucune valeur par defaut !!!
[2021-02-27 09:40:06][SCENARIO] SP : getTag : L'évaluation du tag a échoué ( #submit# => '#submit#' )
[2021-02-27 09:40:06][SCENARIO] SP : getTag : L'évaluation du tag a échoué ( #nomTab# => '#nomTab#' )
[2021-02-27 09:40:06][SCENARIO] SP : getTag : L'évaluation du tag a échoué ( #nbSegments# => '#nbSegments#' )
[2021-02-27 09:40:06][SCENARIO] SP : getTag : L'évaluation du tag a échoué ( #lngMessage# => '#lngMessage#' )
[2021-02-27 09:40:06][SCENARIO] INFO : ==========================================================================================================================================
[2021-02-27 09:40:06][SCENARIO] INFO : =============================================== Lancement direct avec Charge sur tabParams ===============================================
[2021-02-27 09:40:06][SCENARIO] INFO : ==========================================================================================================================================
[2021-02-27 09:40:06][SCENARIO] SP : getVar : Variable tabParams ==  **par defaut**
[2021-02-27 09:40:06][SCENARIO] SP : getVar : Variable tabTooltips ==  **par defaut**
[2021-02-27 09:40:06][SCENARIO] SP : getVar : Variable tabParams ==  **par defaut**
[2021-02-27 09:40:06][SCENARIO] INFO : ==========================================================================================================================================
[2021-02-27 09:40:06][SCENARIO] INFO : ======================================= Rechargement de la table 'tabParams' - Nombre de clé : 0 ========================================
[2021-02-27 09:40:06][SCENARIO] INFO : ==========================================================================================================================================
[2021-02-27 09:40:06][SCENARIO] INFO : .
[2021-02-27 09:40:06][SCENARIO] INFO : ==========================================================================================================================================
[2021-02-27 09:40:06][SCENARIO] INFO : ================================================== GENERATION DU TABULATOR DE tabParams ==================================================
[2021-02-27 09:40:06][SCENARIO] INFO : ==========================================================================================================================================
[2021-02-27 09:40:06][SCENARIO] *** ERROR *** message : Le contenu du message est absent !!!
[2021-02-27 09:40:06][SCENARIO] INFO : *********************************************************************
[2021-02-27 09:40:06][SCENARIO] *** ERROR *** message : Le contenu du message est absent !!!
[2021-02-27 09:40:06][SCENARIO] INFO : *********************************************************************
[2021-02-27 09:40:06][SCENARIO] SP : getTag : #IP# == 'IP'
[2021-02-27 09:40:06][SCENARIO] SP : getConfigJeedom : core / api ==> API
[2021-02-27 09:40:06][SCENARIO] SP : setVar : Variable tabTooltips ==>
[2021-02-27 09:40:06][SCENARIO] SP : setVar : Variable _htmlOK ==> 1
[2021-02-27 09:40:06][SCENARIO] Fin correcte du scénario

Et quand je vais sur l’url j’ai une erreur 404 le tabuation.html n’est pas créé

Le log devrait se terminer comme ça :

Chez toi on voit que le tag #IP# ne renvoie rien :frowning:
De même la lecture de l’api ne renvoie rien

Essaye par sécurité de reprendre l’ensemble des codes sur le github
Tu fais bien tes test sous avec un user qui à le statut d’administrateur ??
Autre point … majeur, si tu as un rep nommé ‹ sav_public › dans le rep ‹ tabulator › il FAUT le renommer ‹ sav › . C’est normalement bon sur les dernières versions du github :frowning:

Les tag ip et api renvoient les bonnes infos j’ai juste modifié dans le log pour ne pas les publier.
Je suis bien en admin.
J’ai pris les derniers répertoires de ton github.

Tu me rassures :slight_smile: