smartcitizen
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| smartcitizen [2020/11/09 22:19] – Benjamin Labomedia | smartcitizen [2020/12/01 17:43] (Version actuelle) – ↷ Liens modifiés en raison d'un déplacement. serge | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| ====== Smartcitizen ====== | ====== Smartcitizen ====== | ||
| Le [[https:// | Le [[https:// | ||
| - | |||
| - | {{ :: | ||
| 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' | 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' | ||
| {{ : | {{ : | ||
| + | ---- | ||
| + | ===== 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, ... | ||
| - | ====== Kit de mesure SmartCitizen | + | {{ media_12: |
| - | ====== Application SmartCitizen Android avec Kivy ====== | + | ===== Application SmartCitizen Android avec Kivy ===== |
| <WRAP center round box 60% centeralign> | <WRAP center round box 60% centeralign> | ||
| Ligne 25: | Ligne 25: | ||
| <WRAP group> | <WRAP group> | ||
| <WRAP third column> | <WRAP third column> | ||
| - | {{:: | + | {{media_12: |
| </ | </ | ||
| <WRAP third column> | <WRAP third column> | ||
| - | {{:: | + | {{media_12: |
| </ | </ | ||
| <WRAP third column> | <WRAP third column> | ||
| - | {{:: | + | {{media_12: |
| </ | </ | ||
| </ | </ | ||
| - | {{ : | + | {{ media_12: |
| - | =====Ressources===== | + | ====Ressources==== |
| * **[[https:// | * **[[https:// | ||
| * **[[https:// | * **[[https:// | ||
| Ligne 45: | Ligne 45: | ||
| * **[[https:// | * **[[https:// | ||
| ===apk=== | ===apk=== | ||
| - | **{{ :: | + | **{{ media_12: |
| - | =====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' | ===L' | ||
| - | 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' |
| - | mais pas l' | + | |
| - | Solution: Un Clock dans A actualise | + | Une solution plus élégante est utilisée dans **[[https:// |
| + | <code python> | ||
| + | class AccelerometerApp(App): | ||
| + | def build(self): | ||
| + | return Accelerometer(self) | ||
| + | |||
| + | class Accelerometer(BoxLayout): | ||
| + | def __init__(self, | ||
| + | super().__init__(**kwargs) | ||
| + | self.app = app | ||
| + | self.app.osc = OSC() | ||
| + | |||
| + | class OSC: | ||
| + | def __init__(self): | ||
| + | self.histo = [] | ||
| + | self.server = OSCThreadServer() | ||
| + | self.server.bind(b'/ | ||
| + | |||
| + | def on_histo(self, | ||
| + | self.histo = .... | ||
| + | |||
| + | class Screen2: | ||
| + | def __init__(self): | ||
| + | self.app = App.get_running_app() # dans __init__() | ||
| + | # et appel de l' | ||
| + | self.app.osc.histo | ||
| + | Clock.schedule_once(self._once, | ||
| + | |||
| + | def _once(self, dt): | ||
| + | Clock.schedule_interval(self.update, | ||
| + | |||
| + | def update(self, | ||
| + | blabla = self.app.osc.histo | ||
| + | # blabla retrouve | ||
| + | </ | ||
| ===Création du graph dans le kv=== | ===Création du graph dans le kv=== | ||
| * [[https:// | * [[https:// | ||
| - | * | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | =====Widgets Kivy utilisés===== | + | ====Widgets Kivy utilisés==== |
| * **ScreenManager: | * **ScreenManager: | ||
| Ligne 98: | Ligne 126: | ||
| * **[[kivy_garden|Kivy: | * **[[kivy_garden|Kivy: | ||
| - | =====buildozer.spec===== | + | ====buildozer.spec==== |
| - | < | + | < |
| [app] | [app] | ||
| title = Smart Citizen | title = Smart Citizen | ||
| Ligne 121: | Ligne 149: | ||
| </ | </ | ||
| - | =====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 128: | Ligne 156: | ||
| thread_update.start() | thread_update.start() | ||
| </ | </ | ||
| + | ou\\ | ||
| + | class threading.Thread(group=None, | ||
| - | {{tag> kivy python realisations_logicielles sb }} | + | {{tag> |
smartcitizen.1604960398.txt.gz · Dernière modification : de Benjamin Labomedia
