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
kivy_application_android_smart_citizen [2020/01/28 09:32] – [Kivy: Smart Citizen Application Android] sergesmartcitizen [2020/12/01 17:43] (Version actuelle) – ↷ Liens modifiés en raison d'un déplacement. serge
Ligne 1: Ligne 1:
-====== Kivy: Smart Citizen Application Android ======+====== Smartcitizen ====== 
 +Le [[https://smartcitizen.me|Smart Citizen Kit]] est né de la collaboration entre les « Fab Labs » de Barcelone et l'Institut d'Architecture Avancée de Catalogne, tous deux experts de l'impact des nouvelles technologies sur l'habitat humain. Ce kit open source (librement reproductible) est capable de capter et d’analyser différentes données environnementales en temps réel : température, ensoleillement, humidité, CO2, NO2, décibel… 
 + 
 +Le module électronique peut envoyer ses données environnementale sur la plateforme web proposée, il peut aussi marcher "off line" en écrivant les données sur une carte SD, ou se connecter à d'autres services en ligne commerciaux ou artisanaux, ou encore faire l'objet du développement d'une application Android avec Kivy pour visualiser les données. 
 + 
 +{{ :iaac-smart-citizen-3.jpg|}} 
 +---- 
 + 
 +===== 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, ... 
 + 
 +{{ media_12:smartcitizen-kitv2-47950912168_fcf8fa398c_h.jpg|}} 
 + 
 + 
 +===== Application SmartCitizen Android avec Kivy ===== 
 <WRAP center round box 60% centeralign> <WRAP center round box 60% centeralign>
 **{{tagpage>kivy|Toutes les pages Kivy}}**   **{{tagpage>kivy|Toutes les pages Kivy}}**  
 **[[http://translate.google.com/translate?hl=&sl=auto&tl=en&u=https%3A%2F%2Fressources.labomedia.org%2Fkivy_application_android_smart_citizen|English Version]]** **[[http://translate.google.com/translate?hl=&sl=auto&tl=en&u=https%3A%2F%2Fressources.labomedia.org%2Fkivy_application_android_smart_citizen|English Version]]**
 +</WRAP>
 +<WRAP center round box 40% centeralign>
 +**[[les_pages_kivy_en_details|Les pages Kivy en détails]]**
 </WRAP> </WRAP>
  
 <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>
  
  
-=====Ressources=====+{{ media_12:smartcitizen.apk |}} 
 +====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
 +  * **[[https://github.com/fablabbcn/smartcitizen-api|Le GitHub de l'API]]** 
   * **[[https://github.com/sergeLabo/smartcitizen|Les sources de smartcitizen sur GitHub]]**   * **[[https://github.com/sergeLabo/smartcitizen|Les sources de smartcitizen sur GitHub]]**
-  * +  * **[[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 26/01/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)
  
-===Création du graphh dans le kv===+    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===
   * [[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 64: Ligne 112:
   * **Label:**   * **Label:**
  
-===Une imade en background===+===Une image en background===
 [[kivy_image_avec_alpha_sur_fond_blanc|Une image avec canal alpha sur un fond blanc dans un BoxLayout]] [[kivy_image_avec_alpha_sur_fond_blanc|Une image avec canal alpha sur un fond blanc dans un BoxLayout]]
   * **canvas.before:**   * **canvas.before:**
   * **Rectangle:**   * **Rectangle:**
  
-===Menu déroulant===+===Menu glissant===
   * **ScrollView:** Défilement de la liste des capteurs, voir le kv. Avec une répétition de 16 Box peu élégantes, mais qui marche !    * **ScrollView:** Défilement de la liste des capteurs, voir le kv. Avec une répétition de 16 Box peu élégantes, mais qui marche ! 
  
Ligne 78: Ligne 126:
   * **[[kivy_garden|Kivy: Garden graph]]** Pour les courbes   * **[[kivy_garden|Kivy: Garden graph]]** Pour les courbes
  
-{{tag>kivy python3 sb realisations_logicielles}}+====buildozer.spec==== 
 +<code text> 
 +[app] 
 +title = Smart Citizen 
 +package.name = smartcitizen 
 +package.domain = org.test 
 +source.dir = . 
 +source.include_exts = py,png,jpg,kv,atlas 
 +source.exclude_dirs = old, bin, recherche, garden_graph_example 
 +source.include_patterns = images/*.jpg,images/*.png 
 +version.regex = __version__ = ['"](.*)['"
 +version.filename = %(source.dir)s/main.py 
 +requirements = python3,kivy,requests,kivy_garden.graph 
 +garden_requirements = graph 
 +orientation = all 
 +fullscreen = 1 
 +android.permissions = INTERNET 
 +android.arch = armeabi-v7a 
 +[buildozer] 
 +log_level = 2 
 +warn_on_root = 1 
 +</code> 
 + 
 +====Thread in Kivy==== 
 +Pour stopper un thread à la fermeture de la fenêtre, le définir comme Salsa du démon 
 +<code python> 
 +        thread_update = threading.Thread(target=self.update) 
 +        thread_update.setDaemon(True) 
 +        thread_update.start() 
 +</code> 
 +ou\\ 
 +class threading.Thread(group=None, target=None, name=None, args=(), kwargs={}, *, daemon=None) 
 + 
 +{{tag> smartcitizen kivy python realisations_logicielles sb }}
smartcitizen.1580203920.txt.gz · Dernière modification : 2020/01/28 09:32 de serge