Realtime met WebSocket

Websockets

INTRODUCTIE

WebSocket is een netwerkprotocol dat full-duplex communicatie biedt over een enkele TCP-verbinding. Het WebSocketprotocol is gestandaardiseerd door de Internet Engineering Task Force in 2011 als RFC 6455 en de WebSocketAPI gemaakt in Web IDL is gestandaardiseerd door het World Wide Web Consortium.

Websocket?

  • Communicatieprotocol om data te zenden / ontvangen
  • Websockets bieden een krachtig mechanisme voor bidirectionele communicatie tussen een client (zoals een webbrowser) en een server.
  • anders dan klassiek HTTP-protocol
    • HTTP: de client stuurt steeds nieuwe verzoeken om updates te ontvangen,
    • Websocket maakt een permanente, duplex-communicatiekanaal mogelijk.

 

HTTP


 

      roger that... lekker.

over

ik heb koekjes.... over

wie is Rogér?

Websockets

 

ik ga maandagmiddag

iot spijbelen

Goed idee Chantal,

ik ga GTA spelen

tssss... sloebers...

ik ben flink

en ga wel

Voordelen

  • Efficiëntie: Vermindert overhead van het continu opzetten van nieuwe verbindingen.
  • Real-Time: Updates worden onmiddellijk en efficiënt overgebracht tussen client en server.
  • Schaalbaarheid: Geschikt voor toepassingen die een grote hoeveelheid gelijktijdige verbindingen vereisen, zoals IoT-toepassingen.
  • Betrouwbaarheid: Ingebouwde foutafhandeling en herstelmechanismen zorgen voor robuuste communicatie.

Werking

  • Handshake: De client initieert een HTTP-verzoek naar de server, waarbij de upgrade naar een websocket-verbinding wordt aangevraagd.
     
  • Handshake Acceptatie: De server accepteert de upgrade en bevestigt de websocket-verbinding.
  •  

 

 

 

 

 


  • Bidirectionele Communicatie: Eenmaal gevestigd, kunnen zowel de client als de server berichten in realtime naar elkaar verzenden, zonder de noodzaak om nieuwe verbindingen op te zetten.

Toepassingen

  • Gebruik bij real-time applicaties zoals
    • chatsystemen
    • notificaties
    • online games
    • financial trading
    • data-visualisatie
    • live maps
    • iot-toepassingen
    • domotica
    • en ga zo maar door zo

Toepassing labo

  • Sensorgegevens uitlezen op Raspberry Pi met SenseHat

Websockets

Sense HAT

een samenstelling

Sense HAT

The Sense HAT is an add-on board that gives your Raspberry Pi an array of sensing capabilities. The on-board sensors allow you to monitor pressure, humidity, temperature, colour, orientation, and movement. The bright 8×8 RGB LED matrix allows you to visualise data from the sensors, and the five-button joystick lets users interact with your projects.

Wat zit er op?

  • 8x8 matrix
  • Gyroscope.
  • Accelerometer.
  • Magnetometer.
  • Temperature.
  • Barometric pressure.
  • Humidity.
  • Colour and brightness.

Ok, let's go

Plug and play 🛝

  • Steek de SenseHAT in de Raspberry PI
  • Maak een nieuw project met een virtual environment

     
  • Installeer de nodige dependencies
     
sudo apt-get install sense-hat
# or
pip install sense-hat
python3 -m venv venv --system-site-packages
source venv/bin/activate

Folderstructuur

  • Maak volgende folderstructuur

💡__init__.py ?

wat is dat?

zie volgende slide

__init__.py

In elke map waarin je Python-modules wil plaatsen, moet een leeg bestand genaamd __init__.py aanwezig is.

Dit bestand geeft aan dat de map een Python-pakket is. Als je dit bestand niet hebt, zal Python de map niet als een module herkennen.

Je moet dit bestand niet vullen met inhoud, alleen het bestaan ervan is voldoende.

Flash... aaaaah

Test met deze code

from sense_hat import SenseHat
sense = SenseHat()
sense.set_imu_config(False, True, False)
sense.show_message("Flash.... aaaaah!", text_colour=[255, 0, 0])

Probeer de temperatuur uit te lezen,
door de docs zelf te lezen 👀
https://sense-hat.readthedocs.io/en/latest/api/

Websockets

Flask

Flask is a micro web framework written in Python. It is classified as a microframework because it does not require particular tools or libraries.

 

It has no database abstraction layer, form validation, or any other components where pre-existing third-party libraries provide common functions.

 

However, Flask supports extensions that can add application features as if they were implemented in Flask itself.

Flask

  • Installeer Flask in je project
pip install Flask

Flask

  • Een eerste scriptje
from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello_world():
    return "<p>Hello, World!</p>"

Websockets

WebSocket

Server: Flask-socketio

pip install flask-socketio
  • The socketio.run() function encapsulates the start up of the web server and replaces the app.run() standard Flask development server start up.

Server: Flask-socketio

  • The socketio.run() function encapsulates the start up of the web server and replaces the app.run() standard Flask development server start up.
from flask import Flask, render_template
from flask_socketio import SocketIO

app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app)

if __name__ == '__main__':
    socketio.run(app)

Client

  • Kan messages zenden en ontvangen met
    • .on('some-event')
    • en
    • .emit('another-event')
var socket = io('http://localhost:6060');
socket.on('connect', function() {
  socket.emit('my event', {data: 'I\'m connected!'});
});
// listen to temperature_change
socket.on('temperature_change', function(data) {
  const temp = data.temperature;
  document.getElementById('temperature').innerText = temp;
});

IOT - Websockets & Sensehat

By Frederick Roegiers

IOT - Websockets & Sensehat

  • 75