Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
smarthome:stage_d_ete_2020_simsvirtualhome [2020/07/31 08:24]
mliang [Overview]
smarthome:stage_d_ete_2020_simsvirtualhome [2020/07/31 10:59]
mliang
Line 15: Line 15:
 Cette API est sur Jupyter Notebook ou Python script, grâce à la ligne : Cette API est sur Jupyter Notebook ou Python script, grâce à la ligne :
   comm = UnityCommunication()   comm = UnityCommunication()
 +  ​
 +ou cette ligne sur Jupyter Notebook :
 +  comm = setup()
 +
 +alors on peut communiquer avec le simulateur.
  
 En début de projet, j'ai exécuté mon programme Python et j'ai modifié des états de la télévision et le micro-ondes sur le fichier Jupyter unity_demo.ipynb. Mon programme a détecté un changement des états et a noté le temps, id de l'​objet et le nouveau état sur un fichier CSV. Par conséquent,​ ce sont comme 2 capteurs. En début de projet, j'ai exécuté mon programme Python et j'ai modifié des états de la télévision et le micro-ondes sur le fichier Jupyter unity_demo.ipynb. Mon programme a détecté un changement des états et a noté le temps, id de l'​objet et le nouveau état sur un fichier CSV. Par conséquent,​ ce sont comme 2 capteurs.
Line 22: Line 27:
 Après, j'ai essayé de faire des scripts en laissant l'​avatar faire des actions donc en changeant des états. Les données des capteurs seront enregistrées sur states.csv. Après, j'ai essayé de faire des scripts en laissant l'​avatar faire des actions donc en changeant des états. Les données des capteurs seront enregistrées sur states.csv.
  
 +Version du simulateur : exec_linux_07_01_Data. ​
 +
 +Version de Python : Python3.
 ===== Work ===== ===== Work =====
- 
-Version du simulateur : exec_linux_07_01_Data. 
  
 Le programme complet est sur : https://​github.com/​Beam-coder/​virtualhome-master. Le programme complet est sur : https://​github.com/​Beam-coder/​virtualhome-master.
  
-{{:​smarthome:​generate_config.png?​400|}}+==== Comment lancer mon capteur ====
  
-//​Illustration 1 : Génération du fichier ​configuration.txt//+  * Exécuter la partie « Mingqian'​s sensors » sur unity_demo.ipynb pour avoir configuration.txt
 +  * Ouvrir configuration.txt et changer la valeur des capteurs que vous voulez désactiver en 0. 
 +  * Exécuter sensors.py.
  
-Tout d'​abord,​ on génère automatiquement configuration.txt qui contient tous les objets qui ont des états ​grâce à ce code sur unity_demo.ipynb.+Vous trouverez le changement ​des états sur states.csv.
  
-{{:​smarthome:​configuration.png?​400|}}+=== Analyse du programme ===
  
-//​Illustration 2 : configuration.txt//+**1. Génération du fichier ​configuration.txt**
  
-Voici configuration.txt. On peut voir id, nom de classe et le lieu de l'​objet. Le chiffre 0 ou 1 indique le capteur activé ou désactivé. 
  
