Remplacer une virgule par un slash dans une commande info d'un virtuel

Bonjour,

je récupère la position de mon tel avec JeedomConnect et souhaite l’utiliser pour compléter une chaîne de caractères qui est la base de l’adresse d’Open Fuel Map et utiliser cette adresse comme adresse dans un widget webview de JeedomConnect.
En dur ça marche bien avec

https://openfuelmap.net/#13/47.465/-0.472

Je souhaite juste compléter https://openfuelmap.net/#13/
avec 47.465/-0.472
à partir de 47.465,-0.472

que je récupère de la position de mon téléphone avec JeedomConnect

Quand je mets cette formule dans la valeur du virtuel j’ai une erreur (en fait juste un / ce qui n’est pas le résultat attendu)
#[Ext][VOpenFuelMap][baseURL]#str_replace(',','/',#[Ext][VOpenFuelMap][PosF1]#)

Et pourtant cette (presque) même formule fonctionne bien, si à la place d’une virgule je mets par exemple un 8
#[Ext][VOpenFuelMap][baseURL]#str_replace('8','/',#[Ext][VOpenFuelMap][PosF1]#)

J’ai testé, sans succès, une tripotée de variantes avec le testeur d’expressions

str_replace(chr(44), chr(47), #[Ext][VOpenFuelMap][PosF1]#)
str_replace(",", "/", "47.465,-0.472")
str_replace(',', '/', '47.465,-0.472')
str_replace(chr(44), chr(47), "47.465,-0.472")
str_replace(chr(44), chr(47), '47.465,-0.472')
....

et j’en arrive à la conclusion que le virtuel/jeedom n’aime pas les virgules dans une formule, mais je ne sais/comprends pas pourquoi!

Avez-vous une idée pour que ce calcul qui me paraissait plutôt simple à réaliser puisse se faire?
Je passe à côté de quelque chose?

Merci

Salut,

Hum effectivement quelque chose qui parait simple sur le papier devient un peu complexe :slight_smile:
Je pense qu’on est un peu à la limite du virtuel avec la complexité de filtrer avec une virgule et la gestion des quotes par jeedom …

En alternatives je dirais :

  • Faire un scénario, ça permettra de faire du « vrai » php sur plusieurs lignes si besoin et en utilisant des variables.
  • Créer une fonction custom php à mettre dans le user.function.class.php que tu devrais pouvoir utiliser dans un virtuel.

La première méthode est sans doute la plus rapide, la deuxième la plus propre :slight_smile:

Salut

Il serait pas plus simple de partir d’une commande longitude et d’une deuxième commande latitude pour créer le lien?

Antoine

Bonjour,

Je vais explorer ces 2 voies qui ne me paraissent quand même pas super naturelles, mais si le résultat est là, tant mieux!

Oui, si c’est possible effectivement. Mais je ne sais pas comment obtenir la longitude et la latitude indépendamment l’une de l’autre avec JeedomConnect qui est la source et la destination de ce petit calcul dans un virtuel.
Quel outil permettrait d’obtenir la longitude et la latitude?
Sinon envisager un explode de 47.465,-0.472 sur la virgule (qui est déjà une extraction de ce que retourne JeedomConnect) revient à la proposition d’Aurel de passer par un scénario ou une fonction custom.

Avec un scénario, ça semble fonctionner, restera à vérifier que ça se déclenchera bien à chaque fois qu’il y aura une nouvelle position communiquée par JeedomConnect.
Pas envie de mettre le nez dehors pour faire joujou avec le changement de position!


En ajout, suite à la remarque de Aurel dans le post suivant, le déclenchement du scénario

Je verrai pour la fonction custom, mais je ne suis pas sûr qu’elle soit transportée avec une sauvegarde Jeedom, si je réinstalle sur une autre machine?

Au moins avec un scenario, je suis sûr de mon coup!

1 « J'aime »

Si la commande info est bien en déclencheur du scénario il n’y a pas de raison que ça ne soit pas le cas :slight_smile:

Alors j’avoue n’avoir jamais essayé mais étant donné qu’il est bien présent dans un backup jeedom normalement si.