2025-08-13 18:05:26 +02:00

42 lines
1.5 KiB
Python

from sqlalchemy import Column, String, Float, DateTime, Integer, ForeignKey, JSON, Boolean
from sqlalchemy.orm import relationship
from sqlalchemy.sql import func
from app.db.session import Base
class Telemetry(Base):
__tablename__ = "telemetry"
id = Column(Integer, primary_key=True, index=True)
device_id = Column(String, ForeignKey("devices.id", ondelete="CASCADE"), nullable=False)
# GPS data
latitude = Column(Float, nullable=True)
longitude = Column(Float, nullable=True)
altitude = Column(Float, nullable=True)
speed = Column(Float, nullable=True)
heading = Column(Float, nullable=True)
satellites = Column(Integer, nullable=True)
gps_fixed = Column(Boolean, default=False) # GPS fix status
# Device status
battery_level = Column(Float, nullable=True) # Battery percentage (0-100)
battery_voltage = Column(Float, nullable=True) # Actual battery voltage
signal_strength = Column(Integer, nullable=True) # RSSI value
temperature = Column(Float, nullable=True)
humidity = Column(Float, nullable=True) # Humidity percentage
# Power monitoring
solar_voltage = Column(Float, nullable=True) # Solar panel voltage
# Additional data
extra_data = Column(JSON, nullable=True)
# Timestamps
timestamp = Column(DateTime(timezone=True), server_default=func.now()) # Server timestamp
device_timestamp = Column(DateTime(timezone=True), nullable=True) # Device timestamp
# Relationship
device = relationship("Device", back_populates="telemetry")