Aller au contenu principal
Plugin Simulation

Plugin Simulation

Market →

Simulation de presence intelligente pour Jeedom - apprentissage automatique et replay statistique des habitudes.

Jeedom 4.4+stableos 11+php 7.4/8.xNode.jsdaemon☕ Soutenir le développement

Le plugin Simulation permet de simuler une presence dans votre habitation lorsque vous etes absent. Il apprend automatiquement vos habitudes (allumage/extinction de lumieres, ouverture/fermeture de volets, etc.) puis les rejoue de maniere realiste grace a un moteur statistique.

Il est concu pour :

  • enregistrer en continu les changements d'etat de vos equipements
  • construire un profil journalier a partir de l'historique
  • rejouer les actions de facon probabiliste, en respectant vos rythmes habituels
  • supporter les lumieres (on/off, couleur, niveau), les volets (position) et tout equipement binaire

Le plugin ne necessite aucune programmation manuelle : il observe et reproduit.


⚙️ Principe de fonctionnement

Le plugin fonctionne en 3 phases :

1. Phase d'apprentissage (enregistrement)

Des que vous ajoutez des equipements a une simulation, le plugin observe en permanence les changements d'etat via des listeners Jeedom. Chaque evenement (allumage, extinction, changement de position...) est enregistre en base de donnees avec :

  • la commande source
  • la date, l'heure et le jour de la semaine
  • le type d'evenement (binary_on, binary_off, level_change, color_change...)
  • la valeur associee (position, couleur, niveau)
Pas besoin d'attendre

L'enregistrement commence immediatement apres la sauvegarde de l'equipement. Plus la periode d'apprentissage est longue, plus la simulation sera realiste. Un minimum de 24 heures de donnees est requis pour lancer une simulation.

2. Phase de construction du profil

A partir des evenements enregistres, le plugin construit un profil statistique :

  • La journee est decoupee en creneaux (par defaut 15 minutes)
  • Pour chaque creneau, un ratio d'activite est calcule (ex: lumiere allumee 80% du temps entre 19h00 et 19h15)
  • Les donnees recentes ont plus de poids que les anciennes (decroissance exponentielle)
  • Un lissage gaussien evite les variations brusques entre creneaux adjacents
  • La confiance du profil augmente avec le nombre d'echantillons

Le profil peut etre separe en semaine/weekend ou par jour de la semaine.

3. Phase de replay (simulation active)

Lorsque la simulation est lancee, chaque minute le plugin :

  1. Determine le creneau horaire actuel
  2. Consulte le ratio du profil pour chaque equipement
  3. Prend une decision probabiliste (ou deterministe) : ON ou OFF
  4. Verifie l'anti-oscillation (delai minimum entre deux changements)
  5. Execute la commande si necessaire

Le resultat est un comportement naturel et variable : la lumiere ne s'allume pas exactement a la meme heure chaque jour, mais dans une plage coherente avec vos habitudes.


