Calculer la dérivée d’une courbe de niveau

Bonjour
Tout est dans le titre. Pour un projet pro, on me demande ce calcul, et je sèche complètement :frowning:

1 « J'aime »

T’as demandé @chatGpt?

Même idée que @SWR :
Par la nouveau Edge et Chat : " La dérivée d’une courbe de niveau est la pente de la tangente à cette courbe. Pour calculer cette dérivée, il faut d’abord trouver le gradient de la fonction à partir de laquelle la courbe de niveau est tracée. Le gradient est un vecteur qui pointe dans la direction de la plus forte augmentation de la fonction et dont la norme est égale à la valeur de cette augmentation. Ensuite, il faut prendre le produit scalaire du gradient et du vecteur tangent à la courbe de niveau pour obtenir la dérivée cherchée"

J’espère que cela te parle… car pour moi, comment dire … :crazy_face: :rofl: :rofl: :rofl:

1 « J'aime »

Merci. Avant de poster ici, j’avais tenté chatGpt.
Et je n’ai rien compris :smile::smile::smile:

1 « J'aime »

Partons de la base, tu veux la dérivée de quoi ?pour faire quoi ?
Qu’est ce qui te fais dire que la dérivée répond à la problématique ?

J’ai un bassin avec une mesure de niveau pour lequel, on me demande de connaître la dérivée de sa courbe de niveau. Cela va conditionner d’autres action, et d’ici uniquement si la dérivée est <= 0.

1 « J'aime »

Mes cours de physique sont un peu loin, mais pour moi, le dérivée d’une position (le niveau d’eau), c’est la vitesse ( la vitesse de montée ou de descente, donc simplement
d(x) = delta(x) / delta(t)

Soit, avec jeedom :

(Niveau d'eau à l'instant T1 - niveau d'eau à T0) / (T1 - T0)

Norbert

2 « J'aime »

Je pinaille un peu mais une dérivée peut être en fonction de n’importe quoi. C’est vrai que dans ce cas je ne vois pas pourquoi on dériverait par autre chose que le temps :).
Du coup ta formule est bonne, encore faut-il que @Claude69 détermine le delta-temps qui l’intéresse, car faire la dérivée sur une période de 1 seconde n’a pas beaucoup de sens, sur 1 mois non plus :slight_smile:

1 « J'aime »

Totalement d’accord !
Bon, calculer des dérivés avec un système domotique reste quand même une gageure :wink:

Hello
Je n’ai pas précisé, mais il ne s’agit pas du tout de domotique :smile:

Merci de ce détail important
Il s’agit de quoi?

Je suis le sujet parce qu’il semblerait initialement intéressant, mais on en est déjà à 10 messages et on ne sait toujours pas ce que tu veux VRAIMENT faire…

Et en passant, déclancher une action quand la dérivée de la courbe de contenance d’un bassin est négative, revient à déclancher une action quand le bassin se vide, ce qui est infiniment plus simple à déterminer.

1 « J'aime »

Alors je vais donner une petite explication.
Il s’agit d’automatismes sur une station d’épuration. Concrètement c’est un bassin d’orage (lors de pluie, la station ne pouvant gérer la totalité du débit entrant, le surplus est stocké dans ce bassin).
Le niveau du bassin est connu et permet de gérer des pompes pour sa vidange. Une fois vide, d’autres automatismes sont enchaînés, et c’est durant cette phase que je dois connaître sa dérivée. (En cas de petite pluie, le bassin commençant à se ré-remplir), et donc annuler les traitements en cours.

Le plus simple serait peut être de mesurer en live le niveau d’eau, soit le « vrai », soit avec des paliers (tous les 5 cm ou 10cm, pas à déterminer en fonction de ton projet).

Tu peux utiliser des capteurs ultrasons par exemple…
Je crois qu’il y a des exemples sur le forum.

Qu’en penses-tu ?

C’est la pente de la courbe qui semble être recherchée.

Du coup, cf la première formule données qui donnera la pente … Plus le chiffre est élevé plus le bassin de remplit vite … Valeur négative, le niveau baisse
(Enfin, pour un référentiel vertical et orienté vers le haut)
Norbert

1 « J'aime »

La formule donnée ci-dessus nous donnera un débit : quantité d’eau / unité de temps, par exemple si on mesure le niveau en cm, multiplié par la surface du bassin cela donne un volume de bassin, en m3 par exemple.
Côté temps, tout dépend de la fréquence des mesures (min, heure, etc.)
Bref au final cette formule donne un débit d’alimentation si le résultat est positif ou de vidange si le résultat est négatif. J’espère que cela répond à ta question ?
cdt

La pente de la courbe du niveau d’eau d’un bassin ?

Un niveau d’eau, c’est plat, non ?

Je n’ai pas du tout comprendre :sweat_smile:

De manière générale je trouve le sujet est intéressant car il pose la question de où et comment faire du traitement du signal de fond sur un historique de mesures. Je m’étais déjà posé la question avec mon poulailler connecté, je voulais faire de la détection de pics dans mes courbes de températures afin de détecter lorsqu’une poule était dans un nichoir en train de pondre. Mes capteurs LoraWan n’avaient (à priori) pas la capacité à effectuer ces calculs de manière embarquée, étant en deep-sleep la plupart du temps. Je m’étais alors dit qu’il y avait peut-être un sujet autour d’un plugin « traitement du signal » sur la base d’historiques de mesures ou alors un tuto pour un script faisant cela?

Voici ce que j’ai mis en place pour connaître la pente d’une courbe entre les deux dernières mesures de température. La commande info doit être historisée.

$debut = date("Y-m-d H:i:s", strtotime("2 months ago"));
$fin = date("Y-m-d H:i:s", strtotime("now"));  
$all = history::all($idCmdTemperature, $debut, $fin);
$tempNew = count($all) ? $all[count($all) - 1]->getValue() : null;
$tempOld = count($all) >=2 ? $all[count($all) - 2]->getValue() : null;
$dateNew = count($all) ? $all[count($all) - 1]->getDatetime() : null;
$dateOld = count($all) >=2 ? $all[count($all) - 2]->getDatetime() : null;
$diffTemp = $tempNew - $tempOld;
$diffDate = strtotime($dateNew) - strtotime($dateOld);
$pente = $diffTemp / $diffDate;
1 « J'aime »