Source code for pycsamt.iot

"""IoT helpers for pyCSAMT field telemetry and edge workflows.

This subpackage supports IoT-enabled AMT/CSAMT field acquisition:

* device/station configuration (:mod:`~pycsamt.iot.core`,
  :mod:`~pycsamt.iot.station`),
* a stateful acquisition hub (:class:`~pycsamt.iot.session.FieldSession`),
* canonical telemetry schemas (:mod:`~pycsamt.iot.schemas`),
* generic and AMT-specific edge QC (:mod:`~pycsamt.iot.edge`,
  :mod:`~pycsamt.iot.edge_amt`),
* stream monitoring, power budgeting, and clock-sync audit
  (:mod:`~pycsamt.iot.monitoring`, :mod:`~pycsamt.iot.power`,
  :mod:`~pycsamt.iot.sync`),
* real telemetry transports (:mod:`~pycsamt.iot.protocols`),
* acquisition provenance (:mod:`~pycsamt.iot.provenance`),
* a field-network simulator (:mod:`~pycsamt.iot.sim`), and
* transport security configuration (:mod:`~pycsamt.iot.security`).
"""

from __future__ import annotations

from .bridge import (
    build_edifile,
    deployment_from_edis,
    edi_survey_table,
    emtools_qc,
    field_session_from_edis,
    field_session_to_edifiles,
    impedance_to_z,
    read_edi_survey,
    z_to_edi,
    z_to_site,
)
from .core import (
    DeploymentConfig,
    DeviceConfig,
    DeviceRole,
    IoTCapability,
    PacketKind,
    TelemetryPacket,
    deployment_report,
)
from .edge import (
    EdgeChannelSummary,
    EdgeDecision,
    EdgeProcessingConfig,
    EdgeProcessingResult,
    EdgeProcessor,
    edge_summary_table,
)
from .edge_amt import (
    FrequencyCoverage,
    HarmonicPeak,
    ImpedanceStability,
    PowerlineHarmonics,
    StaticShift,
    amt_edge_report,
    amt_edge_table,
    assess_impedance_stability,
    check_channel_saturation,
    check_contact_resistance,
    compute_live_spectra,
    detect_powerline_harmonics,
    detect_sensor_dropout,
    estimate_channel_snr,
    estimate_frequency_coverage,
    estimate_static_shift,
)
from .edge_csamt import (
    FieldZone,
    FieldZoneCoverage,
    SourceLine,
    SourceStability,
    TransmitterComb,
    assess_source_stability,
    classify_field_zones,
    csamt_edge_report,
    csamt_edge_table,
    detect_transmitter_frequencies,
    skin_depth_m,
)
from .edge_csem import (
    OffsetResponse,
    csem_edge_report,
    csem_edge_table,
    field_vs_offset,
)
from .methods import (
    METHOD_PROFILES,
    MethodProfile,
    method_profile,
    target_bands_for_method,
)
from .monitoring import (
    EMMethod,
    MonitoringConfig,
    MonitoringLevel,
    MonitoringStatus,
    TelemetryMonitor,
    assess_telemetry,
    monitoring_status_table,
    packet_table,
    telemetry_summary,
)
from .plot import (
    plot_edge_qc_summary,
    plot_field_dashboard,
    plot_power_budget,
    plot_sync_quality,
)
from .power import (
    DevicePowerProfile,
    EnergyConfig,
    EnergyEstimate,
    PowerState,
    estimate_deployment_energy,
    estimate_energy_budget,
    power_summary_table,
)
from .protocols import (
    BaseTelemetryClient,
    FileTelemetryClient,
    HTTPTelemetryClient,
    IoTProtocol,
    MQTTTelemetryClient,
    SerialTelemetryClient,
    StoreAndForwardClient,
    TelemetryAck,
    TelemetryClient,
    TelemetryError,
    WebSocketTelemetryClient,
    build_telemetry_client,
)
from .provenance import (
    AcquisitionManifest,
    ProvenanceRecord,
    build_acquisition_manifest,
    export_acquisition_manifest,
    export_reproducibility_bundle,
    export_station_audit,
    hash_bytes,
    hash_chain,
    hash_mapping,
    hash_raw_file,
    log_qc_decision,
    sign_mapping,
    verify_hash_chain,
    verify_manifest,
    verify_signature,
)
from .schemas import (
    PAYLOAD_SCHEMAS,
    AcquisitionPayload,
    EventPayload,
    EventSeverity,
    HealthPayload,
    PowerPayload,
    QCPayload,
    SourcePayload,
    SyncPayload,
    TelemetryPayload,
    parse_payload,
    schema_for,
    validate_payload,
)
from .security import (
    AuthScheme,
    Credential,
    SecurityConfig,
    TLSConfig,
    redact_secret,
)
from .session import FieldSession
from .sim import (
    simulate_amt_channel,
    simulate_amt_station,
    simulate_battery_decay,
    simulate_gps_drift,
    simulate_iot_network,
    simulate_packet_loss,
    simulate_powerline_noise,
)
from .station import (
    StationConfig,
    station_table,
)
from .sync import (
    ClockSynchronizer,
    SyncConfig,
    SyncQuality,
    SyncStatus,
    assess_sync_quality,
    batch_assess_sync,
    detect_gps_dropout,
    estimate_clock_drift_ppm,
    estimate_clock_jitter_ms,
    estimate_clock_offset_ms,
    sync_status_table,
)

