Page 2 sur 5

Re: Retrouver le nom des commandes supprimées

Publié : 28 janv. 2018, 19:16
par loic
Oui ca serait possible mais j'ai pas envie de passer du temps a le faire désolé j'ai enormement de chose a faire j'ai environ 1 ans de boulot devant pour jeedom et donc pas de temps a passer la dessus alors que la demande est vraiment faible pour ce genre de fonctionnalité.

Re: Retrouver le nom des commandes supprimées

Publié : 29 janv. 2018, 15:54
par romanais
tot0f a écrit :
28 janv. 2018, 18:10
Salut Loic,
Et est-ce qu’un bouton d’export au format txt des id et leurs commandes ne serait pas possible ? Libre à chacun de le faire et sauvegarder le fichier eux-même ;)

EDIT du 01/02/18 : voir posts un peu plus bas, méthode plus simple proposée avec un script.

Salut, un truc testé vite fait qui pourrait dégrossir ta recherche en cas de commandes orphelines (avec ton idée d'export des id/noms des commandes).

Je récupère le script "Adminer".
Je le pose sur mon RPi (par ftp, ssh, plugin "Outil développement", comme tu préfères), dans le dossier "plugins/script/core/ressources/".
Tu peux aussi utiliser le plugin "Script", créer un nouveau script php, et faire un copier/coller du code d"adminer-4.5.0.php" à l'intérieur.
Ensuite, tu récupères l'identifiant et mot de passe de la base de données : "Configuration / OS/DB"
Tu accèdes à ta page https://ip_jeedom/plugins/script/core/ressources/adminer.php
Tu te connectes avec l'identifiant/mot de passe récupérés un peu plus tôt.
Une fois connecté, tu choisis la base de données (jeedom) avec le menu déroulant.
Tu cliques sur : Requête SQL
Et tu tapes : select id,eqLogic_id,eqType,logicalId,name from cmd
Tu exécutes la requête.
Tout en bas de la page, tu as un lien "Exporter".
Tu choisis par exemple : Enregistrer/CSV;
Puis tu exportes.
Tu peux ouvrir ce fichier sous excel (ou autre tableur).
Tu auras un joli fichier avec 5 colonnes.
Conserve-le (et refais-le régulièrement, dès que tu ajoutes des équipements/commandes, etc surtout).
De cette façon, le jour où tu te retrouves avec des commandes orphelines (#2612# par exemple), tu pourras lancer une recherche dans ces fichiers, pour voir à quoi correspondait cet ID.

Un exemple concret :
J'ai une télécomande Zwave, sur laquelle je créé une nouvelle commande (Test_id_scene)
1.jpg
1.jpg (23.44 Kio) Consulté 5088 fois
Cette commande porte l'ID "2809"
3.jpg
3.jpg (12.75 Kio) Consulté 5088 fois
Ensuite, je créé un nouveau scénario, avec cette commande comme déclencheur.
2.jpg
2.jpg (12.56 Kio) Consulté 5088 fois

Je fais la manip' avec adminer.php pour avoir une sauvegarde de toutes ces modifications.
Et j'archive mon .csv avec la date du jour.

Re: Retrouver le nom des commandes supprimées

Publié : 29 janv. 2018, 15:54
par romanais
1 mois plus tard, il se trouve que je supprime cette télécommande en panne.
Bim, dans mon scénario, je tombe sur cette commande inconnue
4.jpg
4.jpg (16.62 Kio) Consulté 5088 fois
Et je la retrouve bien sûr dans le menu "Analyses/Equipements/Commandes orphelines"
5.jpg
5.jpg (15.86 Kio) Consulté 5088 fois
J'ouvre alors mon (ou mes) fichier(s) csv. Et je cherche la valeur "2809".
Et je trouve : 2809 304 openzwave 1.91.2 Test_id_scene

Je sais donc que cette commande se trouvait quelque part dans le plugin Zwave, avec le nom Test_id_scene.
Edit : 02.02.2018 : Amélioration pour ce point avec un script un peu plus loin dans les posts.
On retrouve à présent le nom de l'équipement concerné également.

C'est pour ça que je parlais de "dégrossir", car ce n'est pas encore une science exacte avec ma façon de faire.
D'où l'intérêt aussi de mettre des noms de commandes parlants.

Pour d'autres exemples, le résultat est carrément plus parlant !
Pour une commande ajoutée sur le plugin "Sonybravia", j'ai ce résultat sauvegardé dans mon export de la base, donc bien plus parlant :
2632 323 sonybravia select_source Wii
Le jour où j'ai #2632# en commande orpheline, je saurais d'où ça vient !
Voilà mes 2 cts :!:

Re: Retrouver le nom des commandes supprimées

Publié : 01 févr. 2018, 00:26
par zeftp
loic a écrit :
28 janv. 2018, 19:16
(...) alors que la demande est vraiment faible pour ce genre de fonctionnalité.
Apparemment y'a quand même plusieurs personnes intéressées par cette fonctionnalité.
On pourrait peut être mettre en système de vote ou de like sur des demandes de ce genre avec la complexité associée (qui ne semble pas énorme ici) afin de répondre au mieux à la communauté?

Bénévole mais quand même associé dans une société qui fait un certain chiffre d'affaires ;-)

Re: Retrouver le nom des commandes supprimées

Publié : 01 févr. 2018, 08:34
par loic
On pourrait oui mais ça demanderai du temps à être mis en place et c'est pas très intéressant à faire.
C'est pas pck ya 20 personnes qui demande une fonctionnalité que ça fait beaucoup faut ramener au nombres d'utilisateur total.

Pour moi un bénévole c'est quelqu'un qui fournis un travail sans avoir aucune contrepartie ce qui est exactement mon cas.

Re: Retrouver le nom des commandes supprimées

Publié : 01 févr. 2018, 11:23
par romanais
EDIT : Obsolète - Jeedom permet d'avoir cette info nativement à présent, et au pire, un scénario dans les pages suivantes fait le job.
Ce script fait semble-t-il planter le plugin "Script" à présent.

Salut, bon voici une méthode plus simple pour générer un csv avec les infos citées plus haut.

Je commence par créer un nouveau script.
id1.jpg
id1.jpg (57.66 Kio) Consulté 5043 fois
id2.jpg
id2.jpg (48.75 Kio) Consulté 5043 fois
Voici le contenu de script : (indiquez le mot de passe mysql de votre installation).
A récupérer dans le menu "Configuration/>_OS/DB"
id3.jpg
id3.jpg (66.62 Kio) Consulté 5043 fois

Code : Tout sélectionner

<?php
// Variables de connexion à la base des données 
$hostname = "localhost"; 
$user = "jeedom"; 
$password = "MOT_DE_PASSE_MYSQL"; //mot de passe de connexion à la base de données
$database = "jeedom"; 
$port = 3306; 

// Nom du fichier CSV exporté
$csv_filename = 'Mémo_ID_commandes_'.date('Y-m-d').'.csv'; 

// Nom de la table à exporter 
$db_record = 'cmd p';
//jointure pour récupérer le nom de l'équipement
$inner = 'INNER JOIN eqLogic j';
$on = 'ON j.id = p.eqLogic_id';

//champs à exporter
$quoi = 'p.id id_commande, p.eqLogic_id id_equipement, j.name nom_equipement, p.eqType plugin, p.name nom_commande, p.logicalId commande';
 
// En option : conditionnels de la requête d'export (WHERE, ORDER BY, LIMIT, etc.) 
$where = '';
//tri par plugin/nom équipement - ordre alphabétique
$order = 'ORDER BY p.eqType, j.name';
   
// Connexion à la base 
$conn = mysqli_connect($hostname, $user, $password, $database, $port); 
if (mysqli_connect_errno()) { 
    die("Echec de la connexion : " . mysqli_connect_error()); 
} 

//gestion des accents
mysqli_set_charset($conn, "latin1");
 
// Création d'un fichier CSV vide 
$csv_export = ''; 
 
// Extraction des données de la table 
$query = mysqli_query($conn, "SELECT ".$quoi." FROM ".$db_record." ".$inner." ".$on." ".$where." ".$order); 
$field = mysqli_field_count($conn); 
 
// Création de la ligne des titres (noms des champs) 
for($i = 0; $i < $field; $i++) { 
    $csv_export.= mysqli_fetch_field_direct($query, $i)->name.';'; 
} 
 
// Nouvelle ligne (semble fonctionner avec Linux & Windows servers) 
$csv_export.= ' 
'; 
 
// Boucle des tuples pour remplir le fichier 
while($row = mysqli_fetch_array($query)) { 
    for($i = 0; $i < $field; $i++) { 
        $csv_export.= '"'.$row[mysqli_fetch_field_direct($query, $i)->name].'";'; 
    } 
    $csv_export.= ' 
'; 
} 
 
// Export des données au format CSV et appel du fichier créé pour téléchargement 
header("Content-type: text/x-csv"); 
header("Content-Disposition: attachment; filename=".$csv_filename.""); 
echo($csv_export);
?>
Depuis votre navigateur, en appelant directement la page https://IP_JEEDOM/plugins/script/core/ressources/backup_id_commandes_supprimees.php
Un fichier .csv va être généré et proposé au téléchargement.

Cf post suivant pour la suite.

Re: Retrouver le nom des commandes supprimées

Publié : 01 févr. 2018, 11:23
par romanais
Sur mon dashboard j'ai donc cette tuile, ce qui me permet de cliquer sur "Export csv" pour lancer le téléchargement de mon fichier csv (lorsque je modifie des commandes/équipements sur mon installation notamment).
export1.jpg
export1.jpg (12.16 Kio) Consulté 5041 fois
Pour cette tuile, j'ai fait une petite personnalisation de l'affichage.

Cliquez sur la roue crantée.
export2.jpg
export2.jpg (52.23 Kio) Consulté 5041 fois
Onglet "Code".
Cochez "Activer la personnalisation du widget".
export3.jpg
export3.jpg (80.84 Kio) Consulté 5034 fois
Copiez ce code (à adapter selon l'emplacement et le nom de votre script).

Code : Tout sélectionner

<div class="tooltips cmd cmd-widget" data-type="info" data-subtype="string" data-cmd_id="#id#" data-cmd_uid="#uid#" data-version="#version#" style="display: block;">
<a href="./plugins/script/core/ressources/backup_id_commandes_supprimees.php" target="_blank">Export csv</a>
</div>
Puis enregistrez.

Re: Retrouver le nom des commandes supprimées

Publié : 01 févr. 2018, 11:29
par romanais
A présent, je clique sur le lien, le fichier est généré et proposé au téléchargement.
Je peux l'ouvrir ou l'enregistrer au choix (le nom du fichier est modifiable dans le script plus haut).
csv1.jpg
csv1.jpg (55.65 Kio) Consulté 5040 fois
Si j'ouvre, j'ai ça à l'écran :
csv2.jpg
csv2.jpg (77.93 Kio) Consulté 5040 fois
Quand j'ai une commande orpheline, je cherche le numéro dans la 1ère colonne de mon fichier excel (CTRL+F).
Et je retrouve l'exemple de ma source pour la Wii sur ma télé Sony (exemple qui était pris un peu plus haut).

Re: Retrouver le nom des commandes supprimées

Publié : 01 févr. 2018, 22:02
par zeftp
Merci pour le partage Romanais.

Re: Retrouver le nom des commandes supprimées

Publié : 02 févr. 2018, 00:39
par glenan
Je dirais même plus, cent mille fois merci
Tuto impeccable, la preuve, ça a fonctionné du premier coup !!

[EDIT]

Pour un import facile dans LibreOffice utiliser le jeu de caractères :
Europe de l'Est windows 1250/WinLatin 2
Ca permet d'afficher correctement les caractères accentués de la langue française

Re: Retrouver le nom des commandes supprimées

Publié : 02 févr. 2018, 01:28
par meute
100 fois merci Romanais, tuto au top et fonctionnalité qui peut sauver la mise dans bien des cas !!! Je l'ai implémenté direct tellement c'est simple et utile.
Je suivais ce post depuis le début car cette possibilité de retrouver le nom de la commande associée à un ID orphelin m’intéressait également beaucoup.

Manque juste le nom de l'équipement, logiquement il devrait être possible d'aller le rechercher aussi non ?

Re: Retrouver le nom des commandes supprimées

Publié : 02 févr. 2018, 08:15
par znation
Un grand merci j'implemente cela rapidement car ca peut vraiment aider !

Re: Retrouver le nom des commandes supprimées

Publié : 02 févr. 2018, 09:56
par romanais
:oops: Ça fait super plaisir que ça serve et d'avoir vos retours !

@Glenan : J'ai testé Libreoffice du coup, mais je n'ai pas eu de souci de caractères accentués avec ce qui est proposé par défaut.
libreoffice.jpg
libreoffice.jpg (196.87 Kio) Consulté 4995 fois
@meute : Bien vu ! Je n'y avais pas pensé, voici le script modifié pour prendre en compte ta remarque. C'est bien mieux en effet !
Voici le nouveau code à utiliser : (pensez à indiquer votre mot de passe MYSQL).

Code : Tout sélectionner

<?php
// Variables de connexion à la base des données 
$hostname = "localhost"; 
$user = "jeedom"; 
$password = "MOT_DE_PASSE_MYSQL"; //mot de passe de connexion à la base de données
$database = "jeedom"; 
$port = 3306; 

// Nom du fichier CSV exporté
$csv_filename = 'Mémo_ID_commandes_'.date('Y-m-d').'.csv'; 

// Nom de la table à exporter 
$db_record = 'cmd p';
//jointure pour récupérer le nom de l'équipement
$inner = 'INNER JOIN eqLogic j';
$on = 'ON j.id = p.eqLogic_id';

//champs à exporter
$quoi = 'p.id id_commande, p.eqLogic_id id_equipement, j.name nom_equipement, p.eqType plugin, p.name nom_commande, p.logicalId commande';
 
// En option : conditionnels de la requête d'export (WHERE, ORDER BY, LIMIT, etc.) 
$where = '';
//tri par plugin/nom équipement - ordre alphabétique
$order = 'ORDER BY p.eqType, j.name';
   
// Connexion à la base 
$conn = mysqli_connect($hostname, $user, $password, $database, $port); 
if (mysqli_connect_errno()) { 
    die("Echec de la connexion : " . mysqli_connect_error()); 
} 

//gestion des accents
mysqli_set_charset($conn, "latin1");
 
// Création d'un fichier CSV vide 
$csv_export = ''; 
 
// Extraction des données de la table 
$query = mysqli_query($conn, "SELECT ".$quoi." FROM ".$db_record." ".$inner." ".$on." ".$where." ".$order); 
$field = mysqli_field_count($conn); 
 
// Création de la ligne des titres (noms des champs) 
for($i = 0; $i < $field; $i++) { 
    $csv_export.= mysqli_fetch_field_direct($query, $i)->name.';'; 
} 
 
// Nouvelle ligne (semble fonctionner avec Linux & Windows servers) 
$csv_export.= ' 
'; 
 
// Boucle des tuples pour remplir le fichier 
while($row = mysqli_fetch_array($query)) { 
    for($i = 0; $i < $field; $i++) { 
        $csv_export.= '"'.$row[mysqli_fetch_field_direct($query, $i)->name].'";'; 
    } 
    $csv_export.= ' 
'; 
} 
 
// Export des données au format CSV et appel du fichier créé pour téléchargement 
header("Content-type: text/x-csv"); 
header("Content-Disposition: attachment; filename=".$csv_filename.""); 
echo($csv_export);
?>
Si je reprends mon exemple de la commande supprimée #2632#, et que je fais une recherche dans le fichier excel (1ère colonne), j'ai ça :
wii.jpg
wii.jpg (144.54 Kio) Consulté 4995 fois

Re: Retrouver le nom des commandes supprimées

Publié : 02 févr. 2018, 10:12
par breizh22
Grand merci @romanais, super utile pour moi aussi ;)

Edit, j'ai fait la modif du script ci-dessus, en effet, c'était un manque et là, c'est top, encore merci :D

Re: Retrouver le nom des commandes supprimées

Publié : 02 févr. 2018, 10:50
par Claude69
Super
Fonctionne nickel.
Merci

Re: Retrouver le nom des commandes supprimées

Publié : 02 févr. 2018, 11:22
par meute
Là c'est top de chez top, rien à redire !

Merci, je viens de sauver mes 2454 commandes ...

Re: Retrouver le nom des commandes supprimées

Publié : 02 févr. 2018, 11:25
par romanais
2x plus que moi :o

Re: Retrouver le nom des commandes supprimées

Publié : 02 févr. 2018, 11:46
par meute
Oui, et rien d'inutilisé ... j'ai développé une grosse install depuis mes débuts au mois d’août, 100% domotisée maintenant ... même un Nuki sur la porte d'entrée depuis 2 jours.

Puis je travail beaucoup avec des virtuels d'interfaçage entre les équipements réels et leur utilisation :
- Pour grouper des équipements (Double volet roulants sur baie vitrée par exemple avec 2 moteurs et donc 2 FGR-222 à piloter comme un seul)
- Pour splitter un équipement (FDG-212 en 2 point d'éclairages distincts par exemple)
- Pour rendre plus flexible la mise en page à l'affichage
- Pour pouvoir y faire facilement des calculs, des commandes combinées et des retours d'états combinés
- Pour qu'en cas de remplacement d'un équipement par un autre modèle (Présence fibaro vers présence Xiaomi par exemple) la réattribution des commandes se limite au virtuel d'interfaçage.
- Pour qu'en cas de commandes orphelines elles soient limitées au virtuel d'interfaçage, car un virtuel ça "meurt" jamais et du coup la réattribution des commandes est grandement facilitée et pas dispersée un peu partout.
- ...

Donc ça dédouble quelques commandes quand-même.

Suis sûr que même Loic va implémenter ton script ... ca charge pas jeedom et ça peut vraiment être utile ... n'est ce pas Loic ? :mrgreen:
Ca mériterais presque une place dans les HowTo de la doc officielle, comme ça rien à maintenir niveau code et tout le monde à accès à l'information pour l’implémenter si besoin.

Re: Retrouver le nom des commandes supprimées

Publié : 02 févr. 2018, 17:42
par breizh22
Petite question, comment faire à votre avis pour que je puisse faire tous les jours un backup automatique de ce fichier commande_id sur mon serveur ? Comme le backup de Jeedom en fait, merci à vous.

Re: Retrouver le nom des commandes supprimées

Publié : 02 févr. 2018, 18:20
par Bosquetia
modifier le script pour sauvegarder le fichier sur un partage samba...
Mais tous les jours ça me parait beaucoup