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

Comment fait-on si on a pas l’onglet résumé :face_with_head_bandage:

@efrugier dommage que tu n’ai pas dit comment tu as fait car impossible de trouver :face_with_peeking_eye:

Merci

On cherche au bon endroit, et on trouve :smiley:
==> menu « personnalisation » sur un widget

Tu penses bien que j’ai essayé les deux options voyons :pensive:, voilà ce que j’ai justement dans le menu « éditer ce widget » :

Et pas d’onglet résumé dans le menu « personnaliser ce widget »

J’ai sûrement mal configuré le widget je pense, j’ai cette erreur que pour le résumé, je vais creuser :expressionless:

C est donc bien de ce menu dont il est question !et non du précédent.
Maintenant reste plus qu a cliquer au bon endroit :slight_smile:
Ce n est pas sur le widget de type « resume » que l on souhaite faire la modif, mais sur chaque widget inclus dedans.

Du coup… quand tu es sur ta page avec le widget résumé, clic 1 fois simplemnt sur le widget pour avoir la vue detail de celui ci → pour arriver donx sur quelque chose comme ca

Now sur chacun de ces widgets (tu en auras 4 de ton cote, je n ai pas j+3 dans ma config), tu peux cliquer dessus, menu personnaliser, et là … tu auras bien l onglet que tu recherches

Pouhaaaaaaa la subtilité, j’ai capté mon problème, le hasard fait que comme j’ai mis 4 infos

et a chaque simple click, ça m’ouvre le détail d’une info et non du widget, il faut que je clique sur le bord de chez bord pour réussir à faire ce simple click du résumé et entrer dans le bon menu

Maintenant juste a trouver pourquoi j’ai cette erreur

j’ai lu que l’info choisi pouvait poser problème (dans mon cas sûrement à cause du zero ), je vais la modifier quand j’aurai 2 min pour faire cela sur le PC.

Merci pour ton support :smiling_face:

Hello, regarde si la commande à une valeur, sinon initialise là avec une première valeur

1 « J'aime »

J’allais dire en changeant la commande (avec une valeur), plus de plantage :smiling_face:

J’vais faire une pause, flemme t’attaquer la suite, mais j’ai appris beaucoup sur Jeedom Connect et ce, grâce à vous !

Merci

1 « J'aime »

Bonjour,

Je suis sur un problème d’affichage des jours dans les Widgets plutôt que les fameux J+2 ou J+3. Cela semble pourtant simple, mais je tourne en rond depuis quelques temps sans voir où peut être mon erreur…
J’ai trouvé quelques informations données par @ngrataloup, mais je bloque toujours.
J’ai relu x fois le Tuto de @Ds5 mais là, je vois pas…

Les informations renseignées sur JC apparaissent cependant correctement :
image

De la même façon, dans JC les options du Widget semblent correctes :


Le scénario d’actualisation des jours de la semaine semble être bon aussi.
image

J’ai rechargé la configuration et les données de JeeConnect à plusieurs reprises mains rien n’y fait…

Quelqu’un pourrait-il m’éclairer ?

Jeedom Core : 4.3.21
Version JC : 1.8.0.1 stable
DNS Jeedom : non
Statut Démon : Démarré - (2024-01-08 16:10:04)

Equipements :
  Tél Katell : v1.8.0 stable sur ios [os : 17.2.1] (ws) - PU
  Tél Laurent : v1.8.0 stable sur ios [os : 17.2.1] (ws) - PA

Je crois que j’ai déjà vu ce genre de souci et le plus simple, (si tu as déjà recharger les configs sans que tu ne solutionne le pb), c’est de recréer complètement le widget. Tu perdra moins de temps que d’essayer de débuguer !

Norbert

Je viens d’implémenter les paramètre set scénarios de MAJ des infos (1 fois par jour à 4h du mat pour le moment, j’ai pas étudié la partie live en GPS car j’ai peur de faire des MAJ trop récurrentes) et mis en place le lever et coucher de soleil.

ça a l’air top !!
je vais creuser le reste (beau temps, alertes…)

Merci beaucoup en tous cas!

1 « J'aime »

