rmkraus/cyberq-cli

★ 0Forks 0PythonGitHub ↗Compare

README

cyberq-cli

CLI client for the CyberQ Wifi Temperature Controller — a WiFi-connected BBQ/smoker temperature controller with PID control.

Features

  • Read live temperatures — all 4 probes (1 cook + 3 food)
  • Set temperature setpoints — cook probe, food probes, and hold temperature
  • Configure system settings — LCD backlight, contrast, alarm/key beeper
  • Email alert management — SMTP config, test emails, alert intervals
  • WiFi scanning — discover nearby networks with signal strength
  • WiFi configuration — set SSID, encryption, static IP, DHCP
  • PID control tuning — hold temp, ramp targets, cycle time, proportional band
  • Timer — set countdown timer in seconds
  • Probe naming — name your cook and food probes
  • Device reboot — safely reboot the controller
  • JSON output — pipe and process data programmatically

Installation

pip install cyberq-cli

Or install from source:

git clone https://github.com/rmkraus/cyberq-cli.git
cd cyberq-cli
pip install -e .

No external dependencies — pure Python stdlib only (argparse, urllib, xml.etree).

Quick Start

# Check current status
cyberq status --host 192.168.4.238

# Set cook probe to 225°F
cyberq cook-temp --host 192.168.4.238 --temp 225

# Set food probe 1 to 165°F
cyberq food-temp --host 192.168.4.238 --probe 1 --temp 165

# Scan for WiFi networks
cyberq scan-wifi --host 192.168.4.238

# Output as JSON for scripting
cyberq status --host 192.168.4.238 --json

Set CYBERQ_HOST environment variable to skip --host on every command:

export CYBERQ_HOST=192.168.4.238
cyberq status

Command Reference

Command Description
status Display full device status (temps, probes, system)
email-status Display email configuration and alert stats
cook-temp Set cook probe temperature setpoint (°F)
food-temp Set food probe temperature setpoint (°F)
hold-temp Set hold temperature (°F)
system-settings LCD backlight, contrast, beeper settings
email-settings Configure SMTP, recipients, alert intervals
reboot Reboot the device
scan-wifi Scan for available WiFi networks
wifi-settings Configure WiFi (SSID, encryption, static IP)
control-settings PID tuning: hold, ramp, cycle time, band
probe-name Name a cook or food probe
timer Set countdown timer (seconds)

Common Flags

Flag Description
--host, -h Device IP or hostname (default: CYBERQ_HOST env or 192.168.4.238)
--json, -j Output raw JSON instead of formatted text

Status Codes

Code Description
0 OK
1 HIGH
2 LOW
3 DONE
4 ERROR
5 HOLD
6 ALARM
7 SHUTDOWN

Temperature Notes

  • Temperatures from the device come in tenths of °F (e.g., 2250 = 225.0°F)
  • CLI accepts standard °F values (float/int) and converts internally
  • C↔F conversion: °F = °C × 9/5 + 32

Examples

# Set a probe name
cyberq probe-name --type cook --name "Pit Boss" --host 192.168.4.238

# Set a 4-hour timer
cyberq timer --seconds 14400 --host 192.168.4.238

# Configure email alerts
cyberq email-settings \
    --host 192.168.4.238 \
    --smtp-host smtp.gmail.com \
    --smtp-port 587 \
    --smtp-user [email protected] \
    --smtp-pwd "secret" \
    --smtp-to [email protected] \
    --smtp-subject "CyberQ Alert" \
    --smtp-interval 15

# Scan WiFi and output JSON
cyberq scan-wifi --host 192.168.4.238 --json | jq '.networks[]'

# Set PID parameters
cyberq control-settings \
    --host 192.168.4.238 \
    --hold-temp 200 \
    --ramp-target 2 \
    --cycle-time 10 \
    --prop-band 15.0

Testing

pytest tests/ -v

Development

pip install -e ".[dev]"
pytest tests/ -v

License

MIT © Ryan Kraus

Contributors

rmkraus

Issues