Ce Forum passera en lecture seule en janvier 2020
Image
Merci de vous rendre sur https://community.jeedom.com maintenant pour vos prochains postes ;)

Retrouver le nom des commandes supprimées

Avatar de l’utilisateur
breizh22
Actif
Messages : 1318
Inscription : 10 oct. 2015, 17:35

Re: Retrouver le nom des commandes supprimées

Message par breizh22 » 02 févr. 2018, 18:39

Merci, je vais essayer. Oui c'est vrai que tous les jours, c'est beaucoup, mdr. Une fois par semaine sera bien.
HP Gen 8 / OMV4 sur SSD / Jeedom 3.3.37 VM Debian 9
RFLink - Sondes Oregon THN 132 N / THGR 122 NX / THGR 810 / THC238 - Prises DIO/Dedra/IDK.
Orvibo AllOne et S20 - Onduleur APC Back-UPS ES 700VA
Écosystème xiaomi - Dash buttons - GHome et mini.

Bosquetia
Actif
Messages : 6783
Inscription : 10 mai 2016, 07:54

Re: Retrouver le nom des commandes supprimées

Message par Bosquetia » 02 févr. 2018, 18:46

ben même pas, tu sauvegardes une fois mais si tu ne fais pas de changements ou de suppression, ça sert à rien...

romanais
Actif
Messages : 1999
Inscription : 21 août 2014, 21:36
Localisation : Drôme

Re: Retrouver le nom des commandes supprimées

Message par romanais » 02 févr. 2018, 18:50

Salut, dans ce cas, on va plutôt utiliser le script suivant (légère modification pour générer le fichier .csv et le stocker directement au même endroit que le script de backup, avec un nom fixe, de ce façon il sera écrasé à chaque lancement de la sauvegarde, et tes sauvegardes "Jeedom" contiendront toujours la dernière version du fichier).

Code : Tout sélectionner

<?php

// Variables de connexion à la base des données 
$hostname = "localhost"; 
$user = "jeedom"; 
$password = "MOT DE PASSE MYSQL"; 
$database = "jeedom"; 
$port = 3306; 

// Nom du fichier CSV exporté
$csv_filename = 'Memo_ID_commandes.csv'; //nom unique - sera écrasé à chaque lancement du script

// 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.= ' 
'; 
} 

$fp=fopen($csv_filename,"w" ); // ouverture du fichier 
fputs($fp,$csv_export); // enregistrement des données dans le fichier 
fclose($fp);
?>
Ensuite, tu peux faire un scénario pour lancer la sauvegarde quand tu veux.
Tu crées un scénario planifié à ton goût, et tu utilises juste un bloc 'code' contenant ça : (url vers ton script à adapter)

Code : Tout sélectionner

//url du script de sauvegarde
$url="http://IP_JEEDOM/plugins/script/core/ressources/backup_id_commandes_supprimees2.php";
 
// Tableau contenant les options de téléchargement
$options=array(
      CURLOPT_URL            => $url, // Url cible (l'url la page que vous voulez télécharger)
      CURLOPT_RETURNTRANSFER => true, // Retourner le contenu téléchargé dans une chaine (au lieu de l'afficher directement)
      CURLOPT_HEADER         => false // Ne pas inclure l'entête de réponse du serveur dans la chaine retournée
);
 
// Création d'un nouvelle ressource cURL
$CURL=curl_init();
 
      // Configuration des options de téléchargement
      curl_setopt_array($CURL,$options);
 
      // Exécution de la requête
      $content=curl_exec($CURL);      // Le contenu téléchargé est enregistré dans la variable $content. Libre à vous de l'afficher.
 
// Fermeture de la session cURL
curl_close($CURL);
Par contre, perso, je préfère le faire manuellement quand je touche à mon installation, comme ça pas besoin d'aller piocher dans une sauvegarde complète de Jeedom.
Avec une sauvegarde manuelle, tu n'as que les fichiers strictement nécessaires.
Si je trouve une commande orpheline, j'aurai peu de fichiers à contrôler (et je peux tous les conserver, contrairement aux backup Jeedom qui tournent car ça prend de la place).
En sauvegardant tous les jours, quand tu trouveras une commande orpheline, bon courage pour trouver le bon fichier csv contenant toujours la commande ;-)
Merci à toute l'équipe pour le taf