📋 Prerequis

  • Jeedom 4.4 minimum
  • Node.js installe (le plugin gere l'installation automatique des dependances)
  • Au moins un equipement avec des commandes info/action (lumiere, volet, prise...)

📥 Installation

1. Installation depuis le Market

  1. Allez dans Plugins > Gestion des plugins > Market
  2. Recherchez Simulation
  3. Cliquez sur Installer
  4. Activez le plugin

2. Configuration du plugin

Apres l'installation, allez dans la configuration du plugin :

  • Activer le demon : active le daemon Node.js pour une planification precise des actions
  • Port socket : port TCP du daemon (defaut : 55130)
  • Tables BDD : le plugin cree automatiquement ses tables. Si le message indique que les tables n'existent pas, cliquez sur Creer les tables du plugin

3. Installation des dependances

Si Node.js n'est pas installe, cliquez sur Installer les dependances dans la page de configuration du plugin. Le plugin installera Node.js automatiquement.


➕ Creer un equipement Simulation

Depuis Plugins > Automatisation > Simulation, cliquez sur Ajouter.

Chaque equipement Simulation correspond a un ensemble d'equipements a simuler ensemble (ex: "Simulation Maison", "Simulation RDC").


🔧 Configuration

L'equipement est organise en 3 onglets :

OngletRole
EquipementParametres generaux (nom, objet parent, activer/visible)
ConfigurationParametres de simulation, equipements a surveiller, profil statistique
CommandesCommandes generees automatiquement (lancer, arreter, etat)

🎛️ Onglet Configuration

Cet onglet est divise en deux colonnes.

Colonne gauche : Parametres de simulation

Mode

Le mode Auto (apprentissage) est le seul mode disponible. Le plugin apprend automatiquement vos habitudes et les rejoue.

Activer

Case a cocher pour activer l'enregistrement et la possibilite de lancer la simulation.

Actionneurs

Permet d'ajouter des commandes binaires qui servent de declencheurs externes. Ces actionneurs peuvent conditionner le demarrage ou l'arret de la simulation.

Horaire

Plage horaire pendant laquelle la simulation est autorisee a fonctionner.

  • De / A : heures de debut et de fin (format HH:MM)
  • Traverse minuit : cocher si la plage franchit minuit (ex: 22:00 a 06:00)

Si la plage est vide, la simulation fonctionne 24h/24.

Jours

Cases a cocher pour selectionner les jours de la semaine ou la simulation est autorisee.

Condition

Expression Jeedom optionnelle qui doit etre vraie pour que la simulation puisse se lancer. Permet de conditionner la simulation a l'etat d'un capteur (ex: alarme activee, absence detectee).

#[Securite][Alarme][Etat]# == 1

Colonne droite : Donnees et profil

Gestion des donnees

BoutonAction
DonneesOuvre la fenetre de visualisation des evenements enregistres
Update DonneesForce la reconstruction du profil statistique
ResetSupprime toutes les donnees enregistrees (irreversible)

Configuration mode auto avec equipements

Historique

Nombre de jours de conservation des donnees (defaut : 15). Au-dela, les evenements sont automatiquement supprimes par le cron quotidien.

Cochez Conserver indefiniment pour desactiver le nettoyage automatique.

Mode d'execution

ModeDescription
ReelLes commandes sont effectivement executees sur les equipements
Simulation seule (dry run)Les actions sont uniquement loguees (widget + logs debug) sans executer les commandes reelles

Le mode dry run est ideal pour valider le comportement avant de partir en vacances.

Profil statistique

ParametreDefautDescription
Fenetre historique30 joursNombre de jours d'historique utilises pour construire le profil
Duree slot15 minGranularite des creneaux horaires (minimum 5 min)
Echantillons minimum5Nombre minimum de jours avec donnees pour qu'un creneau soit fiable
Intervalle min. entre actions20 minDelai anti-oscillation entre deux changements d'etat d'un meme groupe
Mode profilSemaine/WeekendSepare le profil en jours de semaine et weekend, ou par jour individuel
Strategie de decisionProbabilisteMode de prise de decision

Strategies de decision

  • Probabiliste : la decision ON/OFF est aleatoire, ponderee par le ratio du profil. Si la lumiere est allumee 70% du temps a 20h, il y a 70% de chances qu'elle s'allume. Cela cree une variation naturelle.
  • Deterministe : la lumiere s'allume si le ratio depasse un seuil fixe (defaut 0.60). Plus previsible, mais moins naturel.

🏠 Section Equipements

La partie basse de l'onglet Configuration liste les equipements a simuler.

Equipements configures avec leurs commandes

Cliquez sur le bouton + pour ajouter un equipement. Pour chaque equipement ajoute, le plugin detecte automatiquement les commandes disponibles et leur attribue un role :

Familles de groupes

FamilleUsageInfo sourceActions
binaryLumieres, prises on/offCommande info binaire (etat)ON + OFF
positionVolets, storesCommande info numerique (0-100%)Slider position et/ou open/close/stop
levelVariateurs, dimmersCommande info numeriqueSlider niveau + optionnel pre-allumage
colorAmpoules couleur RGBCommande info stringCouleur + optionnel temperature + pre-allumage

Le plugin deduit automatiquement la famille et les roles a partir des generic_types Jeedom et des noms de commandes. Vous pouvez modifier les associations manuellement si necessaire.

Pour chaque equipement, une carte affiche :

  • Le nom de l'equipement
  • Les commandes detectees avec leur role (ETAT, ON, OFF, Couleur, Valeur...)
  • Les options de chaque commande (couleur hexa, valeur slider...)
  • Un bouton Modifier pour ajuster les commandes

📊 Donnees enregistrees

Le bouton Donnees ouvre une fenetre affichant tous les evenements enregistres :

Fenetre des donnees enregistrees

Pour chaque evenement :

ColonneDescription
IdIdentifiant unique
NomNom de l'equipement source
CollecTimeDate et heure de l'evenement
DureeDuree de l'etat en secondes
StatutTermine ou En cours
ErreursOK ou detail de l'erreur
ActionBouton pour supprimer l'evenement

📡 Commandes

Le plugin genere automatiquement 3 commandes :

CommandeTypeDescription
launchactionLance la simulation
cancelactionArrete la simulation
etatinfo binaireEtat courant (1 = simulation active, 0 = inactive)

Ces commandes sont utilisables dans les scenarios, les virtuels et tout autre plugin Jeedom.


🖥️ Widget Dashboard et Mobile

Le widget affiche un journal en temps reel des actions executees pendant la simulation :

  • Indicateur d'etat : icone verte (active) ou grise (inactive) en haut a droite
  • Journal : liste scrollable des actions executees avec horodatage
  • Bouton reset : vide le journal du widget

En mode dry run, le journal affiche les actions qui auraient ete executees sans les appliquer reellement.


🩺 Page Sante

Accessible depuis la page du plugin via le bouton Sante, cette page verifie l'etat global :

Page sante du plugin

ElementVerification
Base de donneesTables presentes, nombre d'evenements, taille
Configuration MySQLParametres cles (buffer pool, cache, etc.)
Espace disqueEspace libre suffisant
DemonStatus et port du daemon Node.js
Node.jsVersion et chemin
EquipementsEtat, nombre de commandes et groupes configures

🔄 Daemon Node.js

Le plugin utilise un daemon Node.js pour planifier les actions avec precision.

  • Le daemon recoit des jobs via un socket TCP local (port 55130)
  • Il execute les actions au moment prevu et rappelle le plugin PHP via callback HTTP
  • Si le daemon tombe, le cron minute le relance automatiquement (watchdog)
  • Si le daemon est desactive, le plugin utilise le systeme de crons Jeedom en fallback

Le daemon est entierement transparent : vous n'avez pas a interagir avec lui.


📝 Utilisation dans les scenarios

Lancer la simulation au depart

// Condition : alarme activee (vous etes parti)
SI #[Securite][Alarme][Etat]# == 1
ALORS
#[Maison][Simulation][launch]#
FIN SI

Arreter la simulation au retour

SI #[Securite][Alarme][Etat]# == 0
ALORS
#[Maison][Simulation][cancel]#
FIN SI

Verifier l'etat de la simulation

SI #[Maison][Simulation][etat]# == 1
ALORS
// La simulation est en cours
FIN SI

💡 Exemples d'usage concrets

Vacances classiques

  • Equipements : lumieres salon, cuisine, chambre + volets
  • Horaire : 07:00 a 23:00
  • Condition : #[Securite][Alarme][Etat]# == 1
  • Historique : 30 jours
  • Resultat : les lumieres s'allument et s'eteignent selon vos habitudes reelles, les volets bougent naturellement

Weekend prolonge

  • Equipements : lumieres + TV (prise connectee)
  • Horaire : vide (24h/24)
  • Jours : tous
  • Mode : dry run d'abord pour valider, puis reel
  • Resultat : presence simulee y compris la nuit (veilleuse, passage aux toilettes)

Simulation avec couleurs

  • Equipements : ampoules Hue/Matter avec couleur et niveau
  • Le plugin enregistre les changements de couleur et de luminosite
  • Au replay, il reproduit les ambiances exactes (couleur chaude le soir, froide le matin)

✅ Bonnes pratiques

  • Laissez tourner l'apprentissage au moins une semaine avant la premiere simulation pour un profil representatif
  • Utilisez le mode dry run pour valider le comportement avant un vrai depart
  • Commencez avec quelques equipements avant d'en ajouter d'autres
  • Verifiez que les commandes auto-detectees sont correctes (ON/OFF, pas inversees)
  • Le mode Semaine/Weekend est recommande : vos habitudes different generalement entre les deux
  • Si la simulation vous parait trop repetitive, reduisez la duree des slots (10 ou 5 min) pour plus de granularite
  • Consultez la page Sante en cas de doute sur le fonctionnement

🛠️ Depannage

La simulation ne se lance pas

  • Verifiez que l'equipement est active (case cochee)
  • Verifiez que la condition est remplie (si configuree)
  • Verifiez que le jour actuel est autorise
  • Verifiez que l'horaire actuel est dans la plage configuree
  • Verifiez qu'il y a au moins 24 heures de donnees enregistrees
  • Consultez les logs du plugin (niveau debug)

Les equipements ne s'enregistrent pas

  • Verifiez que les equipements sont ajoutes dans la section Equipements
  • Sauvegardez l'equipement simulation (les listeners sont crees a la sauvegarde)
  • Verifiez que les commandes info source sont bien des commandes info (pas action)

Le daemon ne demarre pas

  • Verifiez que Node.js est installe (page configuration du plugin)
  • Verifiez que le port 55130 n'est pas utilise par un autre service
  • Relancez les dependances si necessaire
  • Consultez les logs simulation_daemon

La simulation est trop repetitive

  • Augmentez la fenetre historique (30-60 jours) pour plus de variete
  • Reduisez la duree des slots (10 ou 5 min)
  • Verifiez que la strategie est bien Probabiliste (pas Deterministe)
  • Reduisez l'intervalle min. entre actions (10 min au lieu de 20)

Les volets ne bougent pas

  • Verifiez que la commande info source est bien une commande numerique (0-100)
  • Verifiez que la commande action slider est bien configuree
  • Verifiez que le role position est correctement attribue