Création fichier CSV avec dernières données météo

Jeedom Core : 4.4.20 (master)
Version OS : debian 11.11
Version PHP : 7.4.33

Bonjour

J’ai deux stations météo :

  • Une dont les données sont récupérées par Weewx (VM Debian sous Proxmox) puis via le plugin Script je récupère les données stockées dans un fichier XML.

  • Une station dont je récupère les données via le plugin PWS sur Jeedom.

Je souhaite faire « monter » toutes les 5 minutes dans un fichier XML et vers un serveur Weewx les données météo récupérées par PWS.

Pour l’instant je bute, Data Export crée des fichier CSV contenant des séries de données.

Cloudsyncpro me permettrai d’envoyer le fichier XML vers le répertoire Weewx.

Comment créé ce fichier XML contenant UNIQUEMENT les dernières données méteo ?

Une sorte de script à l’envers qui envoie au lieu de recevoir :blush:

Merci

Je me réponds à moi même :slight_smile:

En php dans un scénario ?
Si oui, apprendre à le faire.

Des pistes ?

Bonjour

J’ai donc commencé mon scénario, celui ci fonctionne bien quand je l’exécute manuellement mais il ne fonctionne pas en mode programmé (toute les 5 minutes).

Le fichier est créé dans /core/ajax

Où est l’erreur ?

Merci

$fichier = "meteowps.csv";

if( file_exists ( $fichier))
     unlink( $fichier ) ;


$cmd = cmd::byString("#[Station WPS][WPS VALLON][Pression Absolue]#");
$barometer = $cmd->execCmd();

$cmd = cmd::byString("#[Station WPS][WPS VALLON][Température Extérieure]#");
$tempext = $cmd->execCmd();

$cmd = cmd::byString("#[Station WPS][WPS VALLON][Humidité Extérieure]#");
$humext = $cmd->execCmd();

$cmd = cmd::byString("#[Station WPS][WPS VALLON][Vitesse du Vent]#");
$windspeed = $cmd->execCmd();

$cmd = cmd::byString("#[Station WPS][WPS VALLON][Provenance du Vent]#");
$dir = $cmd->execCmd();

$cmd = cmd::byString("#[Station WPS][WPS VALLON][Vitesse de Rafale]#");
$gust = $cmd->execCmd();

$cmd = cmd::byString("#[Station WPS][WPS VALLON][Pluie 24h]#");
$dayrain = $cmd->execCmd();

$cmd = cmd::byString("#[Station WPS][WPS VALLON][Radiation Solaire]#");
$radiation = $cmd->execCmd();

$cmd = cmd::byString("#[Station WPS][WPS VALLON][UV Index]##");
$uv = $cmd->execCmd();

$temps= date("d-m-Y H:i:s");


$donnees= "Time,Barometer,Temp,Humidity,Windspeed,Dir,Gust,Dayrain,Radiation,Uv"."\n".$temps.",".$barometer.",".$tempext.",".$humext.",".$windspeed.",".$dir.",".$gust.",".$dayrain.",".$radiation.",".$uv."\n";
file_put_contents($fichier, $donnees);

fclose($fichier);

Il n’a pas de log pour ce scénario ?

Le voila

[2025-11-15 12:35:03][SCENARIO] -- Début : Scenario execute automatiquement sur programmation.
[2025-11-15 12:35:03][SCENARIO] - Exécution du sous-élément de type [action] : code
[2025-11-15 12:35:03][SCENARIO] Exécution d'un bloc code
[2025-11-15 12:35:03][SCENARIO] Fin correcte du scénario
------------------------------------
[2025-11-15 12:40:03][SCENARIO] -- Début : Scenario execute automatiquement sur programmation.
[2025-11-15 12:40:03][SCENARIO] - Exécution du sous-élément de type [action] : code
[2025-11-15 12:40:03][SCENARIO] Exécution d'un bloc code
[2025-11-15 12:40:03][SCENARIO] Fin correcte du scénario
------------------------------------
[2025-11-15 12:45:03][SCENARIO] -- Début : Scenario execute automatiquement sur programmation.
[2025-11-15 12:45:03][SCENARIO] - Exécution du sous-élément de type [action] : code
[2025-11-15 12:45:03][SCENARIO] Exécution d'un bloc code
[2025-11-15 12:45:03][SCENARIO] Fin correcte du scénario
------------------------------------
[2025-11-15 12:50:03][SCENARIO] -- Début : Scenario execute automatiquement sur programmation.
[2025-11-15 12:50:03][SCENARIO] - Exécution du sous-élément de type [action] : code
[2025-11-15 12:50:03][SCENARIO] Exécution d'un bloc code
[2025-11-15 12:50:04][SCENARIO] Fin correcte du scénario
------------------------------------
[2025-11-15 12:55:02][SCENARIO] -- Début : Scenario execute automatiquement sur programmation.
[2025-11-15 12:55:02][SCENARIO] - Exécution du sous-élément de type [action] : code
[2025-11-15 12:55:02][SCENARIO] Exécution d'un bloc code
[2025-11-15 12:55:02][SCENARIO] Fin correcte du scénario
[2025-11-15 12:59:03][SCENARIO] -- Début : Scenario lance manuellement.
[2025-11-15 12:59:03][SCENARIO] - Exécution du sous-élément de type [action] : code
[2025-11-15 12:59:03][SCENARIO] Exécution d'un bloc code
[2025-11-15 12:59:03][SCENARIO] Fin correcte du scénario
------------------------------------
------------------------------------
[2025-11-15 13:00:04][SCENARIO] -- Début : Scenario execute automatiquement sur programmation.
[2025-11-15 13:00:04][SCENARIO] - Exécution du sous-élément de type [action] : code
[2025-11-15 13:00:04][SCENARIO] Exécution d'un bloc code
[2025-11-15 13:00:04][SCENARIO] Fin correcte du scénario