Mon matériel

meute
Actif
Messages : 1102
Inscription : 26 août 2017, 11:07
Localisation : Belgique

Re: Retrouver le nom des commandes supprimées

Message par meute » 02 févr. 2018, 19:23

romanais a écrit :
02 févr. 2018, 18:50

Par contre, perso, je préfère le faire manuellement quand je touche à mon installation, comme ça pas besoin d'aller piocher dans une sauvegarde complète de Jeedom.
Avec une sauvegarde manuelle, tu n'as que les fichiers strictement nécessaires.
Si je trouve une commande orpheline, j'aurai peu de fichiers à contrôler (et je peux tous les conserver, contrairement aux backup Jeedom qui tournent car ça prend de la place).
En sauvegardant tous les jours, quand tu trouveras une commande orpheline, bon courage pour trouver le bon fichier csv contenant toujours la commande ;-)
+1 surtout qu'avec une rotation de sauvegarde ou même une purge manuelle d'une multitude de fichiers si tu n'as pas remarqué une commande orpheline assez vite tu risque de perdre la trace.
Jeedom VM ESXI sur NUC
Ilot I/O Modbus Wago Z-Wave (11 volets,prises,présences) + RFXCom (sondes T°+RH, prises)
Pont Hue et une vingtaine d'ampoules,une flopée de Xiaomi aquara, Harmony Elite
8 Google Home et un PC tactile All-In accroché au mur

Avatar de l’utilisateur
breizh22
Actif
Messages : 1318
Inscription : 10 oct. 2015, 17:35

Re: Retrouver le nom des commandes supprimées

Message par breizh22 » 02 févr. 2018, 19:45

Merci à tous pour les réponses. En effet, vos argumentations sont convaincantes et réalistes. Merci aussi pour les exemples de scripts, ça m'aide bien pour comprendre. :) :D
HP Gen 8 / OMV4 sur SSD / Jeedom 3.3.37 VM Debian 9
RFLink - Sondes Oregon THN 132 N / THGR 122 NX / THGR 810 / THC238 - Prises DIO/Dedra/IDK.
Orvibo AllOne et S20 - Onduleur APC Back-UPS ES 700VA
Écosystème xiaomi - Dash buttons - GHome et mini.

extrapitou
Actif
Messages : 1332
Inscription : 27 juin 2015, 21:53
Localisation : Dijon

Re: Retrouver le nom des commandes supprimées

Message par extrapitou » 03 févr. 2018, 09:24

Excusez la question de noob mais je n'ai jamais touché a un script de ma vie :roll: :roll:

Donc apres avoir passé une heure a comprendre que le script adminer-4.5.0.php copié dans le repertoire /ressources devait être renommé en backup_id_commandes_supprimees.php, je ne comprends pas ou je dois mettre le code

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 le met a la suite de

Code : Tout sélectionner

/var/www/html/plugins/script/core/ressources/backup_id_commandes_supprimees.php
lors de la sauvegarde, j'ai un message :

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at webmaster@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.


Merci d'avance :)
Mon Matos

Mon Blog où vous trouverez des astuces et tutos Tasker/Jeedom
Mon alarme sous Jeedom
Tuto pour la Gestion de la présence

meute
Actif
Messages : 1102
Inscription : 26 août 2017, 11:07
Localisation : Belgique

Re: Retrouver le nom des commandes supprimées

Message par meute » 03 févr. 2018, 09:34

T'as en effet pas tout suivi et rien compris ...

Commence par là et oublie tout ce qui est avant ce post : viewtopic.php?f=132&t=31663&start=20#p580373
Jeedom VM ESXI sur NUC
Ilot I/O Modbus Wago Z-Wave (11 volets,prises,présences) + RFXCom (sondes T°+RH, prises)
Pont Hue et une vingtaine d'ampoules,une flopée de Xiaomi aquara, Harmony Elite
8 Google Home et un PC tactile All-In accroché au mur

