Utilisation de la date/heure v5 pour l'historisation dans un NAS

Bonjour à tous,
Avec la v4, je sauvegarde, une fois par jour, sur un Synology, la consommation de gaz associée à la température du jour.
Le push est fortement inspiré des recommandations de @fgtoul données dans le post DATA LOGGER valeurs analogiques.
En ipx800 v4

  • Push: /Domo/scriptGaz.php?time=$TS&ipx=4&cptGaz=$C14&Temp=$A3.
  • csv :
    image

En ipx800 v5

  • Push: /Domo/scriptGaz.php?time=$327687$&ipx=5&cptGaz=$327709$&Temp=$262153$
    avec $327687$ représentant [IPX]Clock
  • csv : 1638781492 5 14638 4.58
    image
    => la date/heure est présentée dans son format non décodé

Existe-t-il un moyen de simple de décoder la date ou d’utiliser une syntaxe de type TS présentant la date décodée ?

Bien sur, j’ai testé, à tout hasard, l’insertion de $TS$ qui ne fonctionne pas.
Bonne journée

1 « J'aime »

Bonjour Michel94
l’ipx800 ne sait pas pour le moment envoyer des timestamps en clair.
Il va falloir faire la conversion dans votre script Php

exemple avec la conversion d’une variable $timestamp :


$date = new \DateTime();
$date->setTimeStamp($timestamp);

//ISO8601 formatage
echo $date->format('c'); //similaire à 2021-12-06T12:05:35+01:00

bonne journée

1 « J'aime »