Si mon scenario n’est pas trop bugé … il n’y a pas trop de risque de saturer.
Un enregistrement d’une nouvelle position (nouveau code postal au sens meteofrance du terme) ne se fait que :
1 - si la distance avec la position précédente est supérieure à distanceMin (20km par défaut)
2 - 1 fois par heure (planification du scenario)
3 - scenario lancé manuellement
4 - si le code postal résultant est diffèrent du précèdent code postal

Donc les risques sont assez limités

Norbert

Merci @ngrataloup ! C’était effectivement la solution :+1:
J’ai recréé les 2 Widgets qui posaient problème et tout est rentré dans l’ordre.

Merci pour l’éclairage :wink:

Il doit y avoir un petit bug quelque part. Ce cas a déjà été signalé à plusieurs reprise !

Si ça peut aider, ce sont 2 Widgets que j’avais « créer » en dupliquant le premier (celui avec le H+1).

J’ai dupliqué des 100aines de fois et 1 ou 2 fois, j’ai eu ce souci … :wink: Et du coup, c’est plus simple de supprimer et recommencer (en dupliquant) que de chercher pourquoi

Hello!

Pourrais tu m’expliquer comment intégrer les cartes de vigilance ?

Un grand merci par avance!

C’est un scenario planifié (toutes les 30mins qui recupere via le plugin-meteofrance les dernières images (pas de téléchargement, les fichiers sont récupérés dans le rep data du plugin et copiés dans le rep image de JC)

Ensuite, 2 widgets (pour moi des widgets numériques qui prennent comme statut un virtuel qui me remonte le niveau d’alerte maximum pour mon departement par rapport à toutes les alertes en cours (pluie/inondation, neige, orage, …). Dans ces widgets, il faut initialiser le champ image avec n’importe quoi, puis le bloc code ci-dessous mettra à jour avec la bonne image

// Version du script
$version = '13/06/2023 18:00';
$scenario->setLog('┌──────────── Logs bloc code - version du '.$version);

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

// A personnaliser, widgetId JC des 2 tuiles
$J0_widgetId = 186;
$J1_widgetId = 601;

// Chemins des répertoires
$rep_meteofrance = __DIR__.'/../../plugins/meteofrance/data/';
$rep_jeedomconnect = __DIR__.'/../../plugins/JeedomConnect/data/img/user_files/';

// Chemins des fichiers sources et cibles
$J0_source = $rep_meteofrance.'VIGNETTE_NATIONAL_J_500X500.png';
$J1_source = $rep_meteofrance.'VIGNETTE_NATIONAL_J1_500X500.png';
$J0_cible_racine = $rep_jeedomconnect.'carte_vigilance_j0';
$J1_cible_racine = $rep_jeedomconnect.'carte_vigilance_j1';


$timestamp = time();
$J0_cible = $J0_cible_racine.'_'.$timestamp.'.png';
$J1_cible = $J1_cible_racine.'_'.$timestamp.'.png';

/**
 * Fonction pour copier une image et mettre à jour le widget
 *
 * @param string $source Chemin de l'image source
 * @param string $cible Chemin de l'image cible
 * @param string $cible_old Chemin de l'ancienne image cible
 * @return int Résultat de la copie : 0 pour un échec, 1 pour une copie réussie, 2 pour des fichiers identiques
 */
function copy_image_alerte($source, $cible, $cible_old)
{
    $cksum_source = md5_file($source);
    $cksum_cible = md5_file($cible_old);

    if ($cksum_source != $cksum_cible) {
        if (copy($source, $cible)) {
            unlink($cible_old);
            return 1;
        } else {
            return 0;
        }
    } else {
        return 2;
    }
}

// Recherche des anciens fichiers cibles
$files = scandir($rep_jeedomconnect);
foreach ($files as $file) {
    if (stristr($file, 'carte_vigilance_j0')) {
        $J0_cible_old = $rep_jeedomconnect.$file;
    } elseif (stristr($file, 'carte_vigilance_j1')) {
        $J1_cible_old = $rep_jeedomconnect.$file;
    }
}

// Traitement de J0
if (isset($J0_widgetId)) {
    switch (copy_image_alerte($J0_source, $J0_cible, $J0_cible_old)) {
        case 0:
            $scenario->setLog("| ECHEC copie ".basename($J0_source)." vers ".basename($J0_cible));
            break;
        case 1:
            $scenario->setLog("| Copie ".basename($J0_source)." vers ".basename($J0_cible)." OK");

            // Mise à jour du widget alerte
            $widgetKey = 'image';
            $widgetValue = ['source' => 'user', 'name' => basename($J0_cible), 'shadow' => false];
            $scenario->setLog('| Mise à jour de la config du widget JC');
            JeedomConnectWidget::updateConfig($J0_widgetId, $widgetKey, $widgetValue, true);
            break;
        case 2:
            $scenario->setLog("| fichiers alerte identiques, pas de copie de ".basename($J0_source)." vers ".basename($J0_cible));
            break;
    }
}

// Traitement de J1
if (isset($J1_widgetId)) {
    switch (copy_image_alerte($J1_source, $J1_cible, $J1_cible_old)) {
        case 0:
            $scenario->setLog("| ECHEC copie ".basename($J1_source)." vers ".basename($J1_cible));
            break;
        case 1:
            $scenario->setLog("| Copie ".basename($J1_source)." vers ".basename($J1_cible)." OK");

            // Mise à jour du widget alerte
            $widgetKey = 'image';
            $widgetValue = ['source' => 'user', 'name' => basename($J1_cible), 'shadow' => false];
            $scenario->setLog('| Mise à jour de la config du widget JC');
            JeedomConnectWidget::updateConfig($J1_widgetId, $widgetKey, $widgetValue, true);
            break;
        case 2:
            $scenario->setLog("| fichiers alerte identiques, pas de copie de ".basename($J1_source)." vers ".basename($J1_cible));
            break;
    }
}

$scenario->setLog('└───────────────────────────');

Norbert

1 « J'aime »

merci ca marche super :slight_smile:

Merci pour le partage, je l’ai implementé chez moi.
Cependant j’ai l’erreur suivante quand j’ai plusieurs vigilances qui sont assez longues :

Citation ------------------------------------
[2024-02-22 14:38:41][SCENARIO] – Start : Scenario lance manuellement.
[2024-02-22 14:38:42][SCENARIO] - Exécution du sous-élément de type [action] : code
[2024-02-22 14:38:42][SCENARIO] Exécution d’un bloc code
[2024-02-22 14:38:42][SCENARIO] Inondation : Vert
[2024-02-22 14:38:42][SCENARIO] Grand-froid : Vert
[2024-02-22 14:38:42][SCENARIO] Neige-verglas : Vert
[2024-02-22 14:38:42][SCENARIO] Orages : Vert
[2024-02-22 14:38:42][SCENARIO] Pluie-inondation : Jaune. Jaune: 10:00 - 21:00. Vert: 21:00 - 00:00
[2024-02-22 14:38:42][SCENARIO] Vent violent : Orange. Jaune: 12:00 - 15:00. Orange: 15:00 - 20:00. Jaune: 20:00 - 23:00. Vert: 23:00 - 00:00
[2024-02-22 14:38:42][SCENARIO] [MySQL] Error code : 22001 (1406). Data too long for column ‹ value › at row 1 : REPLACE INTO history
SET cmd_id=:cmd_id,
datetime=:datetime,
value=:value

Citation

Salut,

Ce que je comprends de l’erreur c’est que ta commande est historisée et que c’est quand jeedom essaye de l’historiser que tu rencontres une erreur SQL (enfin après visu rapide du code, je ne vois pas quel appel pourrait être fait à la base sinon).

Le champ dans la base de données est un varchar(127) donc normalement ça doit effectivement déconner si ta chaine de caractère est supérieure à 127 caractères ce qui commence à faire …

Bon après je ne maitrise pas totalement le cas d’usage mais perso je tronquerais la chaine de caractère pour qu’elle ne puisse jamais dépasser 127 caractères. Bon ça sera peut être coupé salement mais ça ne tombera pas en erreur.