romanais
Actif
Messages : 1999
Inscription : 21 août 2014, 21:36
Localisation : Drôme

Re: Retrouver le nom des commandes supprimées

Message par romanais » 03 févr. 2018, 09:35

Salut, oups petit mélange des 2 méthodes, oublie celle avec adminer.php et attaque là ;-)

viewtopic.php?p=580373#p580373
Merci à toute l'équipe pour le taf

Mon matériel

extrapitou
Actif
Messages : 1332
Inscription : 27 juin 2015, 21:53
Localisation : Dijon

Re: Retrouver le nom des commandes supprimées

Message par extrapitou » 03 févr. 2018, 09:55

Lol pas taper :)

Ok merci pour la précision je teste ca tout a l'heure, mais en gros c'est ce que je pense avoir fait au debut (parce que j'avais pas lu le debit du topic) et j'avais aussi le message en rouge "error internal......"



Envoyé depuis mon Mobicarte (Si Si jvous jure !!!)

Mon Matos

Mon Blog où vous trouverez des astuces et tutos Tasker/Jeedom
Mon alarme sous Jeedom
Tuto pour la Gestion de la présence

romanais
Actif
Messages : 1999
Inscription : 21 août 2014, 21:36
Localisation : Drôme

Re: Retrouver le nom des commandes supprimées

Message par romanais » 03 févr. 2018, 10:19

Ré-essaie ;-)
Merci à toute l'équipe pour le taf

Mon matériel

extrapitou
Actif
Messages : 1332
Inscription : 27 juin 2015, 21:53
Localisation : Dijon

Re: Retrouver le nom des commandes supprimées

Message par extrapitou » 03 févr. 2018, 10:52

non toujours INTERNAL SERVER ERROR.

Du coup j'ai essayé en téléchargeant notepad++ de créer un script "backup_id.php" et faire un c/c du code, et de poser le script dans le répertoire ressources via "outil de developpement"

et dans jeedom j'ai créer le script avec : /var/www/html/plugins/script/core/ressources/backup_id.php

et la ça marche c'est cool :)

Je ne sais pas pourquoi via le plugin script ca n'a pas marché, ca restera un mystère :)

Merci en tout cas :)

J'aurais appris a faire une requete SQL sur Jeedom aujourd'hui :D
Mon Matos

Mon Blog où vous trouverez des astuces et tutos Tasker/Jeedom
Mon alarme sous Jeedom
Tuto pour la Gestion de la présence

romanais
Actif
Messages : 1999
Inscription : 21 août 2014, 21:36
Localisation : Drôme

Re: Retrouver le nom des commandes supprimées

Message par romanais » 03 févr. 2018, 11:57

Curieux mais tant mieux si tu t'en es sorti au final (ne bidouille pas trop avec sql sur ta box de production ;-)
Merci à toute l'équipe pour le taf

Mon matériel

glenan
Actif
Messages : 1478
Inscription : 08 mai 2017, 21:38
Localisation : Bretagne

Re: Retrouver le nom des commandes supprimées

Message par glenan » 03 févr. 2018, 14:05

romanais a écrit :
02 févr. 2018, 09:56
: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.
Je confirme, dans LibreOffice, avec le jeu de caractères Latin2 il subsiste quelques accents non pris en compte.
Latin1 me semble parfait.

Mais attention, le jeu de caractères par défaut dans LibreOffice n'est pas forcément le même chez tout le monde.
Dernière édition par glenan le 03 févr. 2018, 14:43, édité 1 fois.
Jeedom Smart Z-Wave+ & RFXCOM - NAS Syno DS415+
1 BROADLINK MP1 / Gestion aquarium
4 Roller Shutter 2 - 3 Door/Windows Sensor 2 FGDW-002 - 1 Dimmer 2 FGD-212 - Bypass 2 FGB-002 - 2 FGWPE/F Wall Plug Gen5 - M. Sensor FGMS-001 - Oregon RAR502

