SQL Structure des données

L’état de commandes de type info (retour de capteurs par exemple) n’est pas enregistré dans le base de données mais dans le cache.

Merci beaucoup pour votre réponse. Dans ce cas, si j’ai besoin de dupliquer ces données sur un autre système de sauvegarde, où puis-je les trouver ? J’ai activé mon compte en tant que développeur, mais je ne sais pas où je peux trouver des informations techniques à ce sujet.

Salut kankamuso
Tu peux aller chercher l’info directement dans les équipements/eqLogic Zwave très certainement.

Merci pour votre réponse, et où se trouve cette information dans le système de fichiers ATLAS ? Je suis très nouvelle et perdue.

Tellement de possibilité.

Décrit ton objectif, pourquoi tu le fais, les info que tu cherche à récupérer, etc. bref décrit ton projet, les réponses et les pistes qu’on pourra donner seront très différentes!

Je pense que tout se résume à ça :

En fait, je veux un système « miroir » qui me permette de continuer à voir les données antérieures même lorsque la connexion Internet est interrompue au niveau de la passerelle. Une sorte de rsync avec ces données.

Merci !

A bah oui, j’avais pas vu le sujet.

Certainement trop ambitieux pour moi!
tu imagine la synchro à quelle fréquence, quel est la perte de données acceptable pour toi?

ktn mentionne le cache, peut être aller voir du coté : /core/class/cache.class.php dans laquelle tu as les méthodes getCache(), save(), restore() avec le getFolder() y’a peut être moyen de dupliquer le cache et le loader dans l’install distante

dans jeedom.class.php, il y a tout ce qui concerne le backup également, qui lance le script install/backup.php qui peut être intéressant à décortiquer.

Finalement, peut être le plus simple : (Je n’ai jamais touché), mais peut être regarder du coté du plugin JeeLink.

Je n’ai pas eu le temps de développer ma réponse de toute à l’heure.

Le cache est un ensemble de fichiers qui se trouvent dans l’arborescence sous /tmp/jeedom/cache. Le nom de ces fichiers est le résultat du hashage d’une clé qui, dans le cas des objets de la classe cmd, est composée de la chaîne cmdCacheAttr et de l’id de la commande.

Les classes qui utilisent le cache ont les méthodes getCache()et setCache()` qui permettent d’accéder au contenu du cache de l’objet.

Dans le cas des commandes, la méthode execCmd() retourne la valeur de l’info pour les commandes de type info (J’avoue que je ne suis pas complètement au clair sur ce qu’elle fait pour les commandes de type action.

Dans ton cas, je pense qu’une réplication via jeelink est effectivement une bonne piste mais je ne connais pas ce plugin.

Jeelink a l’air vraiment intéressant. La traduction espagnole n’est pas très bonne et il n’est pas clair pour moi si cela va être utile pour ce que je veux ou si c’est juste pour un transfert ponctuel d’un appareil d’un contrôleur à un autre. Je vais devoir vérifier !

Parfait. Vous pouvez finir par créer une base de données ad-hoc à la destination et, via REST, maintenir votre base de données à jour. J’ai déjà effectué des synchronisations similaires avec des appareils mobiles, cela devrait donc fonctionner.

Merci

Il semble que le jeelink ne fonctionne pas. Il ne fonctionne que tant qu’il y a une connexion au réseau et ne synchronise pas les données précédentes, mais seulement à partir du moment de la configuration. Lorsque la connexion est perdue, il interpole simplement les données :-(. C’était trop beau pour être vrai.

Source :

1 « J'aime »

Pourquoi ne pas simplement configurer une réplication de la base MySQL Jeedom si juste pour consultation ?

https://dev.mysql.com/doc/refman/8.0/en/replication.html

Parce que la base de données ne contient pas les relevés des capteurs :frowning:

Je pense que je voudrais creuser plus profondément dans /tmp/jeedom/cache, mais je ne parviens pas à trouver les données du capteur de test. Je suppose que c’est un fichier binaire. L’idée est de trouver l’équivalence entre le cache de la passerelle et celui créé avec jeelink et de le maintenir en synchronisation tous les x temps. Mais d’abord je dois savoir exactement comment identifier quel dossier/fichier correspond à quel capteur et ce n’est pas clair pour moi.

Si les données sont stockées dans le cache Jeedom, il s’agit de données temporaires non vitales et j’ai du mal à comprendre l’intérêt de les consulter si le système primaire est non accessible.

Pour ma part, tout est stocké dans la base et le cache n’est qu’un accélérateur d’accès à la donnée sinon tu perdrais de l’information en cas de crash vu que tu repars d’une sauvegarde qui ne contient pas à ma connaissance le cache.
J’ai encore beaucoup à apprendre de Jeedom…

Il s’agit d’un système de surveillance qui doit conserver les données pendant deux ans afin de pouvoir les analyser ultérieurement. Mais l’une des prémisses est que je peux analyser les données dont je dispose, même si l’un des systèmes est temporairement déconnecté. Il ne s’agit pas exactement d’un système domestique, mais d’un système pour l’industrie.

Je suis donc encore plus surpris que ces données soient dans le cache Jeedom et uniquement dans le cache Jeedom… Je n’ai pas du comprendre ta demande initiale !
Bonne continuation :wink:

Merci beaucoup!

Si, le cache fait partie des sauvegardes. En gros, la DB est là pour conserver des données persistantes qui bougent peu. Le cache plus là pour conserver des informations qui seraient probablement conservées dans des variables internes si jeedom n’était une application WEB mais un service tourne en en tâche de fond.

En PHP, il faut un moyen de conserver certainent information entre deux exécutions d’un instance de classe. Le cache est là pour ça. L’utilisation de la DB pour cet usage serait beaucoup trop lourd.