Aller au contenu

Quick App - DomoCharts - Graphiques sur NAS pour HC3


Lazer

Recommended Posts

J'ai une question non en rapport avec la DB :)

 

Dans la page administration, on choisit ce qui est visible ou pas.

J'imaine que cette info est stockée dans un fichier (mais lequel ?).

Mon idée : préparer un fichier avec certains devices, un autre avec d'autres, ... et celui qui est utilisé, est celui avec le nom standard.

Pourquoi ? La température de mon congélateur (-15 à -25 °C) n'est évidemment pas avec la même échèle que la température du salon. Donc utiliser le fichier de config en fonction de ce qu'on veut voir.

Lien vers le commentaire
Partager sur d’autres sites

Il y a 10 heures, Kana-chan a dit :

Autant faire deux domocharts, un qui est le standard et un autre pour les spécifiques.

Cela voudrait dire tout multiplier : QA, AppWeb, DB, ...

et dans mon exemple j'ai donné l'exemple de 2, mais ce serait plus en réalité : Freeze, Cave à Vins, Tmp Ext, Tmp Int (qu'on pourrait diviser entre RdC & Etage), ballon eau chaude sanitaire. Je serais déjà à 5 (+ ceux que j'ai oubliés) => copier un fichier de config c'est plus simple ...

Lien vers le commentaire
Partager sur d’autres sites

Il y a 16 heures, jojo a dit :

Dans la page administration, on choisit ce qui est visible ou pas.

J'imaine que cette info est stockée dans un fichier (mais lequel ?). 

Dans la DB, dans les table domocharts_device_type

 

 

En fait ce que tu veux ce sont des graphs personnalisés... vieux projet que je n'ai jamais encore mis en place (j'avais commencé à bricoler un truc...)

En attendant le mieux est de se construire ses graphs personnalisés avec Grafana, qui va requêter sur la base SQL.

 

 

Lien vers le commentaire
Partager sur d’autres sites

Evidemment, si cette info est stockée dans la DB ...

