Module d'import de fichier CSV afin de réaliser des graphiques

Tags: #<Tag:0x00007f384e8183e0>

Bonjour,

Je recherche une solution permettant d’importer des données au forme CSV au sein de Jeedom en vu de faire des graphiques.

Voici un exemple de mon besoin, actuellement GRDF propose en ligne le suivi de ma consommation en ligne mais il n’y a pas d’api. Par contre GRDF propose d’exporter les données au format xlsx voir image ci-jointe:

EXCEL_REW1B7CVBr

Avoir la possibilité d’importer ces données me permettrai de comparer ma consommation de gaz avec la température interne, externe, les consignes de chauffage, etc…

Existe-t-il une solution déjà existante? Une solution de comtournement?

Cordialement.

Louis

Bonjour,
Un graphique dans excel? Parce que là je ne vois pas pourquoi utiliser jeedom pour faire un graphique.

Salut.

Si l’idée est de comparer tu as deux moyens.
*Exporter les données jeedom
*Importer les données GRDF

Comme il n’existe rien, la solution c’est de passer par la base de données et de faire des requêtes sur les tables d’historique.

L’exportation c’est assez simple, il faut juste connaître les id de tes valeurs collectées. “Admirer” est une solution php simple pour naviguer dans la base et exporter un csv par exemple.
L’importation est plus difficile, il faut créer des commandes info, noter les id, faire le rapprochement avec les données Excel, convertir les formats (sur les dates) et lancer la requête sql.

Personnellement j’opterais pour l’export, tu ne compare probablement pas tes valeurs tous les jours et ça évite surtout de casser jeedom avec une fausse manipulation. Ensuite pourquoi pas comparer avec Excel…

Merci de vos retours.
L’idée est de centraliser l’ensemble des données dans une même interface (Jeedom).
Louis

bonjour 21 lignes
c’est faisable manuellement
()requete sql ou api jeedom
via scénario code (php) ou configuration api/bd mysql
sans Admirer (même si il est fort utile pour différent test)
(
) préférence

quand je serais devant mon pc je te recherchera la requête sql

@naboleo si tu veux aller plus loin

admirer te montre les requête sql utilisait

comme il existe peu de sujet sur le sql
c’est un language que je ne connaissais pas
https://www.w3schools.com/sql/

tu créés tu récupères la cmd sql et tu peux la réutilisé

exemple qui n’a rien à voir avec le sujet
contexte :
une info numérique on a comme param (max,moyenne et mini. aucun rien est fait)
pour le jour J toutes les 5mn jeedom taf pour obtenir la possibilité du param
et J+x (cron de 5h) c’est par heure que les possibilités du param sont traité

j’ai joué avec la requête select pour obtenir une moyenne par 1/4 d’heure >une fois obtenu le bon rendu dans admirer j’ai adapté le select en replace et dans un scenario code qui se lance à 4h et suppriime l’ancienne table

ça donne un cron de 4h du matin avec
comme code

$commandes = array("#[Dehors][Sondes Nord][Température]#",
                      "#[Dehors][Sondes Sud][Température]#",
);
foreach ($commandes as $commande) {
$commande = str_replace("#", "", $commande);  
  
$sql = "REPLACE INTO `historyArch` (`cmd_id`,`datetime`,`value`)";
$sql = $sql." SELECT `cmd_id`, ";
$sql = $sql." concat( date(`datetime` ) , ' ', sec_to_time(time_to_sec(`datetime` )- time_to_sec(`datetime` )%(15*60))) as created_dt_new,";
$sql = $sql." round(avg(`value`),1)";
$sql = $sql." FROM `history` ";
$sql = $sql." WHERE `cmd_id` = '$commande' ";
$sql = $sql." group by created_dt_new";
$scenario->setLog("SQL = $sql");
$result = DB::Prepare($sql, NULL, DB::FETCH_TYPE_ROW);

$sql2 ="DELETE FROM `history`";
$sql2 = $sql2."WHERE `cmd_id` = '$commande'";
$result = DB::Prepare($sql2, NULL, DB::FETCH_TYPE_ROW);
    }

Effectivement ça marche aussi…
Mais finalement pour l’import il ya peut-être encore plus simple :
Se creer les ID, mettre en forme le CSV tout ça avec Excel…
Et import avec Admirer
image

Pour être certain des formats, on peut commencer par exporter qq valeurs au format CSV

manuel
la requête sql dans configuration OS/DB > base donnée

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

sql

Hello!

Merci de vos retours, j’ai plusieurs questions :wink:

L’import CSV via la base mysql me parait très intéressante. Ce qui me surprend c’est que vous sembliez (cf. screenshots) avoir accès a l’interface d’aministration de la base de donnée mysql à partir de Jeedom. De mon coté j’ai une interface qui ne me permet pas d’import CSV, voir image:

LRE-2019-12-08_20-14-05

Autre interrogation, une fois que les données seront présentes dans la base mysql comment faire pour les afficher sur l’interface Historique (graphique) de Jeedom.

Désole pour ces question un peu naïve.

Bonne fin de weekend.

Louis

Hello,

J’ai un peu avancé, je me réponds à moi même.

J’ai crée un virtuel avec une commande d’info virtuel dont je récupère ID (1062).

Avec l’interface Jeedom que je mentionne dans le précédent post, on peut importer des donner, avec la requete que @ajja17orange à transmise, exemple:
INSERT INTO historyArch (cmd_id, datetime, value) VALUES (‘1062’, ‘2019-12-01 05:06:33’, ‘101’);

Le graphique est disponible via historique.
C’est top :wink: il me reste a trouver comment importer un CSV.

A+
Louis

  1. Télécharge admirer : https://www.adminer.org/
  2. Copie dans le /var/www/html/
  3. Modifie le propriétaire et le groupe pour que ce soit www-data
  4. image
  5. Et lance le depuis l’interface jeedom en ajoutant son nom à la fin de l’adresse

@naboleo
Merci de ton retour, je rencontre un problème de droit lors de la copie adminer-4.7.5.php vers le pi, voir image:
WinSCP_aFoicAxvgW
Aurais-tu une idée?
Louis

Oui l’utilisateur pi n’a pas les droits, donc impossible de copier directement les fichiers dans le répertoire de jeedom. Seule solution, copier dans /tmp puis déplacer le fichier en ligne de commande avec le préfixe sudo

Merci beaucoup, tout fonctionne bien, j’ai maintenant ma consommation m3 de gaz par jour dans Jeedom :grinning:

Bonne nouvelle !

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.