Serving sensor data as JSON API in Raspberry Pi - Mini Project: Build & Apply
sensor_data with these exact entries: 'temperature': 23.5 and 'unit': 'Celsius'.Use curly braces to create a dictionary with keys 'temperature' and 'unit'.
port and set it to 5000.Just assign the number 5000 to the variable named port.
app. Define a route for '/' that returns jsonify(sensor_data).Use @app.route('/') to create the route and return the sensor_data as JSON.
app.run(host='0.0.0.0', port=port). Before running, print f"Server running on port {port}".Use print(f"Server running on port {port}") and then app.run(host='0.0.0.0', port=port).
Practice
What is the main purpose of serving sensor data as a JSON API on a Raspberry Pi?
Solution
Step 1: Understand JSON API purpose
A JSON API provides data in a simple, standard format that other devices can read easily.Step 2: Relate to sensor data sharing
Serving sensor data as JSON means sharing sensor readings so other devices or apps can use them.Final Answer:
To allow other devices to easily access sensor information in a standard format -> Option AQuick Check:
JSON API shares sensor data easily [OK]
- Thinking JSON API stores data only locally
- Confusing JSON API with image or video output
- Assuming JSON API does heavy local processing
Which of the following is the correct way to import Flask in a Python script on Raspberry Pi?
?Solution
Step 1: Recall Flask import syntax
The Flask class is imported from the flask module using: from flask import FlaskStep 2: Check options for correct case and syntax
from flask import Flask matches correct syntax and case; others have wrong case or structure.Final Answer:
from flask import Flask -> Option DQuick Check:
Correct Flask import uses 'from flask import Flask' [OK]
- Using wrong capitalization like 'import Flask'
- Importing the whole module without accessing Flask class
- Mixing module and class names incorrectly
What will be the output of this Flask route when accessed?
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/sensor')
def sensor_data():
data = {'temperature': 22.5, 'humidity': 60}
return jsonify(data)
# Assume app is runningSolution
Step 1: Understand jsonify output
jsonify converts Python dict to JSON string with keys in quotes and proper JSON format.Step 2: Match output format
{"temperature": 22.5, "humidity": 60} shows correct JSON string with keys and values properly formatted.Final Answer:
{"temperature": 22.5, "humidity": 60} -> Option CQuick Check:
jsonify returns JSON string with quoted keys [OK]
- Forgetting quotes around keys in JSON output
- Confusing Python dict print with JSON string
- Assuming jsonify returns Python list
Identify the error in this Flask code snippet that serves sensor data as JSON:
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/data')
def data():
sensor = {'temp': 25}
return json.dumps(sensor)
app.run()Solution
Step 1: Check JSON response method
Flask expects jsonify to create proper response with correct headers, not json.dumps.Step 2: Identify error cause
Using json.dumps returns a string without correct content-type, causing client issues.Final Answer:
json.dumps is used instead of jsonify -> Option AQuick Check:
Use jsonify, not json.dumps, for Flask JSON responses [OK]
- Returning json.dumps output directly in Flask
- Not importing jsonify
- Assuming json.dumps sets response headers
You want to serve live temperature sensor data from a Raspberry Pi using Flask. Which approach correctly updates the JSON response with real sensor readings each time the API is called?
from flask import Flask, jsonify
app = Flask(__name__)
def read_temp_sensor():
# Returns current temperature reading
return 24.7
@app.route('/temp')
def temp():
# Fill in here
app.run()Solution
Step 1: Call sensor function inside route
We must call read_temp_sensor() to get current value each time the route is accessed.Step 2: Return JSON response with current value
Assign the value to a variable and pass it to jsonify to return proper JSON response.Final Answer:
temp = read_temp_sensor() return jsonify({'temperature': temp}) -> Option BQuick Check:
Call sensor function and jsonify result each request [OK]
- Returning function object instead of calling it
- Using fixed value instead of live sensor reading
- Returning dict without jsonify in Flask
Ready to prove it?
Pass the test and this pattern moves unknown