Mon souhait de personnalisation se "limite" (pour l'instant :94:) à faire des groupes.

Je vais voir ce que Grafana a dans le ventre.

Lien vers le commentaire
Partager sur d’autres sites

  • 2 weeks later...
Le 17/11/2023 à 20:02, Lazer a dit :
Le 17/11/2023 à 18:34, henri-allauch a dit :

Est t'il possible (oui)  mais réaliste d'utiliser une réplication de la base sur un autre serveur ? 

Oui, avec les fonctionnalités natives de MySQL / MariaDB

Pour éviter les réplications des bases sql, 

Mon Test :

Je replique l'appel des fonctions DomoCharts:postAPI et DomoCharts:getAPI vers une deuxième HC3 équipé d'un Domocharts-Réplicat simplifié (Qui ne lance aucune action dans le main loop).
Ce Répliquat travaille avec une base graphhc3 sur un deuxième serveur.

function DomoCharts:postAPI(path, data, callback) 
        DomoCharts:Repliquer("postAPI", path, data, callback) --TEST REPLICAT

Les fonctions sont transférées à la deucxième HC3 par une requete http : 
function DomoCharts:Repliquer(Fonction, Param1, Param2, Param3)
        Commande = "http://" ..IP_Hc3Dvp .."/api/callAction?deviceID=" ..QA_Domocharts_Replicat  .."&name="  ..FonctionReplicat .."&arg1=" ..Fonction .."&arg2=" ..Param1  .."&arg3=" ..json.encode(Param2)
..

Cela fonctionne très bien au moins pour les Post qui font bien les insertions. Le get on verra cette nuit avec le trend .

Mon seul problème c'est que dès que j'essaye d'ajouter le 3eme Parametre callback dans un arg4, le QA Maitre se bloque.
Cet argument callback, qui contient une table de fonctions succes() et error() je n'arrive pas à le manipuler et le passer par la requête HTTP , alors qu'il passe bien de fonctions en fonctions dans DomoCharts:

@Lazer As tu idée ?

Pour le moment je ne la transfère pas, le domocharts réplicat fait bien son jos, mais je n'ai donc pas de message sur error / succes

Lien vers le commentaire
Partager sur d’autres sites

Ouh là là, l'idée est bonne, mais ça me parait bien compliqué.

Pourquoi passer par une seconde HC3 ?

Tant qu'à doubler les appels à postAPI, je ferai non pas vers une autre HC3, mais directement vers le second serveur NAS.

Plus simple à mon avis.

Lien vers le commentaire
Partager sur d’autres sites

Oui depuis domocharts lui-même ce serait plus simple

Mais : mon besoin étant de créer un nouveau serveur sur une nouvelle machine sans arrêter ni perturber le fonctionnement actuel j'ai choisi de ne pas trop impliquer la Box de Prod, et de ne pas faire des grosses modifications dans son domocharts 

Comme je dispose d'une seconde Box je teste cette solution.

C'est un test qui durera que un mois ou deux le temps de verifier le bon fonctionnement du nouveau serveur. Et c'est pas simple les changements de versions de http, php, sql, apporte toujours des petites surprises.

Pour le moment cette solution (Compliquée) fonctionne correctement est s'avère suffisante pour mes essais.

Lien vers le commentaire
Partager sur d’autres sites

  • 2 months later...

Bonjour

 

j'ai récupéré un pluviomètre POPP Z-Rain qui me propose 2 devices: un rainsensor (en mm/h) et un watermeter (en m3).

j'aurai aimé voir l'évolution du cumul des pluies par jour dans domochart (à la manière de l'energie par ex) basé sur la valeur du watermeter.

mais le type de graphique "pluie [mm]" ne montre pas un cumul par jour, ni une évolution linéaire dans le temps. Qu'est-il censé montrer ?

 

 

quel serait le QA à créer pour que domochart affiche ce cumul ?

 

merci de votre aide

Lien vers le commentaire
Partager sur d’autres sites

Il faudrait que tu partages les caractéristiques exacte de des modules que tu souhaites remonter dans DomoCharts, mais les capteurs de pluie je n'ai jamais trouvé comment bien les gérer... entre ceux qui affichent des mm/5 minutes, des litres par heures, des litres cumulés sur 24h, c'est juste ingérable. Et je parles même pas des m3, non mais sérieux, c'est quoi cette unité à la con pour mesurer la pluie, le jour où on se prendra ça sur la tête, ce n'est plus de dérèglement climatique qu'on parlera, mais de fin du monde...

 

En attendant, tu peux modifier la config de ton QuickApp DomoCharts.

 

Exemple de config que tu dois déjà avoir pour les capteurs de pluie :

{ dbType = "rain"       , fibaroType = "com.fibaro.rainSensor"                      , visible = "true", dead = "false", enabled = "true", property = "value" , },

Tu peux essayer d'ajouter ceci, il faudrait être ajuster en fonction des caractéristiques (type, unité, ...) de tes modules :

{ dbType = "rain"       , fibaroType = "com.fibaro.multilevelSensor", unit = "mm/h" , visible = "true", dead = "false", enabled = "true", property = "value" , },
{ dbType = "rain"       , fibaroType = "com.fibaro.multilevelSensor", unit = "m3"   , visible = "true", dead = "false", enabled = "true", property = "value" , },

 

Mais bon, mélanger des mm, des litres, et des m3 dans le même graph, ça ne va rien représenter d'intéressant...

Lien vers le commentaire
Partager sur d’autres sites

pour être homogène du graphe pluie [mm], j'ai créé un QA rainsensor en mm avec comme valeur le cumul des pluies mesuré par le pluviomètre. C'est une valeur qui augmente au cours des pluies.

cependant, dans domochart, la valeur enregistrée dans la table domocharts_rain reste toujours à 99.9mm, comme si cette valeur ne pouvait pas être dépassée. la valeur du QA est actuellement 1138mm. (je vous rassure, il n'a pas plu cette quantité ! je le teste en versant 1L d'eau à chaque fois)

autre chose bizarre, domochart ne me propose pas de visualiser la table domocharts_rain_day qui existe pourtant dans mariaDB. (en fouillant dans index.php, la ligne rain_day était en commentaire j'ai l'impression)

 

Lien vers le commentaire
Partager sur d’autres sites

Très bien, dans ce cas tu devrais pouvoir essayer une config comme ceci pour prendre en compte ton QA :

{ dbType = "water   , fibaroType = "com.fibaro.multilevelSensor", unit = "mm , visible = "true", dead = "false", enabled = "true", property = "value" , dbField = "index", },

On le met dans la table water car elle supporte les index (qui croissent éternellement), d'ailleurs le paramètre dbField = index sert à ça.

 

Oui comme tu peux le constater la table rain_day n'est pas graphable, car comme dit dans mon message précédent, c'est indémerdable entre les mm/5min, mm/h, mm/24h, etc...

Les data sont tout de même mémorisées, ça permet toujours d'aller faire des requête SQL à la main pour extraire des stats personnalisées, ou bien utiliser Grafana pour des graphs custom.

Mais toi, avec ton index, c'est dans les tables water que tu vas devoir aller chercher les données.
Là aussi c'est compliqué, car il n'y a pas de mesure universelle pour l'eau, tantôt c'est une quantité, tantôt un débit, tantôt un index...

 

Bref, voilà ce qui arrive quand on essaye de prendre en compte toutes les données dans une base unique.
C'est tellement plus simple pour les température, humidité, puissance, énergie, etc, il y a une seule unité et on ne se pose pas de question, c'est simple à traiter.

Lien vers le commentaire
Partager sur d’autres sites

  • 3 weeks later...

Bjr

du coup, j'ai créé 2 QA pour le pluviometre:

un QA "rain sensor" en mm => domochart enregistre bien l'évolution des mm de pluie en fonction du temps dans la table "rain". Cependant, dès que la valeur dépasse 99.9mm, il n'enregistre plus la valeur, mais juste 99.9mm. Il doit y avoir dans le code quelque chose qui interdit de mettre plus que 99.9 Je n'ai pas trouvé quoi.

un QA "water sensor" en l => domochart enregistre bien l'évolution des L de pluie en fonction du temps dans la table "water" dans l'index. et dans la table "water_day", je retrouve bien la valeur par jour du cumul des pluies.

Lien vers le commentaire
Partager sur d’autres sites

C'est c'est la taille du champ DECIMAL qui limite dans la DB, j'ai considéré que plus de 99 mm en 1 minute ça n'était pas possible.

Si un jour ça se produit, ça ne fera même pas la une des journaux, vu que ça sera la fin du monde...

 

C'est pour cela que je t'ai indiqué d'utiliser d'utiliser la table water qui permet de stocker des index (=compteur), donc des valeurs qui grandissent sans cesse. Bon là aussi il y a aura une limite, mais elle est assez élevée, je ne me souviens plus de tête, mais tu auras surement changé de système domotique avant.

Lien vers le commentaire
Partager sur d’autres sites

  • 3 weeks later...

J'ai installé DomoCharts sur un nouveau serveur Synology à la maison. J'ai eu une erreur au chargement de la page:

{"success":false,"error":{"code":8192,"message":"Constant FILTER_SANITIZE_STRING is deprecated"}}

Le problème vient de PHP, j'ai installé par défaut la dernière version 8.2 mais ça ne fonctionne pas et j'obtiens l'erreur plus haut.

Je suis donc passé sur PHP 7.4 et là tout fonctionne.

@Lazer si tu te sens assez courageux pour faire une mise à jour. Ce n'est pas pressé car ça fonctionne en l'état.

 

 

 

 

Lien vers le commentaire
Partager sur d’autres sites

ça me dit quelque chose, on en a parlé il y a quelques pages, de mémoire tu peux supprimer le filtre dans le code de la page PHP, et tu pourras ainsi l'utiliser avec la dernière version.

Pour la mise à jour de DomoCharts, j'y songe... mais bon... d'autres priorités :)

 

  • Thanks 1
Lien vers le commentaire
Partager sur d’autres sites

Tu parles bien de cette modification?

Le 15/07/2023 à 12:15, Lazer a dit :

Alors, tu peux essayer de remplacer toutes les occurrences de FILTER_SANITIZE_STRING par FILTER_UNSAFE_RAW

 

Outre les fichiers data.php et device.php, tu vas peut-être aussi en trouver dans type.php et admin.php

(je en suis pas sûr car j'ai une version légèrement modifiée de Domocharts)

 

On n'a pas besoin de htmlspecialchars() qui a une autre utilité.

 

Si c'est le cas, je vais patienter et attendre une mise à jour de ta part. C'est plus sur. Je n'ai pas envie de tout pétarder!

J'ai installer la sauvegarde de mon autre serveur pour la continuité des infos et pour le moment ça fonctionne bien.

Je ne vais pas jouer avec le feu car je ne maîtrise pas du tout le php.

 

Lien vers le commentaire
Partager sur d’autres sites

Oui c'est bien ça.
Si tu fais la modification indiquée, c'est sans risque, et au moins ça ne te bloquera pas sur les mises à jour de PHP 8.

Mais tu fais comme tu le sens :)

 

  • Like 1
Lien vers le commentaire
Partager sur d’autres sites

Hello la team,

Je reviens ici pour une demande d'aide.

 

Il me semble, avoir tout bien configuré :

  • Config sur Nas Synology avec version : MariaDB 10, PHP 8.0
  • Côté HC3, tout semble ok. les données sont identifiées et remontées vers la base de données
  • Côté MariaDB, lorsque je consulte les tables les données sont bien présentes et actualisées

 

Mais lorsque je vais sur la page de visualisation http://192.168.0.10/domocharts/ j'obtiens une page sans aucun graphique. J'ai bien la possibilité de choisir les types de mesures. Mais rien ne s'affiche quelque soit le type de graph. Cf. image ci-dessous.

image.thumb.png.4c4d3db3d5a1f0e056a48d18efec381c.png

 

Si je vais la page http://192.168.0.10/domocharts/admin j'ai bien mes devices qui sont sélectionnés. Cf. image ci-dessous.

Néanmoins, par rapport au tutoriel, il est indiqué qu'il est possible de modifier les couleurs. Ce qui ne semble pas le cas chez-moi.

 

image.thumb.png.5baa84be1ed0876147e5e611ca1b658a.png

 

Si je vais sous MariaDB pour visualiser les données. Elles sont bien présente. Voici ci-dessous :

 

image.thumb.png.441892a4c0b4abdfe5da4fc597800e4c.png

Pourriez-vous m'indiquer ce qui pose problème ou m'orienter vers la solution SVP.

Modifié par MAM78
Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

Sous Safari, chez moi, cela fonctionne mais moins bien que sous Firefox.

Avez-vous essayé sous Firefox, ou un autre butineur ?

Modifié par Kana-chan
Lien vers le commentaire
Partager sur d’autres sites

Il faudrait au moins les logs du navigateur (lequel est-ce ?), parce que sans ça, difficile de deviner pourquoi il affiche un écran noir.

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...