You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Complete examples for using the standalone Python API in this directory
(stagg_ekg_api.py). Run scripts from inside examples/, or add this
directory to PYTHONPATH, so from stagg_ekg_api import StaggEKGClient
resolves.
Quick Start
fromstagg_ekg_apiimportStaggEKGClient# Initializekettle=StaggEKGClient(host="192.168.1.100")
# Get current statestate=kettle.get_state()
print(f"Current: {state.current_temp_c}°C, Target: {state.set_temp_c}°C")
Common Use Cases
1. Heat Water to Specific Temperature
fromstagg_ekg_apiimportStaggEKGClientkettle=StaggEKGClient(host="192.168.1.100")
# One-liner: Set temp and start heatingprint(kettle.heat_to_temperature(95))
# Output: "Increased temperature by 10.0°C to 95°C and started heating"# Or do it step-by-step:kettle.set_temperature(95) # Set targetkettle.start_heating() # Start heating
2. Monitor Until Water is Ready
importtimefromstagg_ekg_apiimportStaggEKGClientkettle=StaggEKGClient(host="192.168.1.100")
# Start heating to 85°Ckettle.heat_to_temperature(85)
# Wait until readyprint("Heating water...")
whilenotkettle.is_at_target(tolerance=2.0):
state=kettle.get_state()
print(f"Current: {state.current_temp_c:.1f}°C / Target: {state.set_temp_c}°C")
time.sleep(5)
print("Water is ready!")
kettle.buzzer_sos() # Alert!
3. Morning Coffee Routine
fromstagg_ekg_apiimportStaggEKGClientimporttimekettle=StaggEKGClient(host="192.168.1.100")
# Check water level (temperature-based heuristic)state=kettle.get_state()
ifstate.may_have_no_water:
print("⚠️ Warning: Kettle may be empty (temp < 30°C)")
print("Please add water before heating!")
exit(1)
# Heat water for coffeeprint("☕ Heating water for coffee (95°C)...")
kettle.heat_to_temperature(95)
# Monitor progresswhilenotkettle.is_at_target():
state=kettle.get_state()
progress= (state.current_temp_c/state.set_temp_c) *100print(f" {state.current_temp_c:.1f}°C ({progress:.0f}%)")
time.sleep(10)
print("✓ Coffee water ready!")
kettle.buzzer_sos()
4. Tea Temperature Presets
fromstagg_ekg_apiimportStaggEKGClientkettle=StaggEKGClient(host="192.168.1.100")
# Tea temperature guideTEMPS= {
"green": 75,
"white": 80,
"oolong": 85,
"black": 95,
"herbal": 100
}
# Heat for green teatea_type="green"temp=TEMPS[tea_type]
print(f"Heating water for {tea_type} tea ({temp}°C)...")
kettle.heat_to_temperature(temp)
5. Auto-Shutdown After Heating
fromstagg_ekg_apiimportStaggEKGClientimporttimekettle=StaggEKGClient(host="192.168.1.100")
# Heat waterkettle.heat_to_temperature(85)
# Wait until at targetwhilenotkettle.is_at_target():
time.sleep(5)
print("Target reached!")
# Keep warm for 5 minutesprint("Keeping warm for 5 minutes...")
time.sleep(300)
# Auto shutdownprint("Shutting down...")
kettle.stop_heating()
6. Check Status
fromstagg_ekg_apiimportStaggEKGClientkettle=StaggEKGClient(host="192.168.1.100")
state=kettle.get_state()
print(f"""Kettle Status: Mode: {state.mode} Current Temperature: {state.current_temp_c}°C Target Temperature: {state.set_temp_c}°C Heating: {'Yes'ifstate.heatingelse'No'} Warming: {'Yes'ifstate.warmingelse'No'} Display Unit: {'°C'ifstate.units==1else'°F'} Clock: {state.clock} Water OK: {'No - May be empty!'ifstate.may_have_no_waterelse'Yes'}""")
7. Change Temperature Units
fromstagg_ekg_apiimportStaggEKGClientkettle=StaggEKGClient(host="192.168.1.100")
# Switch to Fahrenheitkettle.set_units_fahrenheit()
print("Display now shows Fahrenheit")
# Switch to Celsiuskettle.set_units_celsius()
print("Display now shows Celsius")
8. Manual Temperature Adjustment
fromstagg_ekg_apiimportStaggEKGClientkettle=StaggEKGClient(host="192.168.1.100")
# Increase by 5°C (10 steps × 0.5°C)for_inrange(10):
kettle.rotate_dial_right()
# Decrease by 2.5°C (5 steps × 0.5°C)for_inrange(5):
kettle.rotate_dial_left()
# Check new targetstate=kettle.get_state()
print(f"Target is now: {state.set_temp_c}°C")
9. Direct Heating Element Control
fromstagg_ekg_apiimportStaggEKGClientimporttimekettle=StaggEKGClient(host="192.168.1.100")
# Turn heating element on directlykettle.heat_on()
print("Heating element ON")
# Heat for 30 secondstime.sleep(30)
# Turn offkettle.heat_off()
print("Heating element OFF")
10. Custom Automation Script
#!/usr/bin/env python3"""Smart Kettle SchedulerHeats water at specific times"""fromstagg_ekg_apiimportStaggEKGClientimportscheduleimporttimekettle=StaggEKGClient(host="192.168.1.100")
defmorning_coffee():
"""Heat water for morning coffee"""print("☕ Morning coffee time!")
state=kettle.get_state()
ifstate.may_have_no_water:
print("⚠️ Skipping: Kettle may be empty")
returnkettle.heat_to_temperature(95)
print("✓ Heating started")
defafternoon_tea():
"""Heat water for afternoon tea"""print("🍵 Afternoon tea time!")
kettle.heat_to_temperature(85)
print("✓ Heating started")
# Schedule tasksschedule.every().day.at("07:00").do(morning_coffee)
schedule.every().day.at("15:00").do(afternoon_tea)
print("Smart Kettle Scheduler running...")
print(" 7:00 AM - Coffee (95°C)")
print(" 3:00 PM - Tea (85°C)")
whileTrue:
schedule.run_pending()
time.sleep(60)
Advanced Features
Water Detection
fromstagg_ekg_apiimportStaggEKGClientkettle=StaggEKGClient(host="192.168.1.100")
state=kettle.get_state()
ifstate.may_have_no_water:
print("⚠️ LOW WATER WARNING")
print(f" Current temp: {state.current_temp_c}°C")
print(" Temperature below 30°C may indicate no water")
print(" Please check kettle before heating!")
else:
print("✓ Water detected, safe to heat")
fromstagg_ekg_apiimportStaggEKGClientkettle=StaggEKGClient(host="192.168.1.100")
try:
# Try to set invalid temperaturekettle.set_temperature(150) # Too high!exceptValueErrorase:
print(f"Error: {e}")
# Output: "Error: Temperature must be between 40°C and 100°C"try:
# Try to connect to wrong IPbad_kettle=StaggEKGClient(host="192.168.1.999")
bad_kettle.get_state()
exceptExceptionase:
print(f"Connection error: {e}")
API Reference Summary
Main Methods
Method
Description
Example
get_state()
Get current kettle state
state = kettle.get_state()
start_heating()
Wake and start heating
kettle.start_heating()
stop_heating()
Stop and turn off
kettle.stop_heating()
power_on()
Wake screen (standby)
kettle.power_on()
set_temperature(°C)
Set target temperature
kettle.set_temperature(85)
heat_to_temperature(°C)
Set temp and start heating
kettle.heat_to_temperature(95)
is_at_target()
Check if at target temp
if kettle.is_at_target():
Temperature Control
Method
Description
set_temperature(temp)
Set target (40-100°C)
rotate_dial_left()
Decrease 0.5°C
rotate_dial_right()
Increase 0.5°C
set_units_celsius()
Display in °C
set_units_fahrenheit()
Display in °F
Direct Controls
Method
Description
heat_on()
Heating element ON
heat_off()
Heating element OFF
warm_on()
Warming mode ON
warm_off()
Warming mode OFF
press_button_1()
Press base button
press_button_2()
Press dial button
State Properties
Property
Type
Description
state.current_temp_c
float
Current water temp (°C)
state.set_temp_c
float
Target temp (°C)
state.mode
str
Operating mode
state.heating
bool
Heating element status
state.warming
bool
Warming mode status
state.may_have_no_water
bool
Low water warning
state.units
int
Display units (0=°F, 1=°C)
state.clock
str
Kettle clock time
Tips
Temperature Range: Only 40-100°C is valid
Step Size: Each dial rotation = 0.5°C
Button 2: The dial button (wakes and starts heating)
Water Detection: Based on temp < 30°C (not a physical sensor)
Delays: Add small delays (0.1s) between dial rotations for reliability