Skip to main content

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

nome
string
required
Sensor name identifierExample: "Temperatura"
tipo
string
required
Type of sensor locationExample: "Acuario"
grupo
string
required
Sensor group classificationExample: "Grupo A"
temperatura
float
required
Temperature reading from the sensorExample: 25.5
unidade_medida
string
required
Unit of measurement for temperatureDefault: "graus"Example: "graus"

Response Fields

id
integer
Auto-generated unique identifier for the record
nome
string
Sensor name as provided in request
tipo
string
Sensor type as provided in request
grupo
string
Sensor group as provided in request
temperatura
float
Temperature value submitted
unidade_medida
string
Unit of measurement for the temperature
data_criacao
datetime
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

Build docs developers (and LLMs) love