E N D
Systèmes multi-agents Comment intégrer un système domotique à un habitat existant? Jean LAULIAC // Nordwin HOFF domonergy.com
1 Analyse de l’existant et architecture générale 2 Conception de l’agent domotique 3 Implémentation et résultats
1 Analyse de l’existant et architecture générale 2 Conception de l’agent domotique 3 Implémentation et résultats
Eclairage TV Stores Multimédia
Interface utilisateur (iOS…) • Interface serveur (SOAP via WCF) • Agent de gestion domotique (biblio. applicative) • Interface logicielle avec le matériel (assemblies .NET implémenteurs, drivers) La pile Domonergy • Interface matérielle de contrôle (Ethernet, KNX, RS232, Infrarouge...) • Matériels (ampoule, bouton poussoir, TV, lecteur multimédia, thermostat, chauffage…)
Résident(iOS) Habitants • Administrateur(iOS/avancé) • Intégrateur(configuration agent) Utilisateurs de la solution Partenaires • Implémenteur(création drivers/interfaces)
Interface utilisateur (iOS…) • Interface serveur (SOAP via WCF) • Agent de gestion domotique(bibliothèque applicative) • Interface logicielle avec le matériel (assemblies .NET implémenteurs, drivers) La pile Domonergy • Interface matérielle de contrôle (KNX, RS232, Infrarouge...) • Matériels (ampoule, bouton poussoir, TV, lecteur multimédia, thermostat, chauffage…)
2 Conception de l’agent domotique 1 Analyse de l’existant et architecture générale 3 Implémentation et résultats
Contraintes • Modification du fonctionnement aisé • Règles découplées de l’algorithme (m. inférence) • Séparation entre structure et comportement • Règles découplées de la structure de l’habitat • Séparation entre structure et matériels • Abstraction du matériel au niveau de l’agent • Cohérence systématique de l’environnement • Principe de « désactivation » des règles • Totalement déterministe • Agent réflexe, pas d’apprentissage
Agent de gestion domotique • Agent réflexe simple • Règles en logique formelle d’ordre 0, mais… • …contextualisation des règles • Chaînage avant en profondeur • Cycle d’inférence déclenché dès un changement d’état entrant • Ordre de priorité sur les effecteurs uniquement
DEML: DomoticsEnvironmentMarkupLanguage config.deml <?xmlversion="1.0" encoding="utf-8" ?> <demlxmlns="http://domonergy.com/deml/"> <head> <pathfor="drivers" value="." /> <link rel="rulesheet" src="rules.drs" /> </head> <body> <!-- ... --> <areaclass="room" id="livingRoom"> <deviceid="tv" driver="TVDevice" /> <deviceid="tvLight" class="light" driver="LightDevice" /> <deviceid="tvPs" class="presenceSensor" driver="PresenceDevice" /> </area> </body>
DRS: DomoticsRuleSheet rules.drs .room { artificialLight: personIsPresent; artificialDimmedLight: artificialLight, dimmedLight; } .light { Lighted(false); Power(1); Lighted(true): artificialLight; Power(0.3): artificialDimmedLight; } .presenceSensor { personIsPresent: [Presence = true]; } #tv { dimmedLight: [State = "Running"]; }
Agent: exemple de règles générées [#tv/State = "Running"] [.presenceSensor#tvPs/Presence= true] .room#livingRoom/personIsPresent .room#livingRoom/dimmedLight .room#livingRoom/artificialLight .room#livingRoom/artificialDimmedLight .light#tvLight/Lighted(true) .light#tvLight/Lighted(false) .light#tvLight/Power(0.3) .light#tvLight/Power(1.0)
3 Implémentation et résultats 2 Conception de l’agent domotique 1 Analyse de l’existant et architecture générale
Méthodologie • Incrémentale: conception et implémentation ont évolués parallèlement, par cycles • Utilisation d’un dépôt Mercurial (HG) • Répartition: • Nordwin HOFF: interfacage, scénarios • Jean LAULIAC: agent, règles d’inférence
Technologies • C# 4 • Framework .NET (Windows Forms, réflexion…) • Microsoft Extensibility Framework (compositing) • ANTLR(lexinget parsingdes DRS en grammaire LL(k)) • XML LINQ (analyse des DEML et validation XSD)
Gestion de l’agent Gestion des DRS Gestion des DEML
1 Analyse de l’existant et architecture générale 2 Conception de l’agent domotique 3 Implémentation et résultats Prochaines étapes?
Configuration utilisateur? config.deml <!-- ... --> <userpropid="UserHomeCinema" title="Home Cinéma" /> rules.drs /* ... */ #tv { dimmedLight: [State = "Running"], UserHomeCinema; }
Chainage arrière des règles? UserHomeCinema • + vérif. statique des points de fractures [#tv/State = "Running"] [.presenceSensor#tvPs/Presence= true] .room#livingRoom/personIsPresent .room#livingRoom/dimmedLight .room#livingRoom/artificialLight .room#livingRoom/artificialDimmedLight .light#tvLight/Lighted(true) .light#tvLight/Lighted(false) .light#tvLight/Power(0.3) .light#tvLight/Power(1.0)
Validation et conditions? rules.drs – validation? /* ... */ .light { Lighted(false); Power(1); Lighted(true): artificialLight; Power(0.3): artificialDimmedLight; ensure(Power >= 0.3); }
Configuration du matériel? config.deml – configuration des devices <!-- ... --> <deviceclass="light" driver="KnxLight" knx:type="ethernet" knx:port="2" />