[TUTO] Liaison avec une station météo personnelle (PWS)

Bonsoir,

Comment faire la liaison entre weewx et le fichier export en txt ?

Quel driver sous weewx doit-on utiliser ?

Merci

Je me doutais bien que c’était ça (encodage), ça y ressemblait fort en tout cas :wink:

Pour weewx, aucune idée car ça n’a pas de rapport avec Jeedom, ça sort du topic là.
J’ai juste laissé la possibilité d’export au cas où ça intéresserait du monde car elle était présente dans le script initial que j’ai modifié pour l’adapter à Jeedom, mais je n’en sais pas plus … à toi de chercher :slight_smile:
Nota : j’ai laissé dans mon script toutes les infos pour aller voir celui d’origine, notamment le lien vers le topic (mais pas en français), donc tu dois pouvoir y trouver du monde pour t’aider, voire peut-être directement directement les méthodes pour cet autre logiciel.

Merci de la réponse,

Je vais étudier ça et quand j’aurai trouvé je donnerai la solution ici :+1:

Sébastien

Comme je disais, ça n’a pas de rapport avec Jeedom, je pense qu’il faudrait plutôt faire un topic dédié :wink:

Ok Pas de problème

1 « J'aime »

Bonsoir,

j’ai besoin pour un logiciel qui incrémente la quantité de pluie chaque interval de soustraire la différence de pluie

$weather_data['dailyrainin']

je rentre le daillyrain dans un fichier txt, il me lit la valeur du dernier interval et fait la soustraction du delta.

dailyrain = nouveau dailyrain - ancien dailyrain
( le plus souvent cela doit faire 0 )

il faudrait que je remplace cette variable par quelquechose de plus simple car cette variable me retourne 0 alors que la valeur n’est pas nulle.

Merci d’avance

Sébastien

Bonjour,

Désolé mais d’une part je n’ai pas compris grand chose sur ce qui te bloque, d’autre part c’est encore du 100% hors topic ça : aucun rapport avec la liaison station=>jeedom :frowning:
Fais ton propre topic dédié à ton soucis dans la rubrique d’entraide et ajoutes ton code, ou au moins la partie concernée, parce que là c’est pas super évident de comprendre pour t’aider :wink:

1 « J'aime »

Bonsoir ,

Mon problème vient de la valeur « eventrainin » qui chez moi ne se remet à pas à zéro avant 30 min ou quelques heures. Je ne sais pas si je suis le seul dans ce cas. Si c’est déja arrivé à quelqu’un, existe t-il une solution. J’ai le dernier firmware.

Sur Jeedom il y a donc un mauvais report de la pluie instantanée.

POUR L’INSTANT JE SUIS QUE SUR JEEDOM

J’ai besoin de cette valeur pour calculer via weewx la valeur de la pluviométrie quotidienne car elle s’incrémente à chaque pluie. Et je peux pas faire autrement.

La solution que j’avais trouvée c’était de faire la soustraction de la nouvelle pluie - l’ancienne pour trouver une pseudo pluie instantanée.

Merci

Sébastien

Concernant cette variable, relis ce que j’ai mis un peu plus haut :wink:

La variable « eventrain » est propre à chaque station, elle ne renvoie pas la même chose suivant la marque et la version de firmware. Il faut consulter sa notice, mais ce n’est pas tout le temps défini. Ce que j’ai mis en commentaire vaut uniquement pour la mienne et celles possédant exactement le même firmware.

En fait, beaucoup de gens se plaignent de cette valeur sur les différents forums météo dans le monde entier, car suivant la marque et parfois même le modèle de la station, la valeur ne concerne pas du tout la même chose.
J’ai l’impression que c’est une variable fourre-tout et que chaque fabricant met ce qu’il imagine bon dedans malheureusement :frowning:

La variable de pluie quotidienne existe normalement, c’est la « daily ». En tout cas sur ma station je l’ai (ce n’est peut-être pas le cas sur toutes les marques …) et elle fonctionne correctement.

merci pour ta réponse.

Pour ma part, j’ai une WALDBECK Halley WHT3 avec le firmware WH2650A_V1.6.3, un pluviomètre reste un contact qui se déclenche lorsqu’une quantité d’eau est atteinte et la station météo calcule le nombre d’impulsion sur un temps donné.

Nous sommes juste embêté avec un problème de soft et qu’on a pas la possibilité de modifier le firmware.

Oui c’est exactement ça en gros tu fais un deuxième fichier que tu nommes par exemple inc_parametres.php avec dedans :

<?php
# **********************
# *** SETTINGS START ***

# Variables pour Jeedom
	# URL type = "http://ADRESSE-IP-JEEDOM/core/api/jeeApi.php?apikey=CLE-API-JEEDOM&type=virtual&id=ID-VIRTUEL-JEEDOM&value=XXX"
	$v_JeedomUrl = "http://192.168.0.39/core/api/jeeApi.php?apikey=CLE-API-JEEDOM&type=virtual";
	$v_JeedomIdRay = "&id=2949";			# solarradiation
	$v_jeedomIdUv = "&id=2950";			# uv
	$v_jeedomIdTempExt = "&id=2951";		# tempc
	$v_jeedomIdHygroExt = "&id=2952";	# humidity
	$v_jeedomIdPressAbs = "&id=2953";	# baromabshpa
	$v_jeedomIdPressRel = "&id=2954";	# baromrelhpa
	$v_jeedomIdVentDir = "&id=2955";		# winddir
	$v_jeedomIdVentVit = "&id=2956";		# windspeedkmh
	$v_jeedomIdVentRaf = "&id=2957";		# windgustkmh
	$v_jeedomIdPluieInst = "&id=2958";	# eventrainmm
	$v_jeedomIdPluieMoy = "&id=2959";	# rainratemm
	$v_jeedomIdPluieHeure = "&id=2960";	# hourlyrainmm
	$v_jeedomIdPluieJour = "&id=2961";	# dailyrainmm
	$v_jeedomIdPluieSem = "&id=2962";	# weeklyrainmm
	$v_jeedomIdPluieMois = "&id=2963";	# monthlyrainmm
	$v_jeedomIdPluieTot = "&id=2964";	# totalrainmm
	$v_jeedomIdTempRess = "&id=2965";	# windchillc (wind chill = température ressentie l'hiver (<25°C))
	$v_jeedomIdPtRosee = "&id=2966";		# dewptc (dew point = point de rosée)
	$v_jeedomIdTempInt = "&id=2967";		# tempinc
	$v_jeedomIdHygroInt = "&id=2968";	# humidityin
	$v_jeedomIdBatterie = "&id=2969";	# wh65batt (calculs du script : windBatteryStatus, rainBatteryStatus, txBatteryStatus)
	$v_jeedomIdModele = "&id=2970";		# model
	$v_jeedomIdFirmware = "&id=2971";	# stationtype
	$v_jeedomIdFrequence = "&id=2972";	# freq
	$v_jeedomIdHeatIndex = "&id=2973";	# heatindexc (indice de chaleur US = température ressentie l'été (quand il fait >25°C))
	$v_jeedomIdPointGivre = "&id=2974";	# point de givre

# Debug
	error_reporting(E_ALL);
	ini_set('display_errors', 'on');

# Settings: General
	$device = "auto";  		# Use 'auto' for automatic name from PASSKEY else uses the name 
	$json_data_log = 0; 	# Activate the export to .json (données brutes + données calculées)
	$csv_data_log = 0; 		# Activate the export to .csv (données historisées, une ligne par relevé)
	$txt_data_log = 0;		# Activate the export to .txt (uniquement les données reçues brutes)
	$txt_weewx = 0;         # Activate the export to .txt for weewx driver

# Settings: json, csv, txt and Weewx driver data log dir
	$json_data_logdir = "/var/www/html/pws";	# export au format json
	$csv_data_logdir = "/var/www/html/pws";		# export au format csv
	$txt_data_logdir = "/var/www/html/pws";		# export au format txt des données brutes reçues
	$txt_dir_weewx = "/var/www/html/pws"; 		# export au format Weewx

# *** SETTINGS END ***
# ********************
?>

Puis dans ton fichier index.php tu ajoutes la ligne
include(« inc_parametres.php »);

<?php

/*
***********************************
/var/www/html/data/report/index.php
***********************************

Changelog :
	v1.0	06/02/2020	Fonctionnement 100% OK Jeedom.
	v1.1	27/03/2020	Ajout calcul du point de givre.
						Ajout d'arobases devant variables de batteries pour éviter remontée d'erreur dans les logs.
	v1.2	06/04/2020	Revue des traitement de niveaux batterie pour simplifier le code et éviter les erreurs.


Script PHP pour lire les données provenant de EasyWeather (v1.3.6 minimum).
Basé sur un travail de Christian C. Gruber 2017 on Fine Offset, modifié par Raffaello Di Martino http://www.kwos.it
Paramétrage de la station météo à faire pour qu'elle exporte au format EcoWitt, avec le logiciel Android « WS View » :
	https://play.google.com/store/apps/details?id=com.ost.wsview

Modifications perso LMQT (pour fonctionnement avec Jeedom) :
	- modif des répertoires pour enregistrer les logs et les fichiers de sortie TXT et JSON,
	- ajout sortie HTTP vers URL Jeedom pour renseigner les champs d'un virtuel,
	- nettoyage des parties de codes envoyant dans les serveurs externes (FHEM (IP), meteotemplate (HTTP), Meteonetwork (FTP), etc.),
	- ajout d'écritures des données brutes et formatées JSON dans des fichiers texte,
	- reprise formule de calcul de l'indice de chaleur US,
	- formule de calcul du point de givre,
	- échappement des erreurs sur les variables de batteries pour empêcher les envois de logs dans http.error,

Features:
	* Receivers data from webserver as $_POST array
	* Converts data to other units (°C, km/h, KTS, mm)
	* Stores data in JSON format to text file (if $json_data_log = 1)
	* Stores data in CSV format to text file (if $csv_data_log = 1)
	* Stores data in TXT format to text file (if $txt_data_log = 1)
	* If $device = "auto", device name is extracted from weather station data stream 'PASSKEY' - supports multiple WS

Usage:
	* Installer un serveur web avec support du PHP (par exemple une machine avec Jeedom)
	* Créer un dossier nommé par exemple "/pws" (soit "/var/www/html/pws" )
	* Y placer le fichier "index.php" (nommage impératif !)
	* Configurer ce fichier index.php (API Jeedom, @IP, ID des virtuels, etc.)
	* Paramétrer la station météo pour exporter ses données vers le serveur web créé (exemple : "192.168.0.88" et "/pws")

*/

include("inc_parametres.php");

# Fonction d'appel de l'URL Jeedom
	function f_callUrl($vf_url, $vf_id, $vf_valeur){
		$v_ch = curl_init();
		curl_setopt($v_ch, CURLOPT_URL, $vf_url.$vf_id.'&value='.$vf_valeur);
		curl_setopt($v_ch, CURLOPT_RETURNTRANSFER, 1);
		$v_ReturnUrl = curl_exec($v_ch);
		curl_close($v_ch); 
	}

Un grand merci pour ton adaptation, fonctionne avec succès chez moi avec une station :

Waldbeck Halley Station météo Multifonction pour extérieur & intérieur WiFi

Plus qu’a essayer de personnaliser le widget V4

1 « J'aime »

Merci beaucoup :slight_smile:

Pour mes widgets en v4, je les ai modifiés il y a plusieurs mois (d’ailleurs j’ai deux beta-testeurs dont un par MP :laughing:) et je continue à les bricoler un peu de temps en temps. Du coup si tu veux je vais tâcher de les mettre en ligne sur mes topics correspondants alors. Allez, je tente de libérer du temps pour les poster aujourd’hui ou demain :wink:

Genial grand merci encore une fois

Avec plaisir :wink:
C’est fait pour le pluviomètre : [TUTO] Widget personnalisé de type pluviomètre (Jeedom v3 & v4) - #10 par NathetWill
Et pour les jauges Highcharts : [TUTO] Widgets personnalisés de type jauge Highcharts - #28 par LMQT

Bonjour,

Il semblerais qu’il y a un soucis depuis la 4.2 de Jeedom. Je viens de faire la mise a jour ce matin et je n’ai plus de remonté des données. Il semblerais qu’il y ai eu des modifications au niveau de la sécurité et j’imagine qu’il doit y avoir un cle (API) à changer. Une idée pour mettre le script à jour ? @LMQT as tu eu le problème ?

Bonjour,

Désolé, faute de temps, je suis toujours en 4.1.27 :smiley:

Effectivement, changements concernant la sécurité si je lis ça :

4.2 : Sécurité

  • Afin d’augmenter significativement la sécurité de la solution Jeedom, le système d’accès aux fichiers a changé. Avant certains fichiers étaient interdits depuis certains emplacements. A partir de la v4.2, les fichiers sont explicitement autorisés par type et par emplacement.
  • Changement au niveau de l’api, auparavant “tolérante” si vous arriviez avec la clef du Core en indiquant plugin XXXXX. Ce n’est plus le cas, vous devez arriver avec la clef correspondante au plugin.
  • En api http vous pouviez indiquer un nom de plugin en type, ce n’est plus possible. Le type correspondant au type de la demande (scenario, eqLogic, cmd, etc.) doit correspondre au plugin. Par exemple pour le plugin virtuel vous aviez type=virtual dans l’url il faut maintenant remplacer par plugin=virtual&type=event.
  • Renforcement des sessions : Passage en sha256 avec 64 caractères en mode strict.

L’équipe Jeedom a bien conscience que ces changements peuvent avoir un impact et être gênant pour vous mais nous ne pouvons transiger sur la sécurité. Les plugins doivent respecter les recommandations sur l’arborescence des dossiers et fichiers : Doc.

Maintenant c’est un script, donc ça ne devrait pas être concerné par la mise à jour de Jeedom … sauf si la clé API n’est plus celle qu’il faut choisir.
Essaie de regarder ce qui est proposé au niveaux des clés pour la communication vers un virtuel (je n’ai pas la bonne version sous la main désolé) ?

Bonjour,

Merci pour ta réponse, effectivement il faut maintenant utiliser la clé API du plugin « VIRTUAL » et changer l’appel de type=virtual en plugin=virtual&type=event.

Dans le fichier index.php cela donne :

Index.php
$v_JeedomUrl = "http://xxx.xxx.xxx.xxx/core/api/jeeApi.php?apikey=xxxXXXxXXXXXXXxxxXXXxx&plugin=virtual&type=event";

1 « J'aime »

Grand merci,
je confirme je suis en 4.2.7 que @LMQT et @rvtt ont bien trouvé la solution, ce qui est dommage c’est que j’avais le même problème mais sans aucunes remontée dans les logs et du coup j’ai cherché pas mal de temps avant d’avoir l’idée de revenir ici pour proposer la solution, mais trop tard j’étais devancé.

Encore merci à vous deux pour le script et le retour d’experience

2 « J'aime »

Merci à vous deux pour la solution surtout :wink:
Je vais tâcher de mettre à jour ce WE le post principal avec un second script modifié pour les personnes sous Jeedom v4.2x …

1 « J'aime »

Bonjour à tous.

Petite mise à jour du script pour intégrer l’info d’uptime des stations qui est apparue dans les firmwares « Pro » de juillet dernier => voir fin du premier post de ce topic.
Également une petite astuce pour la convertir rapidement en quelque chose de lisible, plutôt qu’en secondes.