Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
projets:gdevelop-osc:accueil [2019/07/15 17:53] laurent [Matériaux] |
projets:gdevelop-osc:accueil [2019/07/15 19:10] laurent [Principes de fonctionnement] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== | + | ====== |
* Porteur du projet : Laurent | * Porteur du projet : Laurent | ||
* Date : 15/07/2019 | * Date : 15/07/2019 | ||
* Licence : libre ! | * Licence : libre ! | ||
- | * Contexte : | + | * Contexte : oui |
- | * Fichiers : lien | + | * Fichiers : {{ : |
- | * Lien : lien vers un site éventuellement | + | |
Ligne 15: | Ligne 14: | ||
Beaucoup de capteurs DIY utilisant le protocole [[https:// | Beaucoup de capteurs DIY utilisant le protocole [[https:// | ||
- | ===== Matériaux | + | ===== Technos |
- | Pour pouvoir répondre à une requête GET ou POST envoyée par Gdevelop, il faut utiliser un serveur web. L' | + | Pour pouvoir répondre à une requête GET ou POST envoyée par Gdevelop, il faut utiliser un serveur web. L' |
Côté hardware, n' | Côté hardware, n' | ||
- | ===== Installation ===== | ||
- | Sous Linux, l' | ||
- | ===== Tutoriel ===== | ||
- | Photos ou guide pas à pas | ||
- | ===== Photos | + | ===== Principes de fonctionnement |
- | Autres photos, galerie, ... | + | Le serveur web n'est accessible en local et utilise un port défini dans le code (par défaut le port 5000). Il doit donc tourner sur la même machine que Gdevelop. |
+ | Pour éviter de devoir définir au préalable dans le code toutes les adresses OSC utilisées, une variable globale stocke dans le code chaque adresse OSC reçue ainsi que sa dernière valeur et crée automatiquement une adresse web correspondante. Par exemple, la réception de "/ | ||
+ | Dans le cas où plusieurs données sont empaquetées dans le même message OSC, des adresses web seront automatiquement créées et numérotées (ex : "/ | ||
+ | Pour récupérer les données dans Gdevelop il suffit donc de créer un évènement //Send request to webpage// avec " | ||
+ | |||
+ | En cas de problème, il peut être utile d' | ||
+ | |||
+ | ===== code ===== | ||
+ | <code python> | ||
+ | # | ||
+ | # -*- coding: utf-8 -*- | ||
+ | |||
+ | from flask import Flask | ||
+ | from flask_cors import CORS # Cross Origin Resource Sharing, needed by gdevelop | ||
+ | import liblo | ||
+ | |||
+ | OSClisteningPort = 9002 | ||
+ | |||
+ | app = Flask(__name__) | ||
+ | CORS(app) | ||
+ | database = {} | ||
+ | |||
+ | @app.route('/< | ||
+ | def variable(name): | ||
+ | global database | ||
+ | name = "/" | ||
+ | if name not in database : | ||
+ | print(name," | ||
+ | database.update({name: | ||
+ | try : return str(database[name]) | ||
+ | except Exception as e : return str(e) # data couldnt be stringified | ||
+ | | ||
+ | def OSCunknownAddress(add, | ||
+ | global database | ||
+ | if len(data) == 1 : | ||
+ | database.update({add : data}) | ||
+ | if add not in database : print (" | ||
+ | else : | ||
+ | for i in range(len(data)) : | ||
+ | address = add + str(i+1) | ||
+ | if address not in database : print (" | ||
+ | database.update({address : data[i]}) | ||
+ | |||
+ | if __name__ == ' | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | ===== exemple ===== | ||
+ | L' | ||
+ | Le paramètre orientation du téléphone envoie trois données, respectivement l' | ||
+ | |||
+ | < |