Peut être passer par un widget html en integrant du script pour convertir le timestamp en date décodée puis l’affecter à une variable comme ci-dessous (fgtoul si vous pouvez compléter pour l’affectation de variables car j’ai pas réussi pour cette partie :wink: le code venant du site je crois me souvenir) le code este à épurer, en fait à la base je l’ai commencé pour faire un widget pour avoir l’azimuth et l’élevation du soleil pour ensuite piloter mes VR (mais je me tate à le faire via jeedom ou home-assistant qui ont des modules pour cela mais je préférerais le faire en autonomie dans l’ipx !

iframe srcdoc='

    <link rel="stylesheet" href="assets/lib/gce-glyph/gce-glyph.min.css">
    
    <script type="text/javascript">
	  
      // shortcuts for easier to read formulas
	  var PI   = Math.PI, sin  = Math.sin, cos  = Math.cos, tan  = Math.tan, asin = Math.asin, atan = Math.atan2, acos = Math.acos, rad  = PI / 180;
	
      autoRefresh(); // Optional
	  
      /* Auto refresh (optional) */
      function autoRefresh()
        {setInterval(() => {init();}, 1000); // 1 sec
        }
      /***/

      /* Get state and set widget */
      function init() {
        let lockColor, stateMsg;
        lockColor = "#FF0000"; // red
        var ts = new Date();
	stateMsg = ts.toLocaleDateString() + " " + ts.toLocaleTimeString();
        setMessage(stateMsg, lockColor);
      }
      /***/
    
	  function formatDate(timestamp)
	    { var NewDate = new Date(timestamp);
          var dd = NewDate.getDate();
          var mm = NewDate.getMonth() + 1;
          var yyyy = NewDate.getFullYear();
          return dd + "/" + mm + "/" + yyyy;
	    }
      
      /* Set state message */
      function setMessage(text, color)
        { let msg = document.getElementById("myStateMsg");
          msg.style.color = color;
          msg.innerHTML = text;
        }
      /***/
    </script>

    
    <table width="100%" style="padding: 10px">
      <tr style="display: flex; align-item: center; justify-content: space-between">
     
        <!-- State message -->
          <td>
            <span id="myStateMsg" style="font-size: 15px"></span>
          </td>
          <td>
            <span id="myStateMsg" style="font-size: 15px"></span>
          </td>
        <!---->

      </tr>
    </table>
 '>
</iframe>

passer par un widget n’est pas une bonne solution car cela va nécessiter l’affichage d’un dashboard h24 pour exécution du script.
Il est beaucoup plus facile de l’inclure sur le NAS en attendant une évolution sur V5.

Merci à @fgtoul pour l’information sur la transformation du format time.
au final, j’utilise un format simplifié pour la date, puisque je ne remonte qu’une information par jour.
Le script utilisé sur le Synology :

<?php
//url attendue :
//http://ipSyno/DossierWeb/Domo/scriptGaz.php?time=$TS&ipx=4&cptGaz=$C14&Temp=$A3
//date_format($date,'d/m/y') pour seulement le jour (heure UTC, décalage jour possible aux alentours de minuit)
//date_format($date,'d/m/y H:i:s') pour le jour et l'heure (heure UTC)
//date_format($date,'c') pour le jour, l'heure et le décalage avec l'heure UTC

$date = new \DateTime();
$date->setTimeStamp($_GET["time"]);
$monHisto=fopen('./HistoGaz.csv', 'a+');
fputs($monHisto, date_format($date,'d/m/y') . ";" . $_GET["ipx"] . ";" . $_GET["cptGaz"] . ";" . $_GET["Temp"] . ";"  ."\n");
fclose($monHisto);
?>

la ligne dans le csv :
06/12/2021 5 390 7.52
image

Bonne journée

J’avais dit peut-être ! :yum: Certes mais pas plus qu’un scenario non (après le refresh peut être mis à la minute) ?? En l’occurence, là c’est une base comme dit plus haut pour un calcul de position de soleil ! :sunglasses:

je ne suis pas sûr de comprendre :slight_smile: Un scénario est autonome et ne nécessite pas d’ouvrir une session sur le dashboard où est situé le widget. Car il ne faut pas oublier que les widgets sont exécutés par le navigateur Internet, pas par l’IPX.

Votre script de calcul de position du soleil aurait donc tout intérêt à être mis sur un serveur afin d’être autonome.

Ah effectivement je pensais qu’il s’exécutait en autonomie même sans que personne y accède ! D’où l’intérêt effectivement d’une box externe type jeedom ou HA ou domoticz pour ce type de besoin dommage que le plugin weather ne fournissent pas ces données… ou alors j’ai pas vu non plus mais là je vais partir en dépression ! :sob:

Dans les scénarios, vous pouvez exploiter, avec le plugin Weather, les données météo actuelles et prévisionnelles sur plusieurs jours… mais je n’ai pas vu la position du soleil… a moins que ce soit la variable niveau (dont j’ai du mal à comprendre la signification :thinking:)

je suis en train de regarder avec le plugin heliotrope sur jeedom qui fournit ces données (pas existant sur HA), reste a voir comment le coupler avec l’ipx car j’ai toujours pas reussi a echanger en mqtt avec lui ! :sob:

Bonsoir @cce66,

Au lieu de coder un truc compliqué vu que la précision n’est pas au degré près, ne serait-il pas possible d’extrapoler les données d’une courbe de trajectoire du soleil et d’utiliser des formules simples applicables à une scène ?

Ex : trouver la courbe du soleil à la bonne position (latitude)

Azimut au coucher (hauteur angulaire 0°) :
23/12 : 235°
20/11 ou 22/11 : 242°

21/05 ou 23/07 : 296°
22/06 : 303°

L’azimut bouge d’environ 15° par mois sauf proche des solstice (hivers et été) de 7°.

Donc 235 solstice hivers + 7 le mois suivant puis +15 le mois d’après puis +15…

Puis pour l’élevation, soit toujours utiliser cet abaque en le simplifiant, soit utiliser l’heure de coucher/lever du soleil, sachant que le soleil fait environ 15° par heure (c’est sur un cercle donc c’est environ 15 degré d’élévation au coucher et lever mais pas vrai plus on se rapproche de midi).

C’est juste une piste, y a moyen d’optimiser le truc.

Pepito

Bonjour,

Dans la liste de choix des widgets , la variable niveau n’apparait pas; il faut passer pas une ana
Bonne soirée