#
# Cyclades PM20 
#
specification "pm20" {
	timeout 	25
	pingperiod	60
	plug name { "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12" "13" "14" "15" "16" "17" "18" "19" "20" }

	script login {
		expect "Username: "
		send "admin\n"
		expect "Password: "
		send "pm8\n"
		expect "pm>"
	}
	script ping {
                send "\n"
                expect "pm>"
        }
	script status_all {
		send "status 1-20\n"
		expect "Users"
		foreachplug {
			expect "([0-9]+)[[:space:]]+Unlocked (ON|OFF)"
			setplugstate $1 $2 on="ON" off="OFF"
		}
		expect "pm>"
	}
	script on {
		send "on %s\n"
		expect "Outlet turned on."
		expect "pm>"
	}
	script on_all {
		send "on 1-20\n"
		foreachplug {
			expect "Outlet turned on."
		}
		expect "pm>"
	}
	script off {
		send "off %s\n"
		expect "Outlet turned off."
		expect "pm>"
	}
	script off_all {
		send "off 1-20\n"
		foreachplug {
			expect "Outlet turned off."
		}
		expect "pm>"
	}
	script cycle {
		send "off %s\n"
		expect "Outlet turned off."
		expect "pm>"
		delay 4
		send "on %s\n"
		expect "Outlet turned on."
		expect "pm>"
	}
	script cycle_all {
		send "off 1-20\n"
		foreachplug {
			expect "Outlet turned off."
		}
		expect "pm>"
		delay 4
		send "on 1-20\n"
		foreachplug {
			expect "Outlet turned on."
		}
		expect "pm>"
	}
	script status_temp_all {
		send "temperature\n"
		expect "IPDU #1: Temperature: ([0-9.]+)"
		setplugstate "1" $1
		setplugstate "2" $1
		setplugstate "3" $1
		setplugstate "4" $1
		setplugstate "5" $1
		setplugstate "6" $1
		setplugstate "7" $1
		setplugstate "8" $1
		setplugstate "9" $1
		setplugstate "10" $1
		setplugstate "11" $1
		setplugstate "12" $1
		setplugstate "13" $1
		setplugstate "14" $1
		setplugstate "15" $1
		setplugstate "16" $1
		setplugstate "17" $1
		setplugstate "18" $1
		setplugstate "19" $1
		setplugstate "20" $1
	}
}