et le fichier est correct.

Time,Barometer,Temp,Humidity,Windspeed,Dir,Gust,Dayrain,Radiation,Uv
15-11-2025 12:59:03,997,19.9,72,20.5,172,23.7,5.31,273.3,2

Bonjour,

Je pense qu’il faut indiquer le chemin complet de votre fichier dans la variable $fichier

1 « J'aime »

Pas ainsi, svp. Il faut utiliser le bouton </>, voir le lien. Même chose pour le contenu du fichier.

Bonjour,

Le scénario fonctionne très bien. Le fclose en fin de scénario doit être supprimé. Il n’est nécessaire que quand on utilise fopen

L’endroit où le fichier est créé, est différent quand le scénario est exécuté manuellement ou automatiquement:
image
Comme précisé au dessus par Bonjour , il faut utiliser un nom de fichier avec un chemin absolu.
Ça évite de polluer l’arborescence de Jeedom voire même d’écraser des données essentielles au fonctionnement de Jeedom

Cela est fait, milles excuses.

Merci @Bonjour et @jpty pour l’info.

@jpty comment faite vous pour afficher « Log: Répertoire courant … »

Merci

C’est l’action log:

Merci

J’essaye.

j’ai fait un petit pas :slight_smile:

Par contre malgré un

$fichier = "/var/www/html/meteowps.csv";

j’ai :


------------------------------------
[2025-11-15 13:55:02][SCENARIO] -- Début : Scenario execute automatiquement sur programmation.
[2025-11-15 13:55:02][SCENARIO] - Exécution du sous-élément de type [action] : code
[2025-11-15 13:55:02][SCENARIO] Exécution d'un bloc code
[2025-11-15 13:55:03][SCENARIO] - Exécution du sous-élément de type [action] : action
[2025-11-15 13:55:03][SCENARIO]    Log : repertoire courant = /var/www

:disappointed_relieved:

Et tu n’as pas de fichier crée ici ? /var/www/html/meteowps.csv

Mais oui bien sur, je n’avais pas mis la page à jour ( le boulet).

Par contre le répertoire dans le log reste /var/www

Puis je créer un répertoire perso dans /var/www/html sans gêner le fonctionnement de Jeedom ?

Ce log indique le répertoire de travail de base quand un scénario s’exécute de façon programmé.
C’était pour te montrer surtout pourquoi ça fonctionnait en exécution manuelle et pas en exécution programmé. Disons que le fichier était en fait crée dans /var/www mais tu n’avais pas été voir dedans.

Tu indiques maintenant clairement l’endroit où doit être le fichier donc tout vas bien et il faudra aller évidement regarder à cet endroit pour le trouver :slight_smile:

Oui

Excellent !!

Je vais passer à la phase 2, le transfert du fichier vers la VM où tourne le script météo Weewx.

en ftp … je pense :thinking:

Re

En fait je dois utiliser le SFTP … help me

Merci

re

L’aventure continue, je ne suis pas arrivé à faire un scénario pour utiliser le SFTP.

Merci CloudSync Pro de faire le travail.
Mon fichier est bien arrivé sur la VM Weewx.

Par contre si vous connaissez le bon code pour faire du SFTP avec Jeedom je suis preneur.