Tuto : créer une page météo sur Jeedom Connect

oui des images sous conditions, mais jusqu’à 31 en faite. Avec ce site https://www.calendrier-lunaire.net/ je me suis aider.

c’était le plus long

Effectivement, on aurait pu faire un petit scenario :wink:
J’ai pas souvenir que tu m’en ais parlé, j’ai du raté un post, désolé :yum:

Pas grave, oui un scénario serais bien, mais pas trouver en code ou scenario qui serait beaucoup mieux.

sympa en effet. Bonne idée pour le type de pluie, je n’ai jamais trop regardé cette info car je me suis défini un seuil d’alerte perso sur un cumul de pluie dans l’heure et pas uniquement le type de pluie du prochain sous créneau dans l’heure qui vient.
En voyant par ailleurs le fond que tu as mis, je me dis que je pourrai aussi refaire dans Jeedom Connect ce que je fais dans mon design, à savoir mettre un fond en rapport avec la météo du jour. pas indispensable dans l’absolu mais amusant donc obligatoire comme dirait @ngrataloup sauf erreur :slight_smile:

(edit) rapidement j’ai fait qques essais et comme tjs avec Jeedom Connect on peut vraiment faire plein de choses. Ca donne ceci par exemple même s’il faudrait que je refasse des images adaptées au mobile (j’ai repris celles pour le PC / tablette) :


Pas mal du tout !
Pensez à mettre cà dans les réalisations JC … Montrez vos créations sur l'appli

:yum:

1 « J'aime »

Voilà un petit scenario pour mettre à jour l’icone de la phase de la lune, sans devoir multiplier les images sous condition

Pour ne pas multiplier les images, j’arrondis la phase de la lune (en %) pour ne traiter que 30 images (1/jour)

require_once dirname(__FILE__) . '/../../plugins/JeedomConnect/core/class/JeedomConnectWidget.class.php';
// mise à jour de l'icone de la phase de la lune
$tags=$scenario->getTags();     // récupération des tag du scénario
$phaseCmd=$tags['#phaseCmd#'];
$widgetId=$tags['#widgetId#'];


// calcul de la phase par multiple de 5%
$phasePercent = cmd::byString('#'.$phaseCmd.'#')->execCmd() ;
$phaseCalc = round($phasePercent*30,0) ;
$scenario->setLog('Phase :'.$phasePercent.' -> '.$phaseCalc.' -> '.$phaseCalc.'.png');
// mise à jour de l'image
$icoFilename = $phaseCalc.'.png' ;

$widgetKey='image';
$widgetValue= array('source' => 'user', 'name' => $icoFilename, 'shadow' => false);
JeedomConnectWidget::updateConfig($widgetId,$widgetKey,$widgetValue);

Les variables sont intégrées dans des tags (afin que ceux qui ont des difficultés avec les blocs code n’aient pas à y toucher), donc 2 tags :

  • phaseCmd : commande dans laquelle ont retrouve la valeur de la phase (en pourcent, entre 0 et 1, pour la phase via le plugin meteo france) - IL NE FAUT PAS METTRE LES # aux extrémités de la commande

  • widgetId : l’Id du widget JC à mettre à jour
    (attention à la typo des tags, elle doit être rigoureusement identique avec ce qu’il y a dans le bloc code)

Mettre en déclencheur la commande info de la phase

Reste à importer les images dans JC. les images doivent se nommer 0.png, 1.png, 2.png, …
Les images fournies par @mld.sebastien, merci à lui ! :
lune.zip.txt (354,2 Ko)

