Image sous condition ajoutées à la main

Bonjour,

J’ai un problème avec le plugin plugin-jeedomconnect. Je veux mettre des « images sous condition » comme icône mais j’ai beaucoup de conditions liées au plugin-weather . En plus, ces images sont différentes pour la météo du jour et celle de la nuit.

J’ai donc deux problèmes:

  1. Problème mineur: J’aurais aimé pouvoir multiplier (au moins 2) le nombre de répertoire d’images personnalisées (car le plugin weather a eu la bonne idée de donner le même nom à ses icones jour et à ses icones nuit et - parce que les concepteurs sont facétieux - un nom différent du code de condition météo). Un exemple:
{
		"code" : 1000,
		"day" : "Sunny",
		"night" : "Clear",
		"icon" : 113
	},

On aurai aimé que l’image s’appelle day-1000.png pour le jour et night-1000.png pour la nuit (ou que le code associé à l’image 1000 soit 113 mais c’était sans doute trop simple.

  1. Problème majeur: Comme je dois en rentrer une pelleté, et que l’interface est soviétique, je me suis dit que c’était une bonne idée de taper directement dans le fichier de configuration qui - dans mon cas - répond au doux nom de b6a4c988c528bba2a53f868fba867a37.json et dans lequel on trouve les images personnalisées que j’avais déjà mises à la main:
               "index": 1,
                "widgetId": 26,
                "id": 1,
                "parentId": 999000,
                "name": "M\u00e9t\u00e9o actuelle",
                "nameDisplayed": "",
                "statusInfo": {
                    "id": "179",
                    "type": "info",
                    "subType": "string",
                    "step": "1"
                },
                "statusText": "",
                "statusImages": [
                    {
                        "index": 0,
                        "condition": "#180#==1000",
                        "image": {
                            "source": "user",
                            "name": "weather\/64x64\/day\/113.png",
                            "shadow": false
                        }
                    },
                    {
                        "index": 1,
                        "condition": "#180#==1003",
                        "image": {
                            "source": "user",
                            "name": "weather\/64x64\/day\/116.png",
                            "shadow": false
                        }
                    },

etc… J’ai donc ajouté à ce fichier les conditions supplémentaires, rafraichit tous les caches qui me sont tombés sous la main et … rien, bien sûr… les images personnalisées que je pensais avoir ajoutées n’apparaissent pas.

En parlant de soviétique, Jeedom, c’est un peu Stalingrad. Chaque immeuble, chaque appartement, chaque pièce se prend de haute lutte. Rien ne se gagne simplement. Pourtant, j’ai en fait du framework mais là, si quelqu’un peut m’aider, ce serait vraiment chouette.

Merci de votre aide :tired_face:

Très juste. Merci du rappel… je l’avais copié et je ne l’ai pas collé ! désolé Les voici:

Jeedom Core : 4.4.6 (V4-stable)
DNS Jeedom : oui

Statut Démon : Stoppé (NA)
Version JC : 1.8.0.2 stable

Equipements :
  Ma Luna : v1.8.0 stable sur android [os : 31] (polling) - PA

Salut,

je suis pas certain de savoir comment prendre la partie soviétique, surtout en ce moment … donc je ne vais pas y prêter attention !

aujourd’hui tu as un répertoire html/plugins/JeedomConnect/data/img/user_files qui permet de mettre des images perso
rien ne t’empeche de créer 2 sous-répertoires qui te permet d’avoir tes images jours et nuit …?

sauf que ce fichier est (re)généré automatiquement régulièrement, donc les maj que tu y fais ne sont évidemment pas conservées !

pour le faire en masse, il faudrait regarder dans ce coin là :

la clé à mettre à jour est statusImages
et la valeur : tu as le format plus haut

Merci de ce retour super rapide

C’est ce que j’ai fait. J’ai effectivement tous les icones correspondant à mes deux sous-répertoires dans le répertoire image perso. Mais cela pourrait être amélioré car la structure en sous-répertoire n’apparaît pas (et comme weather à judicieusement mis les mêmes noms pour ses icones jours et ses icones nuits) on ne s’y retrouve pas facilement.

La seconde partie de la réponse dépasse de loin mes compétences et surtout mon temps. Je vais donc reprendre mon travail de bénédictin et le faire à la main (48x2 conditions, je vais mourir).

Merci en tout cas de la réponse.

PS: le soviétisme, c’est pour l’ensemble de l’interface jeedom, pas spécifiquement le plugin. On dirait que les concepteurs ont voulu faire un truc GUI mais pas vraiment - Je ne suis pas informaticien mais je suis surpris du temps de chargement des fenêtres et sous-fenêtres. Surtout quand on compare à d’autres framework en ligne (WordPress, Sharepoint, etc…). J’ai en particulier le sentiment que rien n’a été ajaxifié car les réponses aux requêtes http semblent démesurément longues. Mais je m’écarte du sujet…

rien de bien compliqué …

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

$widgetId = 1;          // <<--- indiquez l'id du widget à modifer
$widgetKey = 'statusImages';     // <<--- indiquez la clé à modifier (ici le statut du widget)
$widgetValue = [
  [
    "index" => 0,
    "condition"=> "#180#==1000",
    "image"=> [
      "source"=> "user",
      "name"=> "weather\/64x64\/day\/113.png",
      "shadow"=> false
    ]
  ],
  [
    "index"=> 1,
    "condition"=> "#180#==1003",
    "image"=> [
      "source"=> "user",
      "name"=> "weather\/64x64\/day\/116.png",
      "shadow"=> false
    ]
  ]
];

JeedomConnectWidget::updateConfig($widgetId, $widgetKey, $widgetValue);

note : il faut qu’au préalable ton widget ait à minima une image sous condition réalisé avec l’ihm

1 « J'aime »

Merci @tomitomas .

Pour être sûr de bien comprendre (car je trouve curieux d’utiliser un scenario pour altérer le contenu d’un widget):

  1. Je fais une sauvegarde préalable au cas où.
  2. Je recopie le bout de code ci-dessus (modulo les numéros de widget et les clés à modifier) dans un bloc code
  3. J’exécute ce scenario, une fois (comme à Liège)
  4. Et Y’allah ?

Et apparemment l’ordre des champs n’est pas important {index, condition, image} dans ton exemple et {index, image, condition} dans le fichier. (et les : qui deviennent des =>) ?

C’est ça ?

ta méthode à toi de modifier un fichier ne fonctionne pas … mais si tu préfères l’utiliser malgré tout : be my guest ! :slight_smile:

je ne fais que répondre à ta demande de traiter des infos en masse

quasi oui !

  1. Je fais une sauvegarde préalable au cas où → oui c’est toujours bien, même si là on parle de 1 widget qui met 10 sec à refaire à la main :wink:
    1a. Tu modifies ton widget en passant par l’IHM afin d’y intégrer au moins une image sous condition
    1b. Tu sauvegardes ton widget
  2. Je recopie le bout de code ci-dessus (modulo les numéros de widget et les clés à modifier) dans un bloc code → voilà, uniquement $widgetId et $widgetValue à modifier, mais en gardant le schéma proposé donc on n’ ajoute/enleve pas de crochet ou autre !
  3. J’exécute ce scenario, une fois (comme à Liège) → une fois par widget à modifier oui
  4. Et Y’allah ? → en croisant les doigts ! :wink:
1 « J'aime »

Bon… y’avait une petite erreur, les différents enregistrements du $widgetValue devant être séparé par des ; et non des , (syntax error dans le fichier de log).

Mais ça m’a bousillé le widget (Jeedom connect sur mon mobile m’affiche une tête de mort et indique TypeError: undefined is not a function … Je vais tenter de comprendre où j’ai merdé.

Du coup … non … je te confirme qu il ny a pas d erreur dans ce que je tai proposé, et que c est bien des virgules et non des point-virgules qu il faut utiliser !
De facon tres tres generale, je teste ce que je donne avant de le proposer…

Par contre dans ce que toi tu as produit, il y a peut etre un oublie oui.
Donc partage (avec des virgule!) et on verra bien …

2 « J'aime »

Merci de ta (grande) patience:

voici ce que j’ai fait (en remettant les virgules):

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

$widgetId = 1;          // <<--- indiquez l'id du widget à modifer
$widgetKey = 'statusImages';     // <<--- indiquez la clé à modifier (ici le statut du widget)
$widgetValue = [
                        "index"=> 8,
                        "image"=> [
                            "source"=> "user",
                            "name"=> "weather\/64x64\/day\/185.png",
                            "shadow"=> false
                        ],
                        "condition"=> "#[Salon][meteo][Numéro condition]#==1072"
                    ],
[
                        "index"=> 9,
                        "image"=> [
                            "source"=> "user",
                            "name"=> "weather\/64x64\/day\/200.png",
                            "shadow"=> false
                        ],
                        "condition"=> "#[Salon][meteo][Numéro condition]#==1087"
                    ],
[
                        "index"=> 10,
                        "image"=> [
                            "source"=> "user",
                            "name"=> "weather\/64x64\/day\/227.png",
                            "shadow"=> false
                        ],
                        "condition"=> "#[Salon][meteo][Numéro condition]#==1114"
                    ],[
                        "index"=> 11,
                        "image"=> [
                            "source"=> "user",
                            "name"=> "weather\/64x64\/day\/230.png",
                            "shadow"=> false
                        ],
                        "condition"=> "#[Salon][meteo][Numéro condition]#==1117"
                    ],[
                        "index"=> 12,
                        "image"=> [
                            "source"=> "user",
                            "name"=> "weather\/64x64\/day\/248.png",
                            "shadow"=> false
                        ],
                        "condition"=> "#[Salon][meteo][Numéro condition]#==1135"
                    ],[
                        "index"=> 13,
                        "image"=> [
                            "source"=> "user",
                            "name"=> "weather\/64x64\/day\/260.png",
                            "shadow"=> false
                        ],
                        "condition"=> "#[Salon][meteo][Numéro condition]#==1147"
                    ],[
                        "index"=> 14,
                        "image"=> [
                            "source"=> "user",
                            "name"=> "weather\/64x64\/day\/263.png",
                            "shadow"=> false
                        ],
                        "condition"=> "#[Salon][meteo][Numéro condition]#==1150"
                    ],[
                        "index"=> 15,
                        "image"=> [
                            "source"=> "user",
                            "name"=> "weather\/64x64\/day\/266.png",
                            "shadow"=> false
                        ],
                        "condition"=> "#[Salon][meteo][Numéro condition]#==1153"
                    ],[
                        "index"=> 16,
                        "image"=> [
                            "source"=> "user",
                            "name"=> "weather\/64x64\/day\/284.png",
                            "shadow"=> false
                        ],
                        "condition"=> "#[Salon][meteo][Numéro condition]#==1171"
                    ],[
                        "index"=> 17,
                        "image"=> [
                            "source"=> "user",
                            "name"=> "weather\/64x64\/day\/293.png",
                            "shadow"=> false
                        ],
                        "condition"=> "#[Salon][meteo][Numéro condition]#==1180"
                    ],[
                        "index"=> 18,
                        "image"=> [
                            "source"=> "user",
                            "name"=> "weather\/64x64\/day\/296.png",
                            "shadow"=> false
                        ],
                        "condition"=> "#[Salon][meteo][Numéro condition]#==1183"
                    ],[
                        "index"=> 19,
                        "image"=> [
                            "source"=> "user",
                            "name"=> "weather\/64x64\/day\/299.png",
                            "shadow"=> false
                        ],
                        "condition"=> "#[Salon][meteo][Numéro condition]#==1186"
                    ],[
                        "index"=> 20,
                        "image"=> [
                            "source"=> "user",
                            "name"=> "weather\/64x64\/day\/302.png",
                            "shadow"=> false
                        ],
                        "condition"=> "#[Salon][meteo][Numéro condition]#==1189"
                    ],[
                        "index"=> 21,
                        "image"=> [
                            "source"=> "user",
                            "name"=> "weather\/64x64\/day\/305.png",
                            "shadow"=> false
                        ],
                        "condition"=> "#[Salon][meteo][Numéro condition]#==1192"
                    ],[
                        "index"=> 22,
                        "image"=> [
                            "source"=> "user",
                            "name"=> "weather\/64x64\/day\/308.png",
                            "shadow"=> false
                        ],
                        "condition"=> "#[Salon][meteo][Numéro condition]#==1195"
                    ],[
                        "index"=> 23,
                        "image"=> [
                            "source"=> "user",
                            "name"=> "weather\/64x64\/day\/311.png",
                            "shadow"=> false
                        ],
                        "condition"=> "#[Salon][meteo][Numéro condition]#==1198"
                    ],[
                        "index"=> 24,
                        "image"=> [
                            "source"=> "user",
                            "name"=> "weather\/64x64\/day\/314.png",
                            "shadow"=> false
                        ],
                        "condition"=> "#[Salon][meteo][Numéro condition]#==1201"
                    ],[
                        "index"=> 25,
                        "image"=> [
                            "source"=> "user",
                            "name"=> "weather\/64x64\/day\/317.png",
                            "shadow"=> false
                        ],
                        "condition"=> "#[Salon][meteo][Numéro condition]#==1204"
                    ],[
                        "index"=> 26,
                        "image"=> [
                            "source"=> "user",
                            "name"=> "weather\/64x64\/day\/320.png",
                            "shadow"=> false
                        ],
                        "condition"=> "#[Salon][meteo][Numéro condition]#==1207"
                    ],[
                        "index"=> 27,
                        "image"=> [
                            "source"=> "user",
                            "name"=> "weather\/64x64\/day\/323.png",
                            "shadow"=> false
                        ],
                        "condition"=> "#[Salon][meteo][Numéro condition]#==1210"
                    ],[
                        "index"=> 28,
                        "image"=> [
                            "source"=> "user",
                            "name"=> "weather\/64x64\/day\/326.png",
                            "shadow"=> false
                        ],
                        "condition"=> "#[Salon][meteo][Numéro condition]#==1213"
                    ],[
                        "index"=> 29,
                        "image"=> [
                            "source"=> "user",
                            "name"=> "weather\/64x64\/day\/329.png",
                            "shadow"=> false
                        ],
                        "condition"=> "#[Salon][meteo][Numéro condition]#==1216"
                    ],[
                        "index"=> 30,
                        "image"=> [
                            "source"=> "user",
                            "name"=> "weather\/64x64\/day\/332.png",
                            "shadow"=> false
                        ],
                        "condition"=> "#[Salon][meteo][Numéro condition]#==1219"
                    ];
                    
JeedomConnectWidget::updateConfig($widgetId, $widgetKey, $widgetValue);

en fait il manque juste une paire de crochet c’est tout …

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

		$widgetId = 1;          // <<--- indiquez l'id du widget à modifer
		$widgetKey = 'statusImages';     // <<--- indiquez la clé à modifier (ici le statut du widget)
		$widgetValue = [
			[
				"index" => 8,
				"image" => [
					"source" => "user",
					"name" => "weather\/64x64\/day\/185.png",
					"shadow" => false
				],
				"condition" => "#[Salon][meteo][Numéro condition]#==1072"
			],
			[
				"index" => 9,
				"image" => [
					"source" => "user",
					"name" => "weather\/64x64\/day\/200.png",
					"shadow" => false
				],
				"condition" => "#[Salon][meteo][Numéro condition]#==1087"
			],
			[
				"index" => 10,
				"image" => [
					"source" => "user",
					"name" => "weather\/64x64\/day\/227.png",
					"shadow" => false
				],
				"condition" => "#[Salon][meteo][Numéro condition]#==1114"
			], [
				"index" => 11,
				"image" => [
					"source" => "user",
					"name" => "weather\/64x64\/day\/230.png",
					"shadow" => false
				],
				"condition" => "#[Salon][meteo][Numéro condition]#==1117"
			], [
				"index" => 12,
				"image" => [
					"source" => "user",
					"name" => "weather\/64x64\/day\/248.png",
					"shadow" => false
				],
				"condition" => "#[Salon][meteo][Numéro condition]#==1135"
			], [
				"index" => 13,
				"image" => [
					"source" => "user",
					"name" => "weather\/64x64\/day\/260.png",
					"shadow" => false
				],
				"condition" => "#[Salon][meteo][Numéro condition]#==1147"
			], [
				"index" => 14,
				"image" => [
					"source" => "user",
					"name" => "weather\/64x64\/day\/263.png",
					"shadow" => false
				],
				"condition" => "#[Salon][meteo][Numéro condition]#==1150"
			], [
				"index" => 15,
				"image" => [
					"source" => "user",
					"name" => "weather\/64x64\/day\/266.png",
					"shadow" => false
				],
				"condition" => "#[Salon][meteo][Numéro condition]#==1153"
			], [
				"index" => 16,
				"image" => [
					"source" => "user",
					"name" => "weather\/64x64\/day\/284.png",
					"shadow" => false
				],
				"condition" => "#[Salon][meteo][Numéro condition]#==1171"
			], [
				"index" => 17,
				"image" => [
					"source" => "user",
					"name" => "weather\/64x64\/day\/293.png",
					"shadow" => false
				],
				"condition" => "#[Salon][meteo][Numéro condition]#==1180"
			], [
				"index" => 18,
				"image" => [
					"source" => "user",
					"name" => "weather\/64x64\/day\/296.png",
					"shadow" => false
				],
				"condition" => "#[Salon][meteo][Numéro condition]#==1183"
			], [
				"index" => 19,
				"image" => [
					"source" => "user",
					"name" => "weather\/64x64\/day\/299.png",
					"shadow" => false
				],
				"condition" => "#[Salon][meteo][Numéro condition]#==1186"
			], [
				"index" => 20,
				"image" => [
					"source" => "user",
					"name" => "weather\/64x64\/day\/302.png",
					"shadow" => false
				],
				"condition" => "#[Salon][meteo][Numéro condition]#==1189"
			], [
				"index" => 21,
				"image" => [
					"source" => "user",
					"name" => "weather\/64x64\/day\/305.png",
					"shadow" => false
				],
				"condition" => "#[Salon][meteo][Numéro condition]#==1192"
			], [
				"index" => 22,
				"image" => [
					"source" => "user",
					"name" => "weather\/64x64\/day\/308.png",
					"shadow" => false
				],
				"condition" => "#[Salon][meteo][Numéro condition]#==1195"
			], [
				"index" => 23,
				"image" => [
					"source" => "user",
					"name" => "weather\/64x64\/day\/311.png",
					"shadow" => false
				],
				"condition" => "#[Salon][meteo][Numéro condition]#==1198"
			], [
				"index" => 24,
				"image" => [
					"source" => "user",
					"name" => "weather\/64x64\/day\/314.png",
					"shadow" => false
				],
				"condition" => "#[Salon][meteo][Numéro condition]#==1201"
			], [
				"index" => 25,
				"image" => [
					"source" => "user",
					"name" => "weather\/64x64\/day\/317.png",
					"shadow" => false
				],
				"condition" => "#[Salon][meteo][Numéro condition]#==1204"
			], [
				"index" => 26,
				"image" => [
					"source" => "user",
					"name" => "weather\/64x64\/day\/320.png",
					"shadow" => false
				],
				"condition" => "#[Salon][meteo][Numéro condition]#==1207"
			], [
				"index" => 27,
				"image" => [
					"source" => "user",
					"name" => "weather\/64x64\/day\/323.png",
					"shadow" => false
				],
				"condition" => "#[Salon][meteo][Numéro condition]#==1210"
			], [
				"index" => 28,
				"image" => [
					"source" => "user",
					"name" => "weather\/64x64\/day\/326.png",
					"shadow" => false
				],
				"condition" => "#[Salon][meteo][Numéro condition]#==1213"
			], [
				"index" => 29,
				"image" => [
					"source" => "user",
					"name" => "weather\/64x64\/day\/329.png",
					"shadow" => false
				],
				"condition" => "#[Salon][meteo][Numéro condition]#==1216"
			], [
				"index" => 30,
				"image" => [
					"source" => "user",
					"name" => "weather\/64x64\/day\/332.png",
					"shadow" => false
				],
				"condition" => "#[Salon][meteo][Numéro condition]#==1219"
			]
		];

		JeedomConnectWidget::updateConfig($widgetId, $widgetKey, $widgetValue);

par contre tous les #[Salon][meteo][Numéro condition]# dans les conditions sont à remplacer par l’identifiant de cette commande.
donc tu vas dans ton équipement météo, onglet commandes et tu regardes ce qu’il y a en face de la commande Numéro condition (par exemple 1234)
→ et donc tu remplaces tous les #[Salon][meteo][Numéro condition]# par #1234#

et puis Yalah !

1 « J'aime »

Merci beaucoup !!! Et désolé de t’avoir fait perdre autant de temps avec mes maladresses. ça marche parfaitement.

Juste une curiosité, pour ma gouverne, à propos du remplacement de la commande par son id:

  • Si c’est aussi simple que ça, pourquoi faut-il dans le widget ajouter la commande en question qui est relative à l’équipement
  • Quand j’ai effectué ce remplacement dans le script, puis que je l’ai exécuté, j’ai par la suite retrouvé mon script modifié avec le nom complet de la commande. C’est du reste lui aussi, le nom complet, qui apparaît dans les images sous conditions.

Est-ce bien normal ?

Merci pour tout !

pas compris la question

oui on s’est dit que visuellement c’était quand meme plus simple d’afficher à l’utilisateur le nom réel de la commande; c’est plus parlant que 1234 !
par contre dans les fichiers de conf, c’est l’id qu’on enregistre, car d’un jour sur l’autre … tu peux t’amuser à changer le nom de la commande alors que l’id ne change pas !

Super… Merci pour tout.

ps: c’est cela dont je parle: on ajoute bien la commande pour pouvoir l’utiliser

Une dernière remarque (j’ai vraiment vraiment du mal avec Jeedom, c’est horrible):

Le script semble écraser les enregistements précédents et non pas les ajouter. Est-ce normal ?

Oui, l objectif c est bien se changer une info de config.

La commande s appelle « update » pas « append »

2 « J'aime »

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