Outils pour utilisateurs

Outils du site


smartcitizen

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
smartcitizen [2020/11/09 22:25] Benjamin Labomediasmartcitizen [2020/12/01 17:43] (Version actuelle) – ↷ Liens modifiés en raison d'un déplacement. serge
Ligne 5: Ligne 5:
  
 {{ :iaac-smart-citizen-3.jpg|}} {{ :iaac-smart-citizen-3.jpg|}}
 +----
  
- +===== Kit de mesure SmartCitizen - approches hardware et software =====
- +
- +
-====== Kit de mesure SmartCitizen - approches hardware et software ======+
 **Voir [[smartcitizen_hardware_software|la page dédiée aux recherches et expérimentations autour du kit SmartCitizen coté logiciel et matériel]]** : extraction de données, envoi par client mqtt, connexion au réseau Lora, ... **Voir [[smartcitizen_hardware_software|la page dédiée aux recherches et expérimentations autour du kit SmartCitizen coté logiciel et matériel]]** : extraction de données, envoi par client mqtt, connexion au réseau Lora, ...
  
-{{ ::smartcitizen-kitv2-47950912168_fcf8fa398c_h.jpg|}}+{{ media_12:smartcitizen-kitv2-47950912168_fcf8fa398c_h.jpg|}}
  
  
-====== Application SmartCitizen Android avec Kivy ======+===== Application SmartCitizen Android avec Kivy =====
  
 <WRAP center round box 60% centeralign> <WRAP center round box 60% centeralign>
Ligne 27: Ligne 25:
 <WRAP group> <WRAP group>
 <WRAP third column> <WRAP third column>
-{{::smartcitizen_1.png?300|}}+{{media_12:smartcitizen_1.png?300|}}
 </WRAP> </WRAP>
 <WRAP third column> <WRAP third column>
-{{::smartcitizen_2.png?300|}}+{{media_12:smartcitizen_2.png?300|}}
 </WRAP> </WRAP>
  
 <WRAP third column> <WRAP third column>
-{{::smartcitizen_3.png?300|}}+{{media_12:smartcitizen_3.png?300|}}
 </WRAP> </WRAP>
 </WRAP> </WRAP>
  
  