glenan
Actif
Messages : 1478
Inscription : 08 mai 2017, 21:38
Localisation : Bretagne

Re: Retrouver le nom des commandes supprimées

Message par glenan » 03 févr. 2018, 14:41

extrapitou a écrit :
03 févr. 2018, 09:24
Excusez la question de noob mais je n'ai jamais touché a un script de ma vie :roll: :roll:

Donc apres avoir passé une heure a comprendre que le script adminer-4.5.0.php copié dans le repertoire /ressources devait être renommé en "backup_id_commandes_supprimees.php", je ne comprends pas ou je dois mettre le code
Pas d'adminer utilise plutôt un outil comme
https://winscp.net/eng/docs/lang:fr?#ut ... ign=5.11.3
protocole sftp port 22

Il faut se logguer avec identifiant root afin d'avoir les droits en écriture.

Dans les explications de Romanais, on remarque que l'équipement script créé fait référence (dans le champ requête) à un fichier php :
/var/www/html/plugins/script/core/ressources/backup_id_commandes_supprimees.php

C'est bien évidemment ce fichier php qui doit contenir le script fourni ici.
Si tu conserves le même nom de fichier que romanais (backup_id_commandes_supprimees.php), tu fais un copier coller du script dans un fichier texte "backup_id_commandes_supprimees.txt" dont tu renommes l'extension en php.
ce fichier php doit être ensuite copié dans le bon dossier /var/www/html/plugins/script/core/ressources/ à l'aide de winscp (ou tout autre outil).

Un glisser déplacer du fichier php sous windows, avec winscp fonctionne parfaitement, c'est donc simple à copier dans jeedom avec cet outil.
Jeedom Smart Z-Wave+ & RFXCOM - NAS Syno DS415+
1 BROADLINK MP1 / Gestion aquarium
4 Roller Shutter 2 - 3 Door/Windows Sensor 2 FGDW-002 - 1 Dimmer 2 FGD-212 - Bypass 2 FGB-002 - 2 FGWPE/F Wall Plug Gen5 - M. Sensor FGMS-001 - Oregon RAR502

extrapitou
Actif
Messages : 1332
Inscription : 27 juin 2015, 21:53
Localisation : Dijon

Re: Retrouver le nom des commandes supprimées

Message par extrapitou » 03 févr. 2018, 16:25

Ah mais ok dc c'est bien ce que j'ai fais au final sans savoir que c'était comme ca qu'il fallait faire :)

Merci pour les précisions.

Envoyé depuis mon Mobicarte (Si Si jvous jure !!!)

Mon Matos

Mon Blog où vous trouverez des astuces et tutos Tasker/Jeedom
Mon alarme sous Jeedom
Tuto pour la Gestion de la présence

romanais
Actif
Messages : 1999
Inscription : 21 août 2014, 21:36
Localisation : Drôme

Re: Retrouver le nom des commandes supprimées

Message par romanais » 03 févr. 2018, 17:42

Pour mémoire et d'une manière générale, pour les scripts, le plus simple est tout de même :

D'aller sur le plugin "Script".
Bouton "Ajouter"
Donner un nom à l'équipement (Mémo ID pour commandes supprimées) puis valider avec le bouton "D'accord".
Ensuite on choisit l'objet parent, puis la catégorie, on active et on rend visible.
On sauvegarde une première fois avec le bouton "Sauvegarder" (oui c'est fou :D
Toujours sur cet équipement, on se rend sur l'onglet "Commandes".
On clique sur "Ajouter une commande script".
On donne un nom à la commande (backup_id_commandes).
On reste sur "Type script : Script".
Et pour "Type : Info/Autre".
On clique sur "Nouveau" puis on rentre un nom pour le script (backup_id_commandes_supprimees.php)
On valide avec "D'accord".
Une fenêtre s'ouvre, on colle simplement le code dedans.
On clique sur "Enregistrer".
Ça ferme la fenêtre, on clique alors sur "Sauvegarder".

Voilà, on a notre script posé dans /var/www/html/plugins/script/core/ressources/
Accessible par http://IP_JEEDOM/plugins/script/core/ressources/backup_id_commandes_supprimees.php

On peut retourner éditer ce script/code à tout moment (avec le bouton Editer).
Pas de problèmes de droits, ni de logiciels supplémentaires à installer.

Ça semble long parce que j'ai détaillé chaque clic, mais moins de 2 minutes suffisent pour ces étapes :)
Merci à toute l'équipe pour le taf

Mon matériel

extrapitou
Actif
Messages : 1332
Inscription : 27 juin 2015, 21:53
Localisation : Dijon

Re: Retrouver le nom des commandes supprimées

Message par extrapitou » 03 févr. 2018, 21:10


romanais a écrit :
Une fenêtre s'ouvre, on colle simplement le code dedans.
On clique sur "Enregistrer".
Ça ferme la fenêtre, on clique alors sur "Sauvegarder".
Ah ben c'est ca que j'ai pas. Aucune fenêtre ne s'ouvre j'ai surement pas fait le début correctement.

Merci d'avoir expliquer en détail je ferai des test pour voir ce que j'ai mal fait.

Envoyé depuis mon Mobicarte (Si Si jvous jure !!!)

Mon Matos

Mon Blog où vous trouverez des astuces et tutos Tasker/Jeedom
Mon alarme sous Jeedom
Tuto pour la Gestion de la présence

Avatar de l’utilisateur
zeftp
Timide
Messages : 441
Inscription : 19 avr. 2015, 11:46
Localisation : Lyon

Re: Retrouver le nom des commandes supprimées

Message par zeftp » 04 févr. 2018, 11:44

meute a écrit :
02 févr. 2018, 11:46
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.
Tout à fait d'accord (après, y'a pas que Loïc qui bosse sur le code Jeedom non plus ;)).

J'offre une bière sur Lyon au nom de la communauté à qui implémentera la sauvegarde automatique du dernier nom de commande connue lors de sa suppression ! :)

Romanais, tu pourrais faire un edit de ton premier post avec la dernières versions de ton script que je fasse un lien depuis le premier post pour ceux que ça intéresse? :)

Merci
Jeedom Smart, Mini+ + RFXCom + Clé 3g, onduleur, qqs trucs z wave, Keycode RFID Zipato + Flower Power + Téléc RFX chinoises x 4 + Caméra vidéo Foscam FI9821P + Détecteur ouverture de garage ZG8101 + Xiaomi & magic cube + SoundTab

romanais
Actif
Messages : 1999
Inscription : 21 août 2014, 21:36
Localisation : Drôme

Re: Retrouver le nom des commandes supprimées

Message par romanais » 04 févr. 2018, 11:53

Ça marche je fais ça en début de semaine
Merci à toute l'équipe pour le taf

Mon matériel

Avatar de l’utilisateur
kerdale
Actif
Messages : 1640
Inscription : 25 sept. 2016, 11:38
Localisation : Penn-ar-Bed

Re: Retrouver le nom des commandes supprimées

Message par kerdale » 24 mars 2018, 12:16

Merci romanais pour ce tuto et ce script absolument nickel qui fonctionne du premier coup que je découvre seulement aujourd'hui ( après avoir bataillé toute la journée d'hiers à retrouver ce qu'était cette fichue cde orpheline qui mettait le bazar :D ). Pour info sous Ios/Exel ouverture directe sans avoir à choisir le caractère latin1 ou autre.
Bravo
1 NUC & 1 RPI3/Msata V3.3.31, EnOcean, Z-wave,
Rflink, IPX800V3, carte 8 rl IP, IR_V3, Xiaomi gateway, JPI/APK/tel Android dédié, Somfy RTS, Rf433Mhz, Xiaomi, Bm280 , Broadlink,WifiLights

Répondre

Revenir vers « Suggestions pour le Core »

Qui est en ligne ?

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