-{{:smarthome:main_fonction.png?400|}}+ configuration_dict = {
 + for unit in hasstate_array:​ 
 +     if len(unit['​states'​]) == 1: 
 + configuration_dict[(unit['​id'​],​ id_object_room[unit['​id'​]])] = 1 
 +     else: 
 + configuration_dict[(unit['​id'​],​ id_object_room[unit['​id'​]],​ '​door'​)] = 1 
 + configuration_dict[(unit['​id'​],​ id_object_room[unit['​id'​]],​ '​plug'​)] = 1 
 + #​print(configuration_dict) 
 + with open('​configuration.txt',​ '​w'​) as file: 
 +     file.write('​{') 
 +     for key, value in configuration_dict.items(): 
 + file.write(str(key)+'​'​+str(value)+',​\n'​) 
 +     file.write('​}')
  
-//​Illustration ​3 : Fonction main()//+Tout d'​abord,​ on génère automatiquement configuration.txt qui contient tous les objets qui ont des états grâce à ce code sur unity_demo.ipynb. 
 + 
 +**2. configuration.txt** 
 + 
 + {(25, '​closet_livingroom'​):​ 1, 
 + (67, '​tablelamp_livingroom'​):​ 1, 
 + (77, '​book_livingroom'​):​ 1, 
 + (78, '​book_livingroom'​):​ 1, 
 + (81, '​facecream_livingroom'​):​ 1, 
 + (92, '​lightswitch_livingroom'​):​ 1, 
 + (97, '​tv_livingroom'​):​ 1, 
 + (98, '​computer_livingroom'​):​ 1, 
 + (120, '​door_kitchen'​):​ 1, 
 + (132, '​kitchencabinets_kitchen'​):​ 1, 
 + (133, '​kitchencabinets_kitchen'​):​ 1, 
 + (134, '​kitchencounter_kitchen'​):​ 1, 
 + (136, '​faucet_kitchencounter'​):​ 1, 
 + (138, '​stove_kitchen',​ '​door'​):​ 1, 
 + (138, '​stove_kitchen',​ '​plug'​):​ 1, 
 + (140, '​dishwasher_kitchen',​ '​door'​):​ 1, 
 + (140, '​dishwasher_kitchen',​ '​plug'​):​ 1, 
 + (141, '​fridge_kitchen'​):​ 1, 
 + (142, '​toaster_kitchencounter'​):​ 1, 
 + (145, '​coffeemaker_kitchen',​ '​door'​):​ 1, 
 +        ... 
 + 
 +Voici configuration.txt. On peut voir id, nom de classe et le lieu de l'​objet. Le chiffre 0 ou 1 indique que le capteur est activé ou désactivé. 
 + 
 +**3 : Fonction main()** 
 +  def main(): 
 +       
 +      comm = simulatorComm() 
 +       
 +      configuration = readConfig("​configuration.txt"​) 
 +       
 +      state_dict = initializeState_dict(configuration) 
 +       
 +      while True: 
 +           
 +          graph = getGraph(comm) 
 +           
 +          writeState(state_dict,​ graph) 
 +           
 +          time.sleep(1)
  
 C'est mon programme de capteur. « state_dict » est un dictionnaire qui contient tous les capteurs activés. Ensuite une boucle infinie permet de détecter et de noter si les états se changent. Enfin, « time.sleep(1) » pour faire une pause d'une seconde. C'est mon programme de capteur. « state_dict » est un dictionnaire qui contient tous les capteurs activés. Ensuite une boucle infinie permet de détecter et de noter si les états se changent. Enfin, « time.sleep(1) » pour faire une pause d'une seconde.
  
-Par contre, le graphe sur le simulateur ne se change pas lorsque l'on exécute un script. C'est le problème du simulateur et on est en train de contacter le créateur du simulateur pour une nouvelle version.+**Problème**
  
-===== Results =====+Par contre, la variable « graph » sur le simulateur ne se change pas lorsque l'on exécute un script. On ne peut détecter le changement que par la variable « graphe ». Par conséquent,​ on ne peut pas avoir le changement des états en exécutant des scripts. C'est le problème du simulateur et on est en train de contacter le créateur du simulateur pour une nouvelle version.
  
 +Avant que le créateur répare le problème, on propose deux solutions secondaires :
 +
 +  - Soit on ajoute « save_scene_states=True » dans « comm.render_script » donc on a le changement des états. Pour le temps du changement, on génère une vidéo et le calcule à partir de la durée de la vidéo, quel frame et la fréquence image.
 +  - Soit on le fait par la méthode "​Evolving Graph"​.
 +===== Results =====
  
-Les données des capteurs seront enregistrées sur states.csv.+Les données des capteurs seront enregistrées sur states.csv ​comme cela :
  
 +        ...
 + 07/​21/​20 21:​30:​33 353 ON
 + 07/​21/​20 21:​30:​33 354 CLOSED
 + 07/​21/​20 21:​30:​33 354 OFF
 + 07/​21/​20 21:​32:​06 146 ON
 + 07/​21/​20 21:​32:​06 354 ON
 + 07/​21/​20 21:​34:​34 146 OFF
 + 07/​21/​20 21:​37:​41 25 CLOSED
 + 07/​21/​20 21:​37:​57 25 CLOSED
 + 07/​21/​20 21:​38:​33 25 CLOSED
 + 07/​21/​20 21:​38:​33 67 ON
 +        ...
  
 {{tag>​project software}} {{tag>​project software}}
  • smarthome/stage_d_ete_2020_simsvirtualhome.txt
  • Last modified: 2020/07/31 13:05
  • by mai