Fonction php permettant de faire un calcul avec des valeurs de capteurs en paramètre

Bonjour,

Je cherche à faire un truc tout simple comme une fonction retournant la valeur Wind Chill qui est un calcul basé sur la température et la vitesse du vent dans le plugin Virtual.

Je déclare une info virtuelle dans le pluggin Virtual, je vais ensuite faire mes calculs.
Je suis partit sur une fonction PHP écrite dans le user.function.class.php et en mettant juste 2 informations en paramètre pour commencer.
Le souci est que je n’arrive à faire aucun calcul car les valeurs du capteur sont considérées comme STRING et impossible de trouver comment les convertir.

Une idée?

Voici ma fonction de test :

public static function calcul($_temp,$_wind) {
$_result=$_temp + $_wind;
return ‹ temp ›.$_temp.‹ wind ›.$_wind.‹ result ›.$_result;
}

voici le résultat :
→ On voit bien les variables d’entrées venant du pluggin Weather
→ Le calcul est égal à 0

Merci d’avance.

J’avais eu le même problème, j’ai abandonné la lutte et j’ai transmis les noms des commandes sans # en les reconstituant dans la fonction.

Exemple ici :

Merci du conseil.
Je pense qu’il y a un moyen simple qui devrait être validé par les Admins :
→ Moyen de formater la data récupérée dans le format souhaité (STRING, FLOAT, INT, …)
→ Même en ayant la valeur en STRING, et en utilisant les fonctions PHP pour la convertir, impossible de changer son format et de faire des calculs.

Toute idée est bonne à prendre, ce qui éviterait de reconstuire les commandes.

Je pars sur ton conseil

1 « J'aime »

Pour les prochains qui cherchent, voici la solution de contournement :

public function chillindex($_mycmd_temp,$_mycmd_wind) {
	$_mycmd_temp = '#'.trim($_mycmd_temp).'#';
	$_mycmd_wind = '#'.trim($_mycmd_wind).'#';
	$_temp = cmd::byString($_mycmd_temp)->execCmd();
	$_wind = cmd::byString($_mycmd_wind)->execCmd();
	
	if ( ($_wind >= 4.8) && ($_temp < 10)){
	$_chill = (13.12 + 0.6215 * $_temp - 11.37 * pow($_wind,0.16) + 0.3965 * $_temp * pow($_wind,0.16));
	return 'La température ressentie est de : '.round($_chill,1).' °C';
	}
	elseif ( ($_wind < 4.8) && ($_temp < 10)){
	$_chill = ($_temp + ( (-1.59 + 0.1345 * $_temp) / 5) * $_wind) ;
	return 'La température ressentie est de : '.round($_chill,1).' °C';
	}
  	else{
	return 'NA';
	}
}

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.