__all__ = [
    # bridge (IoT <-> pyCSAMT data model)
    "build_edifile",
    "deployment_from_edis",
    "edi_survey_table",
    "emtools_qc",
    "field_session_from_edis",
    "field_session_to_edifiles",
    "impedance_to_z",
    "read_edi_survey",
    "z_to_edi",
    "z_to_site",
    # core
    "DeploymentConfig",
    "DeviceConfig",
    "DeviceRole",
    "IoTCapability",
    "PacketKind",
    "TelemetryPacket",
    "deployment_report",
    # station
    "StationConfig",
    "station_table",
    # session
    "FieldSession",
    # schemas
    "PAYLOAD_SCHEMAS",
    "AcquisitionPayload",
    "EventPayload",
    "EventSeverity",
    "HealthPayload",
    "PowerPayload",
    "QCPayload",
    "SourcePayload",
    "SyncPayload",
    "TelemetryPayload",
    "parse_payload",
    "schema_for",
    "validate_payload",
    # edge
    "EdgeChannelSummary",
    "EdgeDecision",
    "EdgeProcessingConfig",
    "EdgeProcessingResult",
    "EdgeProcessor",
    "edge_summary_table",
    # edge_amt
    "FrequencyCoverage",
    "HarmonicPeak",
    "ImpedanceStability",
    "PowerlineHarmonics",
    "StaticShift",
    "amt_edge_report",
    "amt_edge_table",
    "assess_impedance_stability",
    "check_channel_saturation",
    "check_contact_resistance",
    "compute_live_spectra",
    "detect_powerline_harmonics",
    "detect_sensor_dropout",
    "estimate_channel_snr",
    "estimate_frequency_coverage",
    "estimate_static_shift",
    # edge_csamt (controlled-source)
    "FieldZone",
    "FieldZoneCoverage",
    "SourceLine",
    "SourceStability",
    "TransmitterComb",
    "assess_source_stability",
    "classify_field_zones",
    "csamt_edge_report",
    "csamt_edge_table",
    "detect_transmitter_frequencies",
    "skin_depth_m",
    # edge_csem (controlled-source EM, offset domain)
    "OffsetResponse",
    "csem_edge_report",
    "csem_edge_table",
    "field_vs_offset",
    # methods (method-aware profiles)
    "METHOD_PROFILES",
    "MethodProfile",
    "method_profile",
    "target_bands_for_method",
    # monitoring
    "EMMethod",
    "MonitoringConfig",
    "MonitoringLevel",
    "MonitoringStatus",
    "TelemetryMonitor",
    "assess_telemetry",
    "monitoring_status_table",
    "packet_table",
    "telemetry_summary",
    # power
    "DevicePowerProfile",
    "EnergyConfig",
    "EnergyEstimate",
    "PowerState",
    "estimate_deployment_energy",
    "estimate_energy_budget",
    "power_summary_table",
    "plot_edge_qc_summary",
    "plot_field_dashboard",
    "plot_power_budget",
    "plot_sync_quality",
    # protocols
    "BaseTelemetryClient",
    "FileTelemetryClient",
    "HTTPTelemetryClient",
    "IoTProtocol",
    "MQTTTelemetryClient",
    "SerialTelemetryClient",
    "StoreAndForwardClient",
    "TelemetryAck",
    "TelemetryClient",
    "TelemetryError",
    "WebSocketTelemetryClient",
    "build_telemetry_client",
    # sync
    "ClockSynchronizer",
    "SyncConfig",
    "SyncQuality",
    "SyncStatus",
    "assess_sync_quality",
    "batch_assess_sync",
    "detect_gps_dropout",
    "estimate_clock_drift_ppm",
    "estimate_clock_jitter_ms",
    "estimate_clock_offset_ms",
    "sync_status_table",
    # provenance
    "AcquisitionManifest",
    "ProvenanceRecord",
    "build_acquisition_manifest",
    "export_acquisition_manifest",
    "export_reproducibility_bundle",
    "export_station_audit",
    "hash_bytes",
    "hash_chain",
    "hash_mapping",
    "hash_raw_file",
    "log_qc_decision",
    "sign_mapping",
    "verify_hash_chain",
    "verify_manifest",
    "verify_signature",
    # security
    "AuthScheme",
    "Credential",
    "SecurityConfig",
    "TLSConfig",
    "redact_secret",
    # sim
    "simulate_amt_channel",
    "simulate_amt_station",
    "simulate_battery_decay",
    "simulate_gps_drift",
    "simulate_iot_network",
    "simulate_packet_loss",
    "simulate_powerline_noise",
]