Design en fonction de la saison

Bonjour,

J’ai 2 Magic Mirror avec un Design dédié sur chacun.

Je souhaite que sur l’un d’eux, le design soit différent suivant la saison de l’année.

Je pense qu’au lieu de mettre une ligne chromium —kiosk dans le fichier autostart, je pourrai faire un programme python « design_saison.py » et le lancer dans le fichier autostart.

Comme ça, dans ce programme juste tester la date et lancer la bonne commande chromium selon la date en cours.

Je n’y connais pas grand chose en python.

Quelqu’un peut m’aider à faire ce programme ?

Bonjour,

J’ai peut-être pas saisi mais une simple redirection dans un design devrait faire l’affaire ?

Edit :

J’ai cru a un bug dans la matrice :rofl:, mais non.

Bien vu ! J’avais demandé ça il y a un bon moment ! Mais je veux que ça soit le Magic Mirror lui même au boot qui active le bon design direct.

Je n’avais jamais pensé à faire un petit programme python au boot du mirror pour tester la date et lancer le bon lien de design.

Et faire un scénario Jeedom ensuite avec une commande SSH bash qui lance ce programme python sur le Magic Mirror à chaque changement de saison sans devoir reboot l’écran.

Tu saurais écrire ce petit programme python ?
Y a juste besoin d’utiliser time et chromium.

Un truc dans ce genre là ?

#!/usr/bin/python3

-- coding: utf-8 --

import chromium
import time
import sys

SAISON =

while True:
try:
if readFile(SAISON) == ‹ hiver ›:
chromium --kiosk IP DESIGN HIVER
if readFile(SAISON) == ‹ printemps ›:
chromium --kiosk IP DESIGN PRINTEMPS
if readFile(SAISON) == ‹ ete ›:
chromium --kiosk IP DESIGN PRINTEMPS
if readFile(SAISON) == ‹ automne ›:
chromium --kiosk IP DESIGN PRINTEMPS
except:
chromium --kiosk IP DESIGN SAISON

J’allais dire une bétise en proposant le plugin de Mips
https://mips2648.github.io/jeedom-plugins-docs/designImgSwitch/fr_FR/

Mais c’est en fonction de la météo…
Peut être voir si une évolution pour les saisons est jouable

En fait c’est depuis le Raspberry du Mirror que je veux l’affichage direct au boot. Je veux donc juste lui dire le 21 juin tu changes pour été, le 21 septembre pour hiver… :wink:

Sur le magic mirror j’ai mis dans le fichier autostart uniquement l’ip de Jeedom sans la direction du design.

Je n’arrive plus à trouver sur Jeedom ou configurer la page Jeedom pour un utilisateur particulier.

Dommage que dans un scénario Jeedom on ne puisse pas changer la page par défaut d’un utilisateur car j’aurai pour faire un scénario en fonction de la date sur Jeedom

Salut,

Ca ne serait pas dans réglages, préférences ?

ça ne fonctionne pas ça ?

Non le gotodesign marche pas car il n’est pas exécuté en local sur le Pi Mirror.

Pour ça que je cherche autre chose. Et je retrouve pu du tout dans préférence ou j’ai mis l’option de chaque mirror pour ouvrir le design cible !

J’aimerai juste faire un mini programme python direct sur le mirror qui attribue le nom de la saison dans une variable déjà et ensuite cette variable à chaque boot permet d’exécuter le bon lien du bon design.

Sais tu faire ça ?

Ou alors dans un scénario Jeedom je calcule les saisons et Jeedom, par une commande SSH, change la valeur d’une variable sur le mirror direct.

Le mirror lira donc la variable a chaque boot ou refresh et adaptera le design en conséquence

Ca se trouve dans Reglages >> preferences

Si, les modifs se trouvent en BD, table user. Tu peux modifier ceci via un scenario et un bloc code avec des commande de type setConfiguraiton

  • defaultDesktopView pour definir un design comme affichage par defaut
  • defaultDashboardPlan pour definir LE design par defaut

un truc du style (non testé) !!

$designIDHiver = 12 ;
$designIDEte = 18 ;
$user = user::byLogin('toto') ;

if ( <date> <= <date1> || <date> >= date2 ) {      // a adapter !!!!
  $user->setConfiguration('defaultDashboardPlan',$designIDHiver);
} else {
  $user->setConfiguration('defaultDashboardPlan',$designIDEte);
}
$user->save() ;

