# Temp Logger

Real-time temperature logger and instrument control suite for NEnG TMP117 PID instruments.

## Tools included

| Command | Package | Description |
| --- | --- | --- |
| `temp-logger` | **this package** | CLI real-time logger with live matplotlib plots and CSV export |
| `temp-logger-gui` | **this package** | Tkinter GUI logger with embedded plots, dark theme, WiFi/USB support |
| `pid-controller-gui` | **this package** | PID temperature controller GUI — ramp control, tuning, TEC, live graphs |
| `scpi-client` | `neng-scpi-tools` | Interactive SCPI terminal with tab-completion, history, pretty-printed output |
| `wifi-config-gui` | `neng-wifi-tools` | WiFi configuration GUI — network management, status monitoring, SCPI console |
| `neng-device-scan` | `neng-wifi-tools` | Fast network scanner to discover NEnG devices on port 5025 |
| `update-firmware` | `neng-wifi-tools` | OTA firmware updater — single/batch file upload, git-aware deployment |
| `ota-manager-gui` | `neng-wifi-tools` | OTA Firmware Update Manager GUI with multi-device support |

All connection-based tools support **USB serial** and **WiFi/TCP** connections.
WiFi lets you log data and control the instrument simultaneously from two terminals.
See [WIFI_SUPPORT.md](https://gitlab.flavio.be/flavio/temp-logger/-/blob/main/WIFI_SUPPORT.md) for details.

> **Note:** Tools marked `neng-scpi-tools` and `neng-wifi-tools` are installed
> automatically as dependencies. See the
> [neng-scpi-tools README](https://gitlab.flavio.be/flavio/neng-scpi-tools/-/blob/main/README.md) and
> [neng-wifi-tools README](https://gitlab.flavio.be/flavio/neng-wifi-tools/-/blob/main/README.md) for details.

This directory is a **standalone, pip-installable** Python package.

## Install

### Recommended: Install from PyPI

```bash
pip install neng-temp-logger
```

### Development install from source (editable mode)

Clone the repository and install in editable mode:

```bash
git clone git@gitlab.flavio.be:flavio/temp-logger.git
cd temp-logger
python3 -m venv .venv
source .venv/bin/activate        # macOS / Linux
python -m pip install -U pip
python -m pip install -e .
```

### Tkinter on macOS

The GUI tools require Tkinter. On macOS it may be missing depending on how
Python was installed. See [TKINTER_INSTALLATION.md](https://gitlab.flavio.be/flavio/temp-logger/-/blob/main/TKINTER_INSTALLATION.md).

```bash
brew install tcl-tk
brew install python-tk@3.xx      # replace xx with your Python minor version
```

## Run

### Temperature logger (GUI)

```bash
temp-logger-gui
```

### Temperature logger (CLI)

```bash
temp-logger                      # auto-detect port, live plot
temp-logger --no-plot            # headless (data-only)
temp-logger --output exp1.csv    # custom output file
temp-logger --wifi 192.168.1.100 # force WiFi connection
```

### PID controller GUI

```bash
pid-controller-gui               # auto-connects USB or WiFi
```

### Other tools (provided by companion packages)

The following tools are installed automatically as dependencies:

```bash
# WiFi configuration GUI (neng-wifi-tools)
wifi-config-gui                  # manage WiFi networks and settings

# Interactive SCPI terminal (neng-scpi-tools)
scpi-client                     # USB auto-detect, interactive
scpi-client -w                  # WiFi auto-detect (scans all networks)
scpi-client -w 192.168.1.100    # WiFi with explicit IP

# Network device scanner (neng-wifi-tools)
neng-device-scan                # scan ALL network interfaces

# OTA firmware update (neng-wifi-tools)
update-firmware --git-deploy --yes --reboot   # auto-detect & deploy
update-firmware 192.168.1.100 --git-deploy    # explicit IP
```

See the [neng-wifi-tools README](https://gitlab.flavio.be/flavio/neng-wifi-tools/-/blob/main/README.md) and
[neng-scpi-tools README](https://gitlab.flavio.be/flavio/neng-scpi-tools/-/blob/main/README.md) for full documentation.

## Documentation index

| File | Description |
| --- | --- |
| [GUI_QUICKSTART.md](https://gitlab.flavio.be/flavio/temp-logger/-/blob/main/GUI_QUICKSTART.md) | 60-second getting started for `temp-logger-gui` |
| [GUI_README.md](https://gitlab.flavio.be/flavio/temp-logger/-/blob/main/GUI_README.md) | Detailed `temp-logger-gui` reference |
| [REALTIME_LOGGER_README.md](https://gitlab.flavio.be/flavio/temp-logger/-/blob/main/REALTIME_LOGGER_README.md) | CLI `temp-logger` documentation |
| [WIFI_SUPPORT.md](https://gitlab.flavio.be/flavio/temp-logger/-/blob/main/WIFI_SUPPORT.md) | WiFi/TCP connection guide |
| [WIFI_QUICKSTART.md](https://gitlab.flavio.be/flavio/temp-logger/-/blob/main/WIFI_QUICKSTART.md) | Quick WiFi setup |
| [TKINTER_INSTALLATION.md](https://gitlab.flavio.be/flavio/temp-logger/-/blob/main/TKINTER_INSTALLATION.md) | Tkinter setup for macOS |
| [RELEASE_CHECKLIST.md](https://gitlab.flavio.be/flavio/temp-logger/-/blob/main/RELEASE_CHECKLIST.md) | Release process and checklist |

## Notes

- USB serial communicates via CDC at 115 200 baud.
- WiFi/TCP uses port 5025 (standard SCPI-over-TCP).
- Only **one** application can use USB serial at a time; WiFi allows a second simultaneous connection.

(c) 2024-26 Prof. Flavio ABREU ARAUJO. All rights reserved.