-{{ :smartcitizen.apk |}} +{{ media_12:smartcitizen.apk |}} 
-=====Ressources=====+====Ressources====
   * **[[https://smartcitizen.me/kits/9525|Nos capteurs]]** La page web de nos capteurs   * **[[https://smartcitizen.me/kits/9525|Nos capteurs]]** La page web de nos capteurs
   * **[[https://developer.smartcitizen.me/#summary|API]]** l'API de smartcitizen   * **[[https://developer.smartcitizen.me/#summary|API]]** l'API de smartcitizen
Ligne 47: Ligne 45:
   * **[[https://forum.smartcitizen.me/t/is-it-possible-to-get-the-data-out-of-the-sensor-directly/1343/5|Comment récupérer directement les données sans passer par le site web]]**   * **[[https://forum.smartcitizen.me/t/is-it-possible-to-get-the-data-out-of-the-sensor-directly/1343/5|Comment récupérer directement les données sans passer par le site web]]**
 ===apk=== ===apk===
-**{{ ::smartcitizen.apk |}}** du 16/02/2020+**{{ media_12:smartcitizen.apk |}}** du 16/02/2020
  
-=====Les choses non réussies=====+====Les choses non réussies====
   * Créer les box du menu déroulant dans le main.py alors que ça marche dans [[taposc|TapOSC]] mais sans menu déroulant.   * Créer les box du menu déroulant dans le main.py alors que ça marche dans [[taposc|TapOSC]] mais sans menu déroulant.
   * Un simple label transparent au dessus d'un widget   * Un simple label transparent au dessus d'un widget
  
-=====Les difficultés rencontrées=====+====Les difficultés rencontrées====
 ===L'accès à des variables d'une class depuis une autre=== ===L'accès à des variables d'une class depuis une autre===
-Exemple: la class A peut accéder à la variable self.toto de la class B,\\ +La class A peut accéder à la variable self.toto de la class B, mais pas l'inversela class B ne peut pas accéder à la variable self.truc de la class A. La solution utilisée dans cette application est  un Clock dans A qui actualise la valeur de B.
-mais pas l'inverse la class B ne peut pas accéder à la variable self.truc de la class A.+
  
-SolutionUn Clock dans A actualise la valeur de B.+Une solution plus élégante est utilisée dans **[[https://github.com/sergeLabo/accelerometer/blob/main/main.py|accelerometer: main.py]]** avec 
 +<code python> 
 +class AccelerometerApp(App): 
 +    def build(self): 
 +        return Accelerometer(self) 
 +         
 +class Accelerometer(BoxLayout): 
 +    def __init__(self, app, **kwargs): 
 +        super().__init__(**kwargs) 
 +        self.app = app 
 +        self.app.osc = OSC() 
 +         
 +class OSC: 
 +    def __init__(self): 
 +        self.histo = [] 
 +        self.server = OSCThreadServer() 
 +        self.server.bind(b'/histo', self.on_histo) 
 +         
 +    def on_histo(self, *args): 
 +        self.histo = .... 
 +         
 +class Screen2: 
 +    def __init__(self): 
 +        self.app = App.get_running_app() # dans __init__() 
 +        # et appel de l'attribut histo de OSC avec 
 +        self.app.osc.histo 
 +        Clock.schedule_once(self._once, 1) 
 + 
 +    def _once(self, dt): 
 +        Clock.schedule_interval(self.update, 0.1) 
 +         
 +    def update(self, dt):  
 +        blabla = self.app.osc.histo  
 +        # blabla retrouve la valeur de histo de OSC !!!! 
 +</code>
  
 ===Création du graph dans le kv=== ===Création du graph dans le kv===
   * [[https://github.com/sergeLabo/smartcitizen/tree/master/smartcitizen/garden_graph_example|garden_graph_example]] contient 3 exemples pour étudier le problème.   * [[https://github.com/sergeLabo/smartcitizen/tree/master/smartcitizen/garden_graph_example|garden_graph_example]] contient 3 exemples pour étudier le problème.
-  *  
- 
- 
- 
- 
  
-=====Widgets Kivy utilisés=====+====Widgets Kivy utilisés====
   * **ScreenManager:** Plusieurs écrans [[kivy_liste_des_elements_graphiques_widgets_de_comportement_et_gestion_d_ecrans#screen_manager|Screen manager]]. Dans cette application le Screen manager est créé dans le kv   * **ScreenManager:** Plusieurs écrans [[kivy_liste_des_elements_graphiques_widgets_de_comportement_et_gestion_d_ecrans#screen_manager|Screen manager]]. Dans cette application le Screen manager est créé dans le kv
  
Ligne 100: Ligne 126:
   * **[[kivy_garden|Kivy: Garden graph]]** Pour les courbes   * **[[kivy_garden|Kivy: Garden graph]]** Pour les courbes
  
-=====buildozer.spec===== +====buildozer.spec==== 
-<code python>+<code text>
 [app] [app]
 title = Smart Citizen title = Smart Citizen
Ligne 123: Ligne 149:
 </code> </code>
  
-=====Thread in Kivy=====+====Thread in Kivy====
 Pour stopper un thread à la fermeture de la fenêtre, le définir comme Salsa du démon Pour stopper un thread à la fermeture de la fenêtre, le définir comme Salsa du démon
 <code python> <code python>
Ligne 130: Ligne 156:
         thread_update.start()         thread_update.start()
 </code> </code>
 +ou\\
 +class threading.Thread(group=None, target=None, name=None, args=(), kwargs={}, *, daemon=None)
  
-{{tag> kivy python realisations_logicielles sb }}+{{tag> smartcitizen kivy python realisations_logicielles sb }}
smartcitizen.1604960717.txt.gz · Dernière modification : 2020/11/09 22:25 de Benjamin Labomedia