Overview
The Temperature Aquarium endpoint allows you to submit temperature readings from aquarium monitoring sensors. This endpoint is used to track water temperature in aquarium environments.
Endpoint
POST /api/temperatura-aquario/
Model Structure
The TemperaturaAquario model extends the base Sensor model:
class TemperaturaAquario(Sensor):
temperatura = models.FloatField(max_length=200, default='00')
unidade_medida = models.CharField(max_length=50, default='graus')
Source: models.py:25-29
ViewSet Implementation
class TemperaturaAquarioViewset(viewsets.ViewSet):
permission_classes = (IsAuthenticated,)
def create(self, request):
serializer = TemperaturaAquarioSerializer(data=request.data)
serializer.is_valid(raise_exception=True)
the_response = TemperaturaAquarioSerializer(serializer.save())
return Response(the_response.data, status=status.HTTP_201_CREATED)
Source: views.py:97-103
Authentication
This endpoint requires authentication. Include your API token in the Authorization header.
Authorization: Token 2d75140c068049278f9cb7d39b1a20f05aecdc56
See Authentication for details.
Request Parameters
Sensor name identifierExample: "Temperatura"
Type of sensor locationExample: "Acuario"
Sensor group classificationExample: "Grupo A"
Temperature reading from the sensorExample: 25.5
Unit of measurement for temperatureDefault: "graus"Example: "graus"
Response Fields
Auto-generated unique identifier for the record
Sensor name as provided in request
Sensor type as provided in request
Sensor group as provided in request
Temperature value submitted
Unit of measurement for the temperature
Timestamp when the record was created (auto-generated)
Example Request
curl -X POST http://127.0.0.1:8000/api/temperatura-aquario/ \
-H "Authorization: Token 2d75140c068049278f9cb7d39b1a20f05aecdc56" \
-H "Content-Type: application/json" \
-d '{
"nome": "Temperatura",
"tipo": "Acuario",
"grupo": "Grupo A",
"temperatura": "25.5",
"unidade_medida": "graus"
}'
Example Response
Status Code: 201 Created
{
"id": 42,
"nome": "Temperatura",
"tipo": "Acuario",
"grupo": "Grupo A",
"temperatura": 25.5,
"unidade_medida": "graus",
"data_criacao": "2026-03-11T10:30:45.123456Z"
}
Error Responses
Missing Authentication Token
Status Code: 401 Unauthorized
{
"detail": "Authentication credentials were not provided."
}
Invalid Token
Status Code: 401 Unauthorized
{
"detail": "Invalid token."
}
Missing Required Fields
Status Code: 400 Bad Request
{
"temperatura": [
"This field is required."
],
"nome": [
"This field is required."
]
}
Invalid Data Type
Status Code: 400 Bad Request
{
"temperatura": [
"A valid number is required."
]
}
MQTT Integration Example
Example from the Raspberry Pi MQTT client:
# From mqtt-django.py:76-88
if message.topic == topic_temp_agua:
nome = "Temperatura"
tipo = "Acuario"
grupo = "Grupo A"
temperatura = str(message.payload.decode("utf-8"))
unidade_medida = "graus"
temperatura_aquario = {
'nome': nome,
'tipo': tipo,
'grupo': grupo,
'temperatura': temperatura,
'unidade_medida': unidade_medida
}
headers = {'Authorization': 'Token 2d75140c068049278f9cb7d39b1a20f05aecdc56'}
url_temperatura_aquario = "http://127.0.0.1:8000/api/temperatura-aquario/"
send_temperatura_aquario = requests.post(
url_temperatura_aquario,
headers=headers,
json=temperatura_aquario
)
Serializer Details
The endpoint uses TemperaturaAquarioSerializer with depth=1 to include related object details:
class TemperaturaAquarioSerializer(serializers.ModelSerializer):
class Meta:
model = TemperaturaAquario
fields = '__all__'
depth = 1
def create(self, validated_data):
temperatura = TemperaturaAquario.objects.create(**validated_data)
temperatura.save()
return temperatura
Source: serializers.py:5-14
Use Cases
- Monitor aquarium water temperature in real-time
- Track temperature fluctuations over time
- Trigger alerts when temperature exceeds safe ranges
- Historical temperature data analysis
- IoT device integration via MQTT