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

Bonjour, avec le fichier test_reception.txt je reçois:

Array
(
    [PASSKEY] => xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    [stationtype] => EasyWeatherV1.4.7
    [dateutc] => 2020-04-05 18:49:08
    [tempinf] => 70.0
    [humidityin] => 58
    [baromrelin] => 29.885
    [baromabsin] => 29.885
    [tempf] => 68.5
    [humidity] => 50
    [winddir] => 97
    [winddir_avg10m] => 99
    [windspeedmph] => 2.0
    [windspdmph_avg10m] => 1.8
    [windgustmph] => 4.5
    [maxdailygust] => 22.8
    [rainratein] => 0.000
    [eventrainin] => 0.000
    [hourlyrainin] => 0.000
    [dailyrainin] => 0.000
    [weeklyrainin] => 0.000
    [monthlyrainin] => 0.083
    [yearlyrainin] => 3.382
    [solarradiation] => 0.00
    [uv] => 0
    [wh65batt] => 0
    [wh25batt] => 0
    [freq] => 433M
    [model] => HP2550_V1.5.8
)

Concernant l’URL, l’API, les identifiants virtuels, tout a bien fonctionné. J’ai revu à nouveau et ça va.
Je reçois également l’erreur, je comprends donc que les données sont envoyées.

[Sun Apr 05 20:01:11.451589 2020] [:error] [pid 27110] [client 192.168.1.12:1211] PHP Notice:  Undefined index: soilbatt1 in /var/www/html/pws/index.php on line 168
[Sun Apr 05 20:02:11.232897 2020] [:error] [pid 18394] [client 192.168.1.12:34917] PHP Notice:  Undefined index: wh80batt in /var/www/html/pws/index.php on line 144
[Sun Apr 05 20:02:11.232934 2020] [:error] [pid 18394] [client 192.168.1.12:34917] PHP Notice:  Undefined index: wh80batt in /var/www/html/pws/index.php on line 148
[Sun Apr 05 20:02:11.232944 2020] [:error] [pid 18394] [client 192.168.1.12:34917] PHP Notice:  Undefined index: wh40batt in /var/www/html/pws/index.php on line 154
[Sun Apr 05 20:02:11.232952 2020] [:error] [pid 18394] [client 192.168.1.12:34917] PHP Notice:  Undefined index: wh40batt in /var/www/html/pws/index.php on line 158
[Sun Apr 05 20:02:11.232959 2020] [:error] [pid 18394] [client 192.168.1.12:34917] PHP Notice:  Undefined index: soilbatt1 in /var/www/html/pws/index.php on line 164

Quelque chose m’échappe vraiment, tout comme un changement involontaire que je ne trouve plus.
Je voulais juste réduire les points d’erreur possibles pour concentrer la recherche.
Merci pour votre aide

Pour ma part, je n’ai plus du tout les erreurs HTTP dans le log depuis l’ajout des arobases sur les variables de batteries.
Tu es certain que tu as bien pris le bon fichier d’index et pas remis l’ancien par erreur ?
Pour être précis, tu dois avoir exactement ça dans le bloc de gestion des batteries :

    # Batteries
    if ( @$weather_data['wh80batt'] < 2.5 )
    {
	@$weather_data['windBatteryStatus'] = 1.0 ;
    }
    if ( @$weather_data['wh80batt'] > 2.5 )
    {
	@$weather_data['windBatteryStatus'] = 0.0 ;
    }
    @$weather_data['consBatteryVoltage'] = @$weather_data['wh80batt'] ;

    if ( @$weather_data['wh40batt'] < 1.0 )
    {
        @$weather_data['rainBatteryStatus'] = 1.0 ;
    }
    if ( @$weather_data['wh40batt'] > 1.0 )
    {
        @$weather_data['rainBatteryStatus'] = 0.0 ;
    }
    @$weather_data['supplyVoltage'] = @$weather_data['wh40batt'] ;

    if ( @$weather_data['soilbatt1'] < 1.0 )
    {
        @$weather_data['txBatteryStatus'] = 1.0 ;
    }
    if ( @$weather_data['soilbatt1'] > 1.0 )
    {
        @$weather_data['txBatteryStatus'] = 0.0 ;
    }
    @$weather_data['heatingVoltage'] = @$weather_data['soilbatt1'] ;
    @$weather_data['outTempBatteryStatus'] = @$weather_data['batt1'] ;

Sinon, ça a peut-être un impact : tu es en quelle version de PHP ? (faire ‹ php -v › en ligne de commande). Moi c’est 7.0.30-0+deb9u1.

ne changez pas le fichier d’index, continuez avec l’ancien, ne changez vraiment rien, très étrange