La condition if peut etre remplacée par une commande info binaire hiver (ou ete) : 0/1, avec cette commande comme declencheur du scneario

NOrbert

Ah génial !

Donc en gros je laisse comme ça la config du Mirror avec l’ip de Jeedom en local comme maintenant.

Et c’est dans Jeedom avec un scénario que je change le scénario par défaut à chaque saison ?

C’est génial ton idée ! Faut que je teste ça dés que possible !

Mon but serait en fait d’avoir un design pour l’été avec le spa, la piscine et les trucs du jardin. Un autre pour l’automne avec les décorations d’Halloween… un autre pour l’hiver avec le sapin… et un autre pour le printemps ! :wink:

Donc par forcément calé avec les vraies dates des saisons ! Mais je vais vraiment analyser ça car on a donc la mains la dessus dans un scénario !

Quelle est la commande entre les 2 que tu cites pour changer le design par défaut d’un user précis ?

J’avais déjà été voir dans réglages > Préfèrences et je ne vois aucun section dessus qui permet de changer le design par défaut de tel ou tel user. Je ne vois donc pas où aller.

Ou alors il faut que je me log avec le user en question pour le voir ?

Edit : c’est bien ça ! En me logant sur le user spécifique j’arrive à voir son design par défaut.

C’est donc la ligne nommée « Design par défaut » que je veux changer dans un scénario et le mettre full screen. Et plus précisément, le menu Desktop de cette ligne ! :wink:

cf mon bloc code …
en fait il fait que tu fixes la « page par defaut » à « design » une fois pour toute pour ce user
et ensuite, il faut que tu modifies par bloc code l’entrée defaultDashboardPlan qui permet de mettre à jour le « design par defaut »
C’ets l’idée du bloc code proposé (mais non testé)

Ben oui dans jeedom les préférences sont pour le user connecté…

1 « J'aime »

Je ne m’en souvenais plus et je pensais qu’avec un user admin on pouvait gérer les autres sans devoir s’y connecter :wink:

J’ai vérifié pour les 2 Mirror j’ai bien Design par défaut pour chacun.

Je connais un peu les bloc code car je les utilise pour lancer des commandes SSH sur des appareils locaux comme par exemple pour activer ou désactiver l’écran des magic mirror.

Cependant, je ne maîtrise pas bien le code que tu as mis.

Il y a donc au début la définition de variable avec le numéro de chaque design correspondant souhaités, ensuite le log user mais je ne vois pas où remplacer l’ID et le PASSWORD sur cette ligne. Peux tu me dire comment l’écrire avec ID/PASSWORD ?

Et ensuite tu testes les dates.
Peut on faire plusieurs IF sans mettre de ELSE ?
Un IF pour chaque saison ?

Encore merci !

Désolé, je ne suis pas un expert php, je n’emploie sans doute pas les bons termes

Tu n’as pas besoin de l’ID/PASSWORD.
la ligne

$user = user::byLogin('toto') ;

C’est juste pour recupérer l’objet $user correspondant au login toto, et mettre à jour les paramètres de cet objet

C’était un exemple avec un IF
Dans ton cas, le plus simple serait de definir une commande info virtuelle qui prend 0 pour hiver, 1 pour printemps, 2, pour été et 3 pour automne (par exemple) et de faire un switch / case. A toi de créer cet algorithme en fonction des dates, de la chaleur, de l’age du capitaine, … pour définir la saison

// ID des différents design
$designIDHiver = 12 ;
$designIDPrintemps = 18 ;
$designIDEte = 14 ;
$designIDAutomne = 20 ;*

$user = user::byLogin('toto') ;           // recup de l'objet user
$saison = cmd::byString(#[ma][commande][saison]#)->execCmd() ;   // recup du numéro de saison

// modif du numéro de design pour la saison $saison
switch ($saison) {
    case 0:
        $user->setConfiguration('defaultDashboardPlan',$designIDHiver);
        break;
    case 1:
        $user->setConfiguration('defaultDashboardPlan',$designIDPrintemps );
        break;
    case 2:
        $user->setConfiguration('defaultDashboardPlan',$designIDEte);
        break;
    case 3:
        $user->setConfiguration('defaultDashboardPlan',$designIDAutomne );
        break;
}

$user->save() ;    // sauvegarde de l'objet user

ah ok donc je remplace juste toto pour l’id du user à changer ?

J’ai fait ça vu que j’ai une info saison !
C’est bon tu penses ?