Et enfin, création d’un widget de type générique texte avec comme statut la commande decrivant textuellement la phase (ex : lune gibeuse croissante), libre à vous ensuite d(afficher ou non le libellé de la phase.
(Astuce : à la création du widget, bien mettre une image par defaut -n’importe quoi comme image- pour initialiser le champ)

… Enjoy

J’ai une petite erreur sur ton code

et le changement de l’icône fonctionne pas, j’ai modifier cela
$phaseCalc = round($phasePecent*100/5,0)*5 ; en $phaseCalc = round($phasePecent*100/5,1)*5 ;
j’ai modifier 0 en 1 dans la formule pour être plus juste l’info.

l’erreur est de ton côté !
on le voit justement dans les logs #phaseCmd# => 0.39, à moins d’une nouvelle côté jeedom les identifiants de commande ne sont pas des décimales :slight_smile: or c’est le nom de la commande qui est attendue

Je pense que tu as renseigné le TAG avec la commande phasecmd avec les #. il faut supprimer les #, autrement, ca ne marche pas

@tomitomas , c’est parce qu’il à mis les #, du coup, la commande est interprétée dans le tag, et plutot que de renvoyer l’adresse de la commande, il renvoie la valeur

Concernant le round, la formule est bonne. mais je viens de la modifier (scenario original mis à jour) pour ne prendre en compte tes 30 images qui sont très belles. du coup, ca devient :

$phasePercent = cmd::byString('#'.$phaseCmd.'#')->execCmd() ;
$phaseCalc = round($phasePercent*30,0) ;

Mais il faut bien 0 au niveau au niveau du round pour obtenir un résultat de type 1, 2, 3, 4, …jusqu’à 30, que l’on concatene avec png pour obtenir le nom de l’image (1.png, 2.png, …)

(tu devrais peut être ajouter un lien vers ton message dans ton tout 1er post ? histoire que si qlq un est en train de suivre le tuto pour le mettre en place il ait une possible suite tout de suite, sans tout parcourir ?!)

fait hier :yum:

1 « J'aime »

au tant pour moi, j’ai regardé à la fin du message, pas au début :smiley:

Que ca ne se reproduise plus, sinon, il faudra que ca cesse ! :joy:

J’ai modifier oui j’avais fait l’erreur mais toujours pareille :yum:

bien recopier pourtant, le code en copie coller :

T’as pas des espaces en trop dans ta commande, ou des trucs comme ca ?
Juste après les commandes $tags,
mets:

$scenario->setLog('#'.$phaseCmd.'#');

Essaye aussi de faire un copier/coller de ton tag et en rajoutant les # en début et fin d’expression, fait un test de ta commande dans le testeur d’expression

EDIT : tu as mis une majuscule dans ton tag phaseCmd, et je n’en ai pas mis dans le blog code !!! uniformises les 2 :wink: je modifie le scenario pour uniformiser !

C’est bon j’ai trouver mon erreur, dans les tag les Nom faut bien les mettre identiques au code.
Ça fonctionne super, merci ça simplifie drôlement par rapport à ce que j’avais fait.
Les icônes sont bon.

1 « J'aime »

Bonjour,
Merci à ngrataloup pour ce tuto.
Je suis en train de le mettre en place mais je bute sur cette commande du scénario :

require_once dirname(__FILE__) . '/../../plugins/JeedomConnect/core/class/JeedomConnectWidget.class.php';

Lorsque je lance le scenario il finit au bout d’un certain temps avec le message ‹ erreur › sur fond orange, j’ai isolé cette ligne comme vous pouvez le voir ci-dessous c’est donc bien elle qui me pose un souci.

Auriez vous une idée car là je sèche ?
Merci pour votre aide.

Il faudrait cliquer sur le bouton log scenario pour avoir plus d infos

(En l occurence là ton scénario ne fait rien puisque tu as mis en commentaire)

D’après ce que je vois, en ligne 2 et 13 supprimes les balises commentaires /* */

En effet je n’ai pas mis le log car il est désespérément vide avec ou sans les /* et */.
C’est peut être pas trés propre mais je m’en sert pour isoler des parties de codes quand j’ai ce problème pou isoler une ligne ou une partie de code qui me donne le message d’erreur sur fond orange ET un log vide.