Bon, j’ai posté quand même une mise à jour afin de tester correctement la présence ou non des variables de batterie, au lieu de faire un contournement d’erreur massif comme l’auteur d’origine, car je ne trouve pas ça très « propre ».

Donc version 1.2 à télécharger dans le topic initial, puis à renommer en ‹ index.php › sur votre serveur après avoir fait les modifs propres à votre config Jeedom.

Sinon, pour ceux qui ont déjà tout paramétré, éditez votre propre fichier ‹ index.php › et écrasez simplement les lignes que je cite sur mon poste juste avant par celles-ci :

    # ##### TRAITEMENT BATTERIES - DEBUT #####
	## Traitement 'wh80batt' (module vent) :
	if (isset($weather_data['wh80batt'])) {
		if ( $weather_data['wh80batt'] < 2.5 ) {
			$weather_data['windBatteryStatus'] = 1.0 ;
		} else {
			$weather_data['windBatteryStatus'] = 0.0 ;
		}
		$weather_data['consBatteryVoltage'] = $weather_data['wh80batt'] ;
	}
	## Traitement 'wh40batt' (module pluie) :
	if (isset($weather_data['wh40batt'])) {
		if ( $weather_data['wh40batt'] < 1.0 ) {
			$weather_data['rainBatteryStatus'] = 1.0 ;
		} else {
			$weather_data['rainBatteryStatus'] = 0.0 ;
		}
		$weather_data['supplyVoltage'] = $weather_data['wh40batt'] ;
	}
	## Traitement 'soilbatt1' (module Tx) :
	if (isset($weather_data['soilbatt1'])) {
		if ( $weather_data['soilbatt1'] < 1.0 ) {
			$weather_data['txBatteryStatus'] = 1.0 ;
		} else {
			$weather_data['txBatteryStatus'] = 0.0 ;
		}
		$weather_data['heatingVoltage'] = $weather_data['soilbatt1'] ;
	}
	## Traitement 'batt1' (module externe) :
	if (isset($weather_data['batt1'])) {
		$weather_data['outTempBatteryStatus'] = $weather_data['batt1'] ;
	}
	# ##### TRAITEMENT BATTERIES - FIN #####

En clair, vous devez donc vous retrouver avec ceci dans votre script en amont et en aval de la partie modifiée pour les variables de batteries :

	# Date and time
	@$weather_data['dateutc'] = gmdate("Y-m-d\TH:i:s\Z");
	# ##### TRAITEMENT BATTERIES - DEBUT #####
	// ...
	# ##### TRAITEMENT BATTERIES - FIN #####

# Transfert des données vers Jeedom :
	f_CallUrl($v_JeedomUrl, $v_jeedomIdUv, $weather_data['uv']);

J’espère que c’est clair, même si j’ai de gros doutes :crazy_face:

1 « J'aime »

J’ai mis la version 1.2 de l’index et tout fonctionne à nouveau. Merci beaucoup pour votre temps

1 « J'aime »

Ha, nickel, je suis content d’avoir pu solutionner le problème :slight_smile:
Merci du retour :wink:


Bon, prochaine évolution quand j’aurai le temps : faire une sorte de fichier .ini séparé du script PHP principal, afin de regrouper les paramètres perso. Comme ça, pas besoin de tout refaire à chaque mise à jour (même s’il ne devrait plus y en avoir des masses maintenant).

Mais je débute tout juste en PHP, donc là, ça me semble compliqué comme ça :confused:
Pour les pro du dév : j’ai cru comprendre que je pouvais sortir toute la partie du script concernée dans un second fichier PHP d’un simple couper-coller, puis faire référence à ce fichier via une commande ‹ include › dans le script principal. C’est bien ça ? Rien de plus à faire ?

Salut,
J’ai reçu trois nouveaux capteurs intégrés à ma station. Un capteur PM 2,5, un capteur d’humidité du soil et un capteur d’humidité et de température supplémentaire. Je me demande s’il serait possible d’ajouter ces capteurs au script pour recevoir les informations en jeedom. Ma connaissance est nulle donc j’apprécierais quelques « petites » indications. :sonrisa_sudor:
merci

Salut,
J’imagine que oui.
Utilises le fichier raw que j’ai mis dans section "Débogage " pendant une minute ou deux afin de récupérer un log complet dans un fichier texte, puis remets ton fichier index précédent et postes le fichier texte.
Je verrai si c’est possible :wink:

Merci

