Comment insérer un historique dans jeedom

Bonjour,

Je voudrais ajouter les anciennes données de mes relevés Index EDF (actuellement sur tableur) dans l’historique de Jeedom.
Quelle serait la méthode la plus simple ?

Merci par avance.

Alors je dirais qu’il y a deux options :

  • La première en générant une requête sql pour aboutir à quelque chose qui ressemble à cette méthode.

  • La deuxième - qui je pense est la plus simple - en partant de ce code qui se met dans un bloc code dans un scénario. Il suffit de dupliquer la seconde ligne autant que fois nécessaire, puis d’exécuter le scénario manuellement.

Dans les deux cas, dans le fichier excel il faut concaténer avec une formule dans une nouvelle colonne pour obtenir le formatage voulu. Dans le second cas, cela donne quelque chose du genre :
= "$cmd->addHistoryValue(" & A1 & ", ' & B1 & "');"
avec bien sûr A1 contenant la valeur et B1 la date affichée au bon format.
Ensuite, il suffit de faire un copier-coller normalement.

1 « J'aime »

Merci seb821

J’ai réussi à installer Adminer donc je vais voir quelle solution est la plus simple avec tes conseils ; j’ai 9 années de relevés EDF à injecter.
Pour l’instant j’ai bien concaténer les valeurs avec le format idoine sur un tableur.
Reste à voir comment injecter ces données.

bonjour, peux tu exporter en xml, json ou fichier texte ?
pour te donner la base de comment je procéderai

jette un oeil sur le site de @benj29 « domotique facile » sinon je te retrouve le sujet sur l’ancien forum " il a essayé d’injecte dans la bdd une production de panneau solaire"
à la différence maintenant je te conseil d’utilisé les requetes sql (2éme partie) dans un scenario « fonction code » plutot que l’api : benj29 rencontré des blocages avec l’api

ça donnerai en code 1er partie

récupération de la ligne de ton fichier
la ligne dans une variable
séparé par virgule ou point ça donnera var1 var2,var3 var4
admet-on que var2 et var4 t’intéresse

un fois le log pour 10 lignes ok

ensuite en t’aidant

avec la commande en créant un virtuel pour test

INSERT INTO `historyArch` (`cmd_id`, `datetime`, `value`) VALUES ('4181', '2019-12-01 05:06:33', '1');

(pour info si tu vas dans configuration os/db et base de donnée tu colles la ligne en changeant 4181 par un id existant « test » te voila avec une nouvelle valeur)

reprenons tu glisses la requête dans la fonction code
$sql = « INSERT INTO historyArch (cmd_id, datetime, value) VALUES (‹ 4181 ›, ‹ 2019-12-01 05:06:33 ›, ‹ 1 ›) »;
$result = DB::Prepare($sql, NULL, DB::FETCH_TYPE_ROW);

tu remplace id, date et valeur par celle de ta 1er partie par une variable. var2, var4 dans la boucle

si la date var2 n’est pas au format « 2019-12-01 05:06:33 » faire une traitement pour

bon courage, n’hesite pas si besoin

edit liens cité n’hesite pas à faire un tour sur son site
https://forum.jeedom.com/viewtopic.php?t=27931&start=1000#p742312
https://forum.jeedom.com/viewtopic.php?t=29412&start=80

Vu la quantité de données, j’ai un peu peur que ça passe mal avec scénario + bloc code.

Pour le coup finalement, je pense que générer un fichier sql puis l’importer dans adminer sera le plus efficace. Il faudra peut-être même plusieurs fichiers, parce que parfois dans ce genre de manip on dépasse le temps d’exécution maximum de php. Le mieux c’est de faire une sauvegarde, puis un essai avec quelques lignes seulement, et ensuite avec des fichiers plus conséquents. Normalement il suffit de créer un virtuel et une commande analogique, de noter l’id de celle-ci et de la reporter dans la requête qu’a indiqué ajja17orange.

De toutes façons, en exportant d’abord la table historyArch depuis adminer tu verras bien quelle est la structure attendue. Vraiment rien de compliqué en fait - c’est juste de l’import de données dans mysql - mais c’est toujours difficile de conseiller quelqu’un sans connaître son niveau de connaissances. Mais a priori tu as l’air à l’aise donc ça va le faire.

Super merci à vous deux :wink:

J’ai finalement opter pour l’import en format CSV dans Adminer, vu la quantité de données, cela s’est bien passé.
Après avoir fait une sauvegarde, j’avais fait des tests pour obtenir le bon format de données avec les dates inversées.
Et tout est nickel…
Encoremerci pour votre aide :grinning: