[PYTHON] L Chika (compatible HTTPS) avec Arduino lors de l'accès au serveur Web

Plus tôt, j'ai écrit sur le mécanisme de démarrage d'un serveur avec Python et d'exploitation Arduino à partir d'un navigateur.

http://qiita.com/drafts/9abfa1a4b6bf66a5f8fa/edit

À cette époque, j'utilisais un framework appelé Bottle, mais comme les interfaces qui gèrent les images avec JavaScript telles que getUserMedia ne peuvent être utilisées qu'avec HTTPS, il est difficile de rendre Bottle compatible avec HTTPS, donc je l'ai changé pour un framework appelé CherryPy. C'était.

Tout d'abord, comme travail préliminaire, faites un certificat oléore en vous référant à ce qui suit. http://docs.cherrypy.org/en/latest/deploy.html#ssl

$ openssl genrsa -out privkey.pem 2048
$ openssl req -new -x509 -days 365 -key privkey.pem -out cert.pem

Voici un exemple pour afficher Hello world en spécifiant ce pem. Avant de vous connecter à Arduino, veuillez vérifier le fonctionnement ici.

import cherrypy
cherrypy.server.ssl_module = 'builtin'
cherrypy.server.ssl_certificate = "cert.pem"
cherrypy.server.ssl_private_key = "privkey.pem"

class HelloWorld(object):
    @cherrypy.expose
    def index(self):
        return "Hello world!"

if __name__ == '__main__':
   cherrypy.quickstart(HelloWorld())

Le navigateur se met en colère, mais ne vous inquiétez pas. ~~ Je le porte. ~~ Fonctionnement normal.

Voici l'ajout de la transmission série par le support pyserial et CORS (paramètre permettant l'accès à travers les domaines dans l'en-tête HTTP).

import cherrypy
cherrypy.server.ssl_module = 'builtin'
cherrypy.server.ssl_certificate = "cert.pem"
cherrypy.server.ssl_private_key = "privkey.pem"

import serial
ser = serial.Serial('/dev/tty.usbmodem1411',9600)

def multi_headers():
    cherrypy.response.header_list.extend(
        cherrypy.response.headers.encode_header_items(
            cherrypy.response.multiheaders))

cherrypy.tools.multiheaders = cherrypy.Tool('on_end_resource', multi_headers)

class CherryArduino(object):
    @cherrypy.expose
    @cherrypy.tools.multiheaders()
    def index(self,value='Hello'):
        cherrypy.response.multiheaders = [('Access-Control-Allow-Origin', '*')]
        ser.write(str(value))
        return value

if __name__ == '__main__':
    cherrypy.quickstart(CherryArduino())

Si vous faites cela et accédez à https: //127.0.0.1: 8080 /? Value = 1, la valeur" 1 "sera envoyée à Arduino.

Veuillez vous référer ici pour le script du côté Arduino.

http://qiita.com/usopyon/items/aada42d44c6f2cd0a3ff

Je l'ai également mis sur Github, alors veuillez également cliquer ici.

https://github.com/usopyon/cherrypy_serial

Recommended Posts

L Chika (compatible HTTPS) avec Arduino lors de l'accès au serveur Web
Lorsque vous accédez au serveur Web, L Chika avec Arduino
[proxy https avec squid] Éliminez l'erreur lors de l'accès à un serveur Web qui n'a pas de certificat CA intermédiaire enchaîné.
Accédez au serveur SQL de l'hôte avec python27 / pyodbc sur le conteneur
Recharger le serveur configuré avec gunicorn lors du changement de code
Remote L Chika avec pigpio
L'accès https via un proxy dans le scraping Web Python était facile avec les demandes
Lorsque vous souhaitez ajuster l'intervalle de l'échelle de l'axe avec APLpy