===== Système d'ouverture du garage ===== Le système d'ouverture du garage écoute sur le port 4280 et attend une requête sur une URL secrète de la part de framateam. Suite à cette requête il ouvre le périphérique série et lui envoie une commande pour procéder à l'actionnement du moteur. Pré-requis: apt install python3-flask python3-serial adduser lov dialout Code du serveur dans /home/lov/garage: from flask import Flask app = Flask(__name__) import serial ARDUINO = '/dev/serial/by-id/usb-Arduino__www.arduino.cc__Arduino_Uno_64938323131351213190-if00' @app.route('/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', methods=['POST']) def open(): try: with serial.Serial(port=ARDUINO, baudrate=9600) as f: banner = f.readline().decode('ascii') if 'LOV' not in banner: return "didn't find the garage opener banner" f.write(b'O') f.flush() resp = f.readline().decode('ascii') return "\n".join((banner, resp)) except serial.serialutil.SerialException as e: return str(e) if __name__ == '__main__': app.run(host='0.0.0.0', port=4280) #include Servo servo; void setup() { pinMode(10, OUTPUT); digitalWrite(10, LOW); pinMode(11, OUTPUT); digitalWrite(11, LOW); Serial.begin(9600); Serial.println("LOV garage opener v3"); /*servo.attach(9); servo.write(0); delay(400); servo.detach();*/ pinMode(9, INPUT); digitalWrite(9, HIGH); } void loop() { int c = 0; c = Serial.read(); if (c == 'O') { //Code for activating the servo of that simulates a click on the real life remote of the garagedoor Serial.println("opening garage..."); /*servo.attach(9); servo.write(30); delay(1000); servo.write(0); delay(400); servo.detach();*/ pinMode(9, OUTPUT); digitalWrite(9, LOW); delay(800); pinMode(9, INPUT); digitalWrite(9, HIGH); Serial.println("done"); } else if (c == 'E') { //Serial data for shorting the remote controller of backdoor Serial.println("opening back door..."); digitalWrite(10, HIGH); delay(2500); digitalWrite(10, LOW); Serial.println("done"); } else if (c == 'L') { //Serial data for shorting the remote controller of backdoor Serial.println("closing back door..."); digitalWrite(11, HIGH); delay(2500); digitalWrite(11, LOW); Serial.println("done"); } } Pour lancer au boot du serveur dans rc.local: sudo -u lov -g lov /usr/bin/python3 server.py 2>&1 >/var/log/garage.log &