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")