escribe o pega Array
(
    [PASSKEY] => xxxxxxxxxxxxxxxxxxxxxxxxx
    [stationtype] => EasyWeatherV1.4.7
    [dateutc] => 2020-05-08 19:00:54
    [tempinf] => 75.0
    [humidityin] => 69
    [baromrelin] => 29.853
    [baromabsin] => 29.853
    [tempf] => 67.1
    [humidity] => 90
    [winddir] => 69
    [winddir_avg10m] => 68
    [windspeedmph] => 0.0
    [windspdmph_avg10m] => 0.0
    [windgustmph] => 0.0
    [maxdailygust] => 18.3
    [rainratein] => 0.000
    [eventrainin] => 0.047
    [hourlyrainin] => 0.008
    [dailyrainin] => 0.047
    [weeklyrainin] => 0.047
    [monthlyrainin] => 0.189
    [yearlyrainin] => 6.461
    [solarradiation] => 0.00
    [uv] => 0
    [temp1f] => 84.2
    [humidity1] => 52
    [soilmoisture1] => 15
    [pm25_ch1] => 5.0
    [pm25_avg_24h_ch1] => 7.0
    [wh65batt] => 0
    [wh25batt] => 0
    [batt1] => 1
    [soilbatt1] => 1.1
    [pm25batt1] => 4
    [freq] => 433M
    [model] => HP2550_V1.5.8
)el código aquí

OK, je regarde ça la semaine prochaine, pas trop de temps libre ce weekend malheureusement …
Mais à vue de nez, il n’y a pas de soucis, il suffit d’ajouter des lignes avec des variables :wink:
Par contre, pour la gestion des valeurs de batterie, je ne vois pas trop, donc je me contenterai de les renvoyer telles quelles, sans les interpréter : il faudra que tu les historises et voies comment elles évoluent dans le temps …

Bonjour @ tous

Genial ce tuto :wink: , j’ai toutes les informations qui remontent de ma station météo Froggit HP1000SE.
Reste plus qu’a configurer l’affichage pour que cela soit plus lisible.

Encore merci d’avoir pris le temps de l’expliquer :+1:

1 « J'aime »

Merci de ton retour :slight_smile:
Cherche sur mon profil : j’ai posté deux ou trois tuto de widgets que j’ai spécialement créés pour l’affichage de ma station météo justement :wink:

Merci LMQT, mais créer des widgets est un peu compliqué pour moi, je ne comprends pas ce pas que la V4 n’est plus accès aux widgets.

Je m’y pencherai plus tard quand j’aurais le courage.
Pour l’instant, j’ai mes mesures qui remontent, je vais pouvoir créer des scénarios en fonctions des conditions climatiques.

Encore merci.

Il y a un tres bon tuto expliquant les widgets en V4

Merci Lulu740, je vais le chercher.

Bonjour, aujourd’hui, je me souviens avec désinvolture de cette demande que je suppose que vous avez également oubliée. juste pour rappel, bien sûr pas pressé. :guiño:

Hello,
Oups c’est vrai que j’ai oublié. Je n’ai quasiment pas de temps perso libre en ce moment, c’est tendu, désolé :frowning:

Mais ce n’est pas très compliqué :

  • il faut ajouter des équipements de type « info » dans ton virtuel, un par nouvelle ligne du fichier d’export
  • dans le fichier index.php, il faut ajouter :
    • à la fin de la section « Variables pour Jeedom » (donc vers la ligne 77 avant modif), ajouter une ligne par nouvelle information, en renseignant un nouveau nom de variable à choisir à ta guise et le numéro d’index du virtuel Jeedom (prendre modèle sur les lignes existantes)
    • à la fin de la saction « Transfert des données vers Jeedom », (vers ligne 244 avant modif), ajouter également une ligne par nouvelle information, en reprenant le nom de la variable précédemment créée, ainsi que le nom de l’information que tu trouves dans l’export brut (raw).

Exemple avec la nouvelle information de ton fichier raw « [pm25_ch1] » :

  • 1ère ligne à ajouter :

$v_jeedomIdPM25 = "&id=209"; # PM 2.5

  • 2nde ligne à ajouter :

f_CallUrl($v_JeedomUrl, $v_jeedomIdPM25, $weather_data['pm25_ch1']);

Nota :

  • pour la donnée « [temp1f] », il faudra ajouter une formule de conversion en Celsius
  • pour les données de batteries, il faudra gérer suivant s’il s’agit d’une tension en V, ou d’une alerte binaire (0/1). Les chiffres que tu obtiens (1.1 et 4) me font supposer qu’il s’agit de deux tensions.
1 « J'aime »

Merci beaucoup. C’est vraiment facile, tout fonctionne.

Avec plaisir, je n’ai pas fait grand chose du coup et désolé de ne pas avoir répondu plus tôt …
Je dois d’ailleurs encore séparer le fichier de config via un include quelconque pour faciliter les màj, mais comme je ne sais pas faire, je n’ai pas non plus eu le temps de chercher :frowning:

Hello,

Tu as choisi quel matériel dans l’appli pour la HP 1000 SE